From a96908fa73a5c239f9ab0f8d420b5ed2bae9ed3d Mon Sep 17 00:00:00 2001 From: Onkel Andy Date: Thu, 31 Jan 2019 22:07:38 +0100 Subject: [PATCH 001/200] ical: modernized and fixed local file handling --- ical/README.md | 89 +-------------------------------------------- ical/__init__.py | 55 ++++++++++++++++++---------- ical/plugin.yaml | 95 ++++++++++++++++++++++++++++++++++++++++++++---- 3 files changed, 125 insertions(+), 114 deletions(-) mode change 100644 => 100755 ical/README.md diff --git a/ical/README.md b/ical/README.md old mode 100644 new mode 100755 index 36c799887..73782423b --- a/ical/README.md +++ b/ical/README.md @@ -1,80 +1,14 @@ # iCal -## Requirements -This plugin has no requirements or dependencies. - -## Configuration - -### plugin.yaml - -```yaml -ical: - class_name: iCal - class_path: plugins.ical - # calendars: - # - private:http://example.com/private.ics - # - http://example.com/public.ics - # - holiday:http://example.com/holidays.ics - # cycle: 3600 -``` - -#### Attributes - -The following attributes can be specified: - * `calendars`: list of calendars to automatically keep up to day and provided via `sh.ical()` function. Configures an alias (optional) and the URI of calendar, which can be a local file or a remote file when starting with `http://`. - * `cycle`: specifies the interval in seconds to update the calendars. By default it 3600 seconds. - -### items.yaml - -```yaml -calendar: - - holiday: - type: bool - ical_calendar: holiday - - private: - type: bool - ical_calendar: private - - public: - type: bool - ical_calendar: http://example.com/public.ics -``` - -#### ical_calendar - -This configures a connection between the item and the given calendar. You can specify the calendar URI or the calendar alias (as used in this example). -The configured calendar will automatically be added to the internal calendar cache and will automatically be updated. - -When configured, each time an event is taken place at the moment, the item will be set to true or if not, to false. - -The update interval for the item updates is currently at one minutes. Which means each minutes it will be checked if an event is take place and -the items will be updated. - ## Functions Because there is only one function, you could access it directly by the object. With the above `plugin.yaml` it would look like this: `events = sh.ical('http://cal.server/my.ical')`. -This function has one mandatory and two optional arguments. `sh.ical(file, delta=1, offset=0)` - - * file: specify a local file, a url starting with 'http://' or a calendar alias configured in the plugin configuration. - * delta: how many additional days should the analysed. By default it will for events for today and the next day (delta=1). - * offset: when should the analysed timeframe start. By default today (offset = 0). - -It returns a dictonary with a datetime.date object as key and an array including -the event start time -the event end time -the event's class type (e.g. private calendar entry) -the event's summary, i.e. content - -If you want to use a calendar more regularly it could be helpful to configure this calendar in the plugin configuration to make it -automatically available via an alias and keep them up to date. - +Example logic: ```python today = sh.now().date() -holidays = sh.ical('http://cal.server/holidays.ical') +holidays = sh.ical('/usr/local/smarthome/holidays.ical') if today in holidays: print 'yeah' else: @@ -95,22 +29,3 @@ for day in events: if 'private' in str(cal_class).lower(): print 'Private calendar entry found.' ``` - -You can also use the plugin configuration to configure the calendars and using an alias instead. This will ease the access -to the calendar and you don't need to know the exact calendar URL each time you want to access it. - -```yaml -ical: - class_name: iCal - class_path: plugins.ical - calendars: - - holidays:http://cal.server/holidays.ical - - events:http://cal.server/events.ical - # cycle: 3600 -``` - -```python -holidays = sh.ical('holidays') # access the holidays.ical - -events = sh.ical('events') # access the events.ical -``` diff --git a/ical/__init__.py b/ical/__init__.py index e10bc23ec..d8a6c1335 100755 --- a/ical/__init__.py +++ b/ical/__init__.py @@ -26,26 +26,38 @@ import dateutil.rrule import dateutil.relativedelta from lib.model.smartplugin import SmartPlugin +from lib.shtime import Shtime +from lib.tools import Tools +from bin.smarthome import VERSION class iCal(SmartPlugin): - PLUGIN_VERSION = "1.3.0" + PLUGIN_VERSION = "1.3.1" ALLOW_MULTIINSTANCE = False DAYS = ("MO", "TU", "WE", "TH", "FR", "SA", "SU") FREQ = ("YEARLY", "MONTHLY", "WEEKLY", "DAILY", "HOURLY", "MINUTELY", "SECONDLY") PROPERTIES = ("SUMMARY", "DESCRIPTION", "LOCATION", "CATEGORIES", "CLASS") - def __init__(self, smarthome, cycle=3600, calendars = []): - self._sh = smarthome - self._items = [] - self._icals = {} - self._ical_aliases = {} - self.logger = logging.getLogger(__name__) + def __init__(self, smarthome): + if '.'.join(VERSION.split('.', 2)[:2]) <= '1.5': + self.logger = logging.getLogger(__name__) + try: + self.shtime = Shtime.get_instance() + self.tools = Tools + self._items = [] + self._icals = {} + self._ical_aliases = {} + cycle = self.get_parameter_value('cycle') + calendars = self.get_parameter_value('calendars') + except Exception as err: + self.logger.error(err) + self._init_complete = False + return for calendar in calendars: if ':' in calendar and 'http' != calendar[:4]: name, sep, cal = calendar.partition(':') - self.logger.info('iCal: Registering calendar {0} ({1})'.format(name, cal)) + self.logger.info('iCal: Registering online calendar {0} ({1})'.format(name, cal)) self._ical_aliases[name] = cal calendar = cal else: @@ -63,8 +75,8 @@ def stop(self): self.alive = False def parse_item(self, item): - if 'ical_calendar' in item.conf: - uri = item.conf['ical_calendar'] + if self.has_iattr(item.conf, 'ical_calendar'): + uri = self.get_iattr_value(item.conf, 'ical_calendar') if uri in self._ical_aliases: uri = self._ical_aliases[uri] @@ -80,7 +92,7 @@ def parse_logic(self, logic): def update_item(self, item, caller=None, source=None, dest=None): pass - def __call__(self, ics, delta=1, offset=0, username=None, password=None, timeout=2): + def __call__(self, ics='', delta=1, offset=0, username=None, password=None, timeout=2): if ics in self._ical_aliases: self.logger.debug('iCal retrieve events by alias {0} -> {1}'.format(ics, self._ical_aliases[ics])) return self._filter_events(self._icals[self._ical_aliases[ics]], delta, offset) @@ -94,7 +106,7 @@ def __call__(self, ics, delta=1, offset=0, username=None, password=None, timeout def _update_items(self): if len(self._items): - now = self._sh.now() + now = self.shtime.now() events = {} for calendar in self._icals: @@ -124,7 +136,7 @@ def _update_calendars(self): self._update_items() def _filter_events(self, events, delta=1, offset=0): - now = self._sh.now() + now = self.shtime.now() offset = offset - 1 # start at 23:59:59 the day before delta += 1 # extend delta for negetiv offset start = now.replace(hour=23, minute=59, second=59, microsecond=0) + datetime.timedelta(days=offset) @@ -162,14 +174,16 @@ def _filter_events(self, events, delta=1, offset=0): def _read_events(self, ics, username=None, password=None, timeout=2): if ics.startswith('http'): - ical = self._sh.tools.fetch_url(ics, username=username, password=password, timeout=timeout) + ical = self.tools.fetch_url(self, url=ics, username=username, password=password, timeout=timeout) if ical is False: return {} ical = ical.decode() + self.logger.debug('ical online: {}'.format(ical)) else: try: with open(ics, 'r') as f: ical = f.read() + self.logger.debug('ical offline: {}'.format(ical)) except IOError as e: self.logger.error('Could not open ics file {0}: {1}'.format(ics, e)) return {} @@ -193,8 +207,8 @@ def _parse_date(self, val, dtzinfo, par=''): def _parse_ical(self, ical, ics): #skip = False events = {} - tzinfo = self._sh.tzinfo() - ical = ical.replace('\n', '') + tzinfo = self.shtime.tzinfo() + #ical = ical.replace('\n', '') for line in ical.splitlines(): #if line == 'BEGIN:VTIMEZONE': # skip = True @@ -224,7 +238,7 @@ def _parse_ical(self, ical, ics): events[event['UID']]['EXDATES'].append(event['RECURRENCE-ID']) events[event['UID'] + event['DTSTART'].isoformat()] = event else: - self.logger.warning("iCal: problem parsing {0} duplicate UID: {1}".format(ics, event['UID'])) + self.logger.warning("iCal: problem parsing {0} duplicate UID: {1} ({2})".format(ics, event['UID'], event['SUMMARY'])) continue else: events[event['UID']] = event @@ -283,6 +297,10 @@ def _parse_rrule(self, event, tzinfo): rrule['COUNT'] = int(rrule['COUNT']) if 'INTERVAL' in rrule: rrule['INTERVAL'] = int(rrule['INTERVAL']) + if 'BYMONTHDAY' in rrule: + rrule['BYMONTHDAY'] = int(rrule['BYMONTHDAY']) + if 'BYMONTH' in rrule: + rrule['BYMONTH'] = int(rrule['BYMONTH']) if 'UNTIL' in rrule: try: rrule['UNTIL'] = self._parse_date(rrule['UNTIL'], tzinfo) @@ -293,7 +311,6 @@ def _parse_rrule(self, event, tzinfo): #self.logger.info("par: {0}".format(par)) args[par.lower()] = rrule[par] #self.logger.info("arg: {0}".format(rrule[par])) - + self.logger.debug("Args: {0}".format(args)) return dateutil.rrule.rrule(freq, **args) - \ No newline at end of file diff --git a/ical/plugin.yaml b/ical/plugin.yaml index 05eb35b45..cd9957b5a 100755 --- a/ical/plugin.yaml +++ b/ical/plugin.yaml @@ -4,14 +4,19 @@ plugin: type: web # plugin type (gateway, interface, protocol, system, web) description: de: 'Ermöglicht die Verwendung von Kalendern (ICS)' - en: '' + en: 'Allows using of calendars (ICS)' + description_long: + de: 'Ermöglicht die Verwendung von Kalendern (ICS)\n + Es können sowohl Dateien als auch Onlinefeeds eingebunden werden. + ' + en: 'Allows using of calendars (ICS)\n + You can use offline files and online feeds. + ' maintainer: cmalo (mknx) - tester: ohinckel -# keywords: iot xyz -# documentation: https://github.com/smarthomeNG/smarthome/wiki/CLI-Plugin # url of documentation (wiki) page -# support: https://knx-user-forum.de/forum/supportforen/smarthome-py + tester: ohinckel, onkelandy + keywords: calendar ical ics - version: 1.3.0 # Plugin version + version: 1.3.1 # Plugin version sh_minversion: 1.3 # minimum shNG version to use this plugin # sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) multi_instance: False # plugin supports multi instance @@ -19,7 +24,81 @@ plugin: parameters: # Definition of parameters to be configured in etc/plugin.yaml - + cycle: + type: int + default: 3600 + description: + de: "Definiert in Sekunden das Intervall, in dem der Kalender aktualisert werden soll." + en: "Specifies the interval in seconds to update the calendars." + + calendars: + type: list(str) + description: + de: "Liste von Kalendern die automatisch aktualisiert und via `sh.ical()` Funktion abgerufen werden kann." + en: "list of calendars to automatically keep up to date and provided via `sh.ical()` function." + description_long: + de: "Liste von Kalendern die automatisch aktualisiert und via `sh.ical()` Funktion abgerufen werden kann. Konfiguriert optional einen Alias und die URI des Kalenders, die sowohl auf ein lokales File als auch einen Onlinefeed mit `http://` verweisen kann.\n + Beispiel: holidays:http://cal.server/holidays.ical" + en: "list of calendars to automatically keep up to date and provided via `sh.ical()` function. Configures an alias (optional) and the URI of calendar, which can be a local file or a remote file when starting with `http://`.\n + Example: holidays:http://cal.server/holidays.ical" + item_attributes: # Definition of item attributes defined by this plugin - + ical_calendar: + type: str + description: + de: "Dieses Attribut konfiguriert eine Verbindung zwischen Item und entsprechendem Kalender." + en: "This configures a connection between the item and the given calendar." + description_long: + de: "Dieses Attribut konfiguriert eine Verbindung zwischen Item und entsprechendem Kalender, der entweder als URI oder als Kalender Alias (im etc/plugin.yaml definiert) angegeben wird. Der konfigurierte Kalender wird automatisch zum internen Kalender-Zwischenspeicher hinzugefügt und aktualisiert.\n + \n + Das Item wird auf Wahr gesetzt, sobald ein Event im Moment stattfindet. Ansonsten ist es falsch.\n + \n + Das Aktualisierungsintervall ist derzeit auf eine Minute festgelegt. Das beduetet, jede Minute wird der Kalender auf Events geprüft und das Item bei Bedarf aud Wahr geschaltet. + " + en: "This configures a connection between the item and the given calendar. You can specify the calendar URI or the calendar alias (as defined in the etc/plugin.yaml). The configured calendar will automatically be added to the internal calendar cache and will automatically be updated.\n + \n + When configured, each time an event is taken place at the moment, the item will be set to true or if not, to false.\n + \n + The update interval for the item updates is currently at one minute, which means each minute it will be checked if an event is taking place and + the items will be updated." + +plugin_functions: + # Definition of function interface of the plugin + ical: + type: dict + description: + de: "Es wird ein dictionary mit einem datetime.date Objekt als Key und verschiedenen Detailwerten zurückgeliefert." + en: "It returns a dictonary with a datetime.date object as key and an array with different detail values." + description_long: + de: "Es wird ein dictionary mit einem datetime.date Objekt als Key und folgenden Arraywerten zurückgeliefert:\n + die Event Startzeit, die Event Endzeit, die Eventkategorie (z.B. privat), die Eventzusammenfassung (z.B. die Notizen)\n + \n + Wenn ein Kalender öfters verwendet werden soll, wird empfohlen, diesen in der etc/plugin.yaml zu konfigurieren. + " + en: "It returns a dictonary with a datetime.date object as key and an array including\n + the event start time, the event end time, the event's class type (e.g. private calendar entry), the event's summary, i.e. content\n + \n + If you want to use a calendar more regularly it could be helpful to configure this calendar in the plugin configuration. + " + parameters: + ics: + type: str + default: None + description: + de: 'eine lokale Datei, eine mit http:// startende URL oder ein Kalender-Alias aus der Pluginkonfiguration' + en: 'specify a local file, a url starting with http:// or a calendar alias configured in the plugin configuration.' + + delta: + type: int + default: 1 + description: + de: 'wieviele zusätzliche Tage analysiert werden sollen.' + en: 'how many additional days should the analysed.' + + offset: + type: int + default: 0 + description: + de: 'wann der zu analysierende Zeitrahmen starten soll.' + en: 'when should the analysed timeframe start.' From 376c3da23bf11d816bec05dcea2fa59782d498b3 Mon Sep 17 00:00:00 2001 From: Onkel Andy Date: Thu, 31 Jan 2019 22:27:27 +0100 Subject: [PATCH 002/200] small fixes --- ical/__init__.py | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/ical/__init__.py b/ical/__init__.py index d8a6c1335..b9e725254 100755 --- a/ical/__init__.py +++ b/ical/__init__.py @@ -30,6 +30,7 @@ from lib.tools import Tools from bin.smarthome import VERSION + class iCal(SmartPlugin): PLUGIN_VERSION = "1.3.1" ALLOW_MULTIINSTANCE = False @@ -53,7 +54,6 @@ def __init__(self, smarthome): self._init_complete = False return - for calendar in calendars: if ':' in calendar and 'http' != calendar[:4]: name, sep, cal = calendar.partition(':') @@ -138,7 +138,7 @@ def _update_calendars(self): def _filter_events(self, events, delta=1, offset=0): now = self.shtime.now() offset = offset - 1 # start at 23:59:59 the day before - delta += 1 # extend delta for negetiv offset + delta += 1 # extend delta for negative offset start = now.replace(hour=23, minute=59, second=59, microsecond=0) + datetime.timedelta(days=offset) end = start + datetime.timedelta(days=delta) revents = {} @@ -205,15 +205,9 @@ def _parse_date(self, val, dtzinfo, par=''): return dt def _parse_ical(self, ical, ics): - #skip = False events = {} tzinfo = self.shtime.tzinfo() - #ical = ical.replace('\n', '') for line in ical.splitlines(): - #if line == 'BEGIN:VTIMEZONE': - # skip = True - #elif line == 'END:VTIMEZONE': - # skip = False if line == 'BEGIN:VEVENT': event = {'EXDATES': []} elif line == 'END:VEVENT': @@ -228,7 +222,7 @@ def _parse_ical(self, ical, ics): continue if 'DTEND' not in event: self.logger.warning("iCal: Warning in parsing {0} no DTEND for UID: {1}. Setting DTEND from DTSTART".format(ics, event['UID'])) - #Set end to start time: + # Set end to start time: event['DTEND'] = event['DTSTART'] continue if 'RRULE' in event: @@ -308,9 +302,7 @@ def _parse_rrule(self, event, tzinfo): self.logger.warning("Problem parsing UNTIL: {1} --- {0} ".format(event, e)) return for par in rrule: - #self.logger.info("par: {0}".format(par)) args[par.lower()] = rrule[par] - #self.logger.info("arg: {0}".format(rrule[par])) self.logger.debug("Args: {0}".format(args)) return dateutil.rrule.rrule(freq, **args) From 770853cca48bcf1b7a21f08b0328da235b02ba23 Mon Sep 17 00:00:00 2001 From: Onkel Andy Date: Fri, 1 Feb 2019 08:02:49 +0100 Subject: [PATCH 003/200] fixed README --- ical/README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/ical/README.md b/ical/README.md index 73782423b..e1eca5dba 100755 --- a/ical/README.md +++ b/ical/README.md @@ -10,22 +10,22 @@ today = sh.now().date() holidays = sh.ical('/usr/local/smarthome/holidays.ical') if today in holidays: - print 'yeah' + logger.info('yeah') else: - print 'naah' + logger.info('naah') events = sh.ical('http://cal.server/events.ical') for day in events: - print("Date: {0}".format(day)) + logger.info("Date: {0}".format(day)) for event in events[day]: start = event['Start'] summary = event['Summary'] cal_class = event['Class'] - print("Time: {0} {1}".format(start, summary)) + logger.info("Time: {0} {1}".format(start, summary)) if 'testword' in str(summary).lower(): - print 'calendar entry with testword found' + logger.info('calendar entry with testword found') if start.date() == tomorrow: - print 'Textword calendar entry starts tommorrow') + logger.info('Textword calendar entry starts tommorrow') if 'private' in str(cal_class).lower(): - print 'Private calendar entry found.' + logger.info('Private calendar entry found.') ``` From fb91ea31b54089e4369f4aeb88094503b9e6160a Mon Sep 17 00:00:00 2001 From: Onkel Andy Date: Sun, 3 Feb 2019 19:59:42 +0100 Subject: [PATCH 004/200] Added priority and SSL verify attribute. Parse linebreaks correctly --- ical/README.md | 14 +++++++------- ical/__init__.py | 25 +++++++++++++++++-------- ical/plugin.yaml | 14 ++++++++++++++ 3 files changed, 38 insertions(+), 15 deletions(-) diff --git a/ical/README.md b/ical/README.md index e1eca5dba..73782423b 100755 --- a/ical/README.md +++ b/ical/README.md @@ -10,22 +10,22 @@ today = sh.now().date() holidays = sh.ical('/usr/local/smarthome/holidays.ical') if today in holidays: - logger.info('yeah') + print 'yeah' else: - logger.info('naah') + print 'naah' events = sh.ical('http://cal.server/events.ical') for day in events: - logger.info("Date: {0}".format(day)) + print("Date: {0}".format(day)) for event in events[day]: start = event['Start'] summary = event['Summary'] cal_class = event['Class'] - logger.info("Time: {0} {1}".format(start, summary)) + print("Time: {0} {1}".format(start, summary)) if 'testword' in str(summary).lower(): - logger.info('calendar entry with testword found') + print 'calendar entry with testword found' if start.date() == tomorrow: - logger.info('Textword calendar entry starts tommorrow') + print 'Textword calendar entry starts tommorrow') if 'private' in str(cal_class).lower(): - logger.info('Private calendar entry found.') + print 'Private calendar entry found.' ``` diff --git a/ical/__init__.py b/ical/__init__.py index b9e725254..a586a70dc 100755 --- a/ical/__init__.py +++ b/ical/__init__.py @@ -92,7 +92,7 @@ def parse_logic(self, logic): def update_item(self, item, caller=None, source=None, dest=None): pass - def __call__(self, ics='', delta=1, offset=0, username=None, password=None, timeout=2): + def __call__(self, ics='', delta=1, offset=0, username=None, password=None, timeout=2, prio=1, verify=True): if ics in self._ical_aliases: self.logger.debug('iCal retrieve events by alias {0} -> {1}'.format(ics, self._ical_aliases[ics])) return self._filter_events(self._icals[self._ical_aliases[ics]], delta, offset) @@ -102,7 +102,7 @@ def __call__(self, ics='', delta=1, offset=0, username=None, password=None, time return self._filter_events(self._icals[ics], delta, offset) self.logger.debug('iCal retrieve events {0}'.format(ics)) - return self._filter_events(self._read_events(ics, username=username, password=password, timeout=timeout), delta, offset) + return self._filter_events(self._read_events(ics, username=username, password=password, timeout=timeout, prio=prio, verify=verify), delta, offset) def _update_items(self): if len(self._items): @@ -135,7 +135,7 @@ def _update_calendars(self): if len(self._icals): self._update_items() - def _filter_events(self, events, delta=1, offset=0): + def _filter_events(self, events, delta=1, offset=0, prio=1): now = self.shtime.now() offset = offset - 1 # start at 23:59:59 the day before delta += 1 # extend delta for negative offset @@ -172,9 +172,10 @@ def _filter_events(self, events, delta=1, offset=0): revents[date].append(revent) return revents - def _read_events(self, ics, username=None, password=None, timeout=2): + def _read_events(self, ics, username=None, password=None, timeout=2, prio=1, verify=True): if ics.startswith('http'): ical = self.tools.fetch_url(self, url=ics, username=username, password=password, timeout=timeout) + # maybe future feature ical = self.tools.fetch_url(self, url=ics, username=username, password=password, timeout=timeout, verify=verify) if ical is False: return {} ical = ical.decode() @@ -188,7 +189,7 @@ def _read_events(self, ics, username=None, password=None, timeout=2): self.logger.error('Could not open ics file {0}: {1}'.format(ics, e)) return {} - return self._parse_ical(ical, ics) + return self._parse_ical(ical, ics, prio) def _parse_date(self, val, dtzinfo, par=''): if par.startswith('TZID='): @@ -204,9 +205,13 @@ def _parse_date(self, val, dtzinfo, par=''): dt = dt.replace(tzinfo=dtzinfo) return dt - def _parse_ical(self, ical, ics): + def _parse_ical(self, ical, ics, prio): events = {} tzinfo = self.shtime.tzinfo() + ical = ical.replace("\r\n\\n", ", ") + ical = ical.replace("\n\\n", ", ").replace("\\n", ", ") + ical = ical.replace("\\n", ", ") + prio_count = {'UID': 1, 'SUMMARY': 1, 'SEQUENCE': 1, 'RRULE': 1, 'CLASS': 1, 'DESCRIPTION': 1} for line in ical.splitlines(): if line == 'BEGIN:VEVENT': event = {'EXDATES': []} @@ -243,8 +248,12 @@ def _parse_ical(self, ical, ics): key = key.upper() if key == 'TZID': tzinfo = dateutil.tz.gettz(val) - elif key in ['UID', 'SUMMARY', 'SEQUENCE', 'RRULE', 'CLASS']: - event[key] = val # noqa + elif key in ['UID', 'SUMMARY', 'SEQUENCE', 'RRULE', 'CLASS', 'DESCRIPTION']: + if event.get(key) is None or prio_count[key] == prio: + prio_count[key] = prio_count.get(key) + 1 + event[key] = val + else: + self.logger.info('Value {} for entry {} ignored because of prio setting'.format(val, key)) elif key in ['DTSTART', 'DTEND', 'EXDATE', 'RECURRENCE-ID']: try: date = self._parse_date(val, tzinfo, par) diff --git a/ical/plugin.yaml b/ical/plugin.yaml index cd9957b5a..82440b381 100755 --- a/ical/plugin.yaml +++ b/ical/plugin.yaml @@ -102,3 +102,17 @@ plugin_functions: description: de: 'wann der zu analysierende Zeitrahmen starten soll.' en: 'when should the analysed timeframe start.' + + prio: + type: int + default: 1 + description: + de: 'Falls in einem Kalendereintrag Felder mehrfach vorkommen, kann hier bestimmt werden, das wievielte Feld priorisiert werden soll.' + en: 'If in one calendar entry a field is present multiple times you can define which occurence should be prioritized.' + + verify: + type: bool + default: True + description: + de: 'Bestimmt, ob eine https URL per SSL verifiziert werden soll oder nicht.' + en: 'Defines if a https URL should be verified via SSL or not.' From cf9fd0e996a7fa1ef825298904f6e05937cae5f2 Mon Sep 17 00:00:00 2001 From: Onkel Andy Date: Mon, 4 Feb 2019 21:52:28 +0100 Subject: [PATCH 005/200] refixed README, fixed prio feature --- ical/README.md | 14 +++++++------- ical/__init__.py | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/ical/README.md b/ical/README.md index 73782423b..e1eca5dba 100755 --- a/ical/README.md +++ b/ical/README.md @@ -10,22 +10,22 @@ today = sh.now().date() holidays = sh.ical('/usr/local/smarthome/holidays.ical') if today in holidays: - print 'yeah' + logger.info('yeah') else: - print 'naah' + logger.info('naah') events = sh.ical('http://cal.server/events.ical') for day in events: - print("Date: {0}".format(day)) + logger.info("Date: {0}".format(day)) for event in events[day]: start = event['Start'] summary = event['Summary'] cal_class = event['Class'] - print("Time: {0} {1}".format(start, summary)) + logger.info("Time: {0} {1}".format(start, summary)) if 'testword' in str(summary).lower(): - print 'calendar entry with testword found' + logger.info('calendar entry with testword found') if start.date() == tomorrow: - print 'Textword calendar entry starts tommorrow') + logger.info('Textword calendar entry starts tommorrow') if 'private' in str(cal_class).lower(): - print 'Private calendar entry found.' + logger.info('Private calendar entry found.') ``` diff --git a/ical/__init__.py b/ical/__init__.py index a586a70dc..dc553c437 100755 --- a/ical/__init__.py +++ b/ical/__init__.py @@ -175,7 +175,7 @@ def _filter_events(self, events, delta=1, offset=0, prio=1): def _read_events(self, ics, username=None, password=None, timeout=2, prio=1, verify=True): if ics.startswith('http'): ical = self.tools.fetch_url(self, url=ics, username=username, password=password, timeout=timeout) - # maybe future feature ical = self.tools.fetch_url(self, url=ics, username=username, password=password, timeout=timeout, verify=verify) + # ical = self.tools.fetch_url(self, url=ics, username=username, password=password, timeout=timeout, verify=verify) if ical is False: return {} ical = ical.decode() @@ -211,9 +211,9 @@ def _parse_ical(self, ical, ics, prio): ical = ical.replace("\r\n\\n", ", ") ical = ical.replace("\n\\n", ", ").replace("\\n", ", ") ical = ical.replace("\\n", ", ") - prio_count = {'UID': 1, 'SUMMARY': 1, 'SEQUENCE': 1, 'RRULE': 1, 'CLASS': 1, 'DESCRIPTION': 1} for line in ical.splitlines(): if line == 'BEGIN:VEVENT': + prio_count = {'UID': 1, 'SUMMARY': 1, 'SEQUENCE': 1, 'RRULE': 1, 'CLASS': 1, 'DESCRIPTION': 1} event = {'EXDATES': []} elif line == 'END:VEVENT': if 'UID' not in event: From 02f49e1be890b9c60d33d1611a155b6caaee73de Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sat, 16 Mar 2019 13:39:33 +0100 Subject: [PATCH 006/200] Update plugin.yaml --- ical/plugin.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/ical/plugin.yaml b/ical/plugin.yaml index 3623b2f5d..f6a1bae32 100644 --- a/ical/plugin.yaml +++ b/ical/plugin.yaml @@ -120,3 +120,5 @@ plugin_functions: logic_parameters: NONE # Definition of logic parameters defined by this plugin + +item_structs: NONE \ No newline at end of file From a1372fa135196624ab5ac1bdfec67b5f6cbc0de4 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Mon, 1 Apr 2019 07:09:26 +0200 Subject: [PATCH 007/200] fixed example and ssl problems when downloading --- ical/README.md | 38 +++++---------------- ical/__init__.py | 59 +++++++++++++++++++++----------- ical/plugin.yaml | 12 +++---- ical/user_doc.rst | 87 +++++++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 141 insertions(+), 55 deletions(-) create mode 100644 ical/user_doc.rst diff --git a/ical/README.md b/ical/README.md index e1eca5dba..03e45207a 100755 --- a/ical/README.md +++ b/ical/README.md @@ -1,31 +1,11 @@ # iCal -## Functions -Because there is only one function, you could access it directly by the object. -With the above `plugin.yaml` it would look like this: `events = sh.ical('http://cal.server/my.ical')`. - -Example logic: -```python -today = sh.now().date() - -holidays = sh.ical('/usr/local/smarthome/holidays.ical') -if today in holidays: - logger.info('yeah') -else: - logger.info('naah') - -events = sh.ical('http://cal.server/events.ical') -for day in events: - logger.info("Date: {0}".format(day)) - for event in events[day]: - start = event['Start'] - summary = event['Summary'] - cal_class = event['Class'] - logger.info("Time: {0} {1}".format(start, summary)) - if 'testword' in str(summary).lower(): - logger.info('calendar entry with testword found') - if start.date() == tomorrow: - logger.info('Textword calendar entry starts tommorrow') - if 'private' in str(cal_class).lower(): - logger.info('Private calendar entry found.') -``` +## Changelog +1.3.1: +- Fix reading offline files and line breaks +- Updated code +- using network library instead of fetch_url to download online calendars into var/ical +- possibility to disable https verification when using online calendars +- user documentation +- updated plugin.yaml +- implement a "prio" attribute to choose which information in an entry should be used diff --git a/ical/__init__.py b/ical/__init__.py index dc553c437..7fa191d16 100755 --- a/ical/__init__.py +++ b/ical/__init__.py @@ -21,13 +21,15 @@ import logging import datetime +import os +import errno import dateutil.tz import dateutil.rrule import dateutil.relativedelta from lib.model.smartplugin import SmartPlugin from lib.shtime import Shtime -from lib.tools import Tools +from lib.network import Http from bin.smarthome import VERSION @@ -43,17 +45,27 @@ def __init__(self, smarthome): self.logger = logging.getLogger(__name__) try: self.shtime = Shtime.get_instance() - self.tools = Tools + self.dl = Http('') self._items = [] self._icals = {} self._ical_aliases = {} + self.sh = smarthome cycle = self.get_parameter_value('cycle') calendars = self.get_parameter_value('calendars') except Exception as err: self.logger.error(err) self._init_complete = False return - + try: + dir = '{}/var/ical'.format(self.sh.get_basedir()) + os.makedirs(dir) + self.logger.debug('Created ical subfolder in var') + except OSError as e: + if e.errno != errno.EEXIST: + self.logger.error('Problem creating ical folder in {}var'.format(self.sh.get_basedir())) + self._init_complete = False + return + for calendar in calendars: if ':' in calendar and 'http' != calendar[:4]: name, sep, cal = calendar.partition(':') @@ -92,7 +104,7 @@ def parse_logic(self, logic): def update_item(self, item, caller=None, source=None, dest=None): pass - def __call__(self, ics='', delta=1, offset=0, username=None, password=None, timeout=2, prio=1, verify=True): + def __call__(self, ics='', delta=1, offset=0, username=None, password=None, prio=1, verify=True): if ics in self._ical_aliases: self.logger.debug('iCal retrieve events by alias {0} -> {1}'.format(ics, self._ical_aliases[ics])) return self._filter_events(self._icals[self._ical_aliases[ics]], delta, offset) @@ -102,7 +114,7 @@ def __call__(self, ics='', delta=1, offset=0, username=None, password=None, time return self._filter_events(self._icals[ics], delta, offset) self.logger.debug('iCal retrieve events {0}'.format(ics)) - return self._filter_events(self._read_events(ics, username=username, password=password, timeout=timeout, prio=prio, verify=verify), delta, offset) + return self._filter_events(self._read_events(ics, username=username, password=password, prio=prio, verify=verify), delta, offset) def _update_items(self): if len(self._items): @@ -172,22 +184,29 @@ def _filter_events(self, events, delta=1, offset=0, prio=1): revents[date].append(revent) return revents - def _read_events(self, ics, username=None, password=None, timeout=2, prio=1, verify=True): - if ics.startswith('http'): - ical = self.tools.fetch_url(self, url=ics, username=username, password=password, timeout=timeout) - # ical = self.tools.fetch_url(self, url=ics, username=username, password=password, timeout=timeout, verify=verify) - if ical is False: - return {} - ical = ical.decode() - self.logger.debug('ical online: {}'.format(ical)) - else: - try: - with open(ics, 'r') as f: - ical = f.read() - self.logger.debug('ical offline: {}'.format(ical)) - except IOError as e: - self.logger.error('Could not open ics file {0}: {1}'.format(ics, e)) + def _read_events(self, ics, username=None, password=None, prio=1, verify=True): + dir = '{}/var/ical/'.format(self.sh.get_basedir()) + if ics.startswith('http'): + name = ics[ics.rfind("/")+1:] + name = '{}_downloaded.{}'.format(name.split(".")[0], name.split(".")[1]) + for entry in self._ical_aliases: + name = '{}_downloaded.ics'.format(entry) if ics == self._ical_aliases[entry] else name + filename = '{}{}'.format(dir, name) + auth = 'HTTPBasicAuth' if username else None + downloaded = self.dl.download(url=ics, local=filename, params={username:username, password:password}, verify=verify, auth=auth) + if downloaded is False: + self.logger.error('Could not download online ics file {0}.'.format(ics)) return {} + self.logger.debug('Online ics {} successfully downloaded to {}'.format(ics, filename)) + ics = os.path.normpath(filename) + try: + ics = '{}{}'.format(dir, ics) if dir not in ics else ics + with open(ics, 'r') as f: + ical = f.read() + self.logger.debug('Read offline ical file {}'.format(ics)) + except IOError as e: + self.logger.error('Could not open local ics file {0}: {1}'.format(ics, e)) + return {} return self._parse_ical(ical, ics, prio) diff --git a/ical/plugin.yaml b/ical/plugin.yaml index f6a1bae32..32501464c 100644 --- a/ical/plugin.yaml +++ b/ical/plugin.yaml @@ -38,10 +38,10 @@ parameters: de: "Liste von Kalendern die automatisch aktualisiert und via `sh.ical()` Funktion abgerufen werden kann." en: "list of calendars to automatically keep up to date and provided via `sh.ical()` function." description_long: - de: "Liste von Kalendern die automatisch aktualisiert und via `sh.ical()` Funktion abgerufen werden kann. Konfiguriert optional einen Alias und die URI des Kalenders, die sowohl auf ein lokales File als auch einen Onlinefeed mit `http://` verweisen kann.\n - Beispiel: holidays:http://cal.server/holidays.ical" - en: "list of calendars to automatically keep up to date and provided via `sh.ical()` function. Configures an alias (optional) and the URI of calendar, which can be a local file or a remote file when starting with `http://`.\n - Example: holidays:http://cal.server/holidays.ical" + de: "Liste von Kalendern die automatisch aktualisiert und via `sh.ical()` Funktion abgerufen werden kann. Konfiguriert optional einen Alias und die URI des Kalenders, die sowohl auf ein lokales File als auch einen Onlinefeed mit `https://` verweisen kann. Onlinekalender werden in den Ordner var/ical gespeichert und je nach cycle-Angabe aktualisiert.\n + Beispiel: holidays:http://cal.server/holidays.ics" + en: "list of calendars to automatically keep up to date and provided via `sh.ical()` function. Configures an alias (optional) and the URI of calendar, which can be a local file or a remote file when starting with `https://`. Online calendars are downloaded in the folder var/ical and updated depending on the cycle attribute.\n + Example: holidays:https://cal.server/holidays.ics" item_attributes: # Definition of item attributes defined by this plugin @@ -51,13 +51,13 @@ item_attributes: de: "Dieses Attribut konfiguriert eine Verbindung zwischen Item und entsprechendem Kalender." en: "This configures a connection between the item and the given calendar." description_long: - de: "Dieses Attribut konfiguriert eine Verbindung zwischen Item und entsprechendem Kalender, der entweder als URI oder als Kalender Alias (im etc/plugin.yaml definiert) angegeben wird. Der konfigurierte Kalender wird automatisch zum internen Kalender-Zwischenspeicher hinzugefügt und aktualisiert.\n + de: "Dieses Attribut konfiguriert eine Verbindung zwischen Item und entsprechendem Kalender, der entweder als Dateinamen (die Datei muss in var/ical vom smarthomeNG Verzeichnis liegen), URI oder als Kalender Alias (im etc/plugin.yaml definiert) angegeben wird. Der konfigurierte Kalender wird automatisch zum internen Kalender-Zwischenspeicher hinzugefügt und aktualisiert.\n \n Das Item wird auf Wahr gesetzt, sobald ein Event im Moment stattfindet. Ansonsten ist es falsch.\n \n Das Aktualisierungsintervall ist derzeit auf eine Minute festgelegt. Das beduetet, jede Minute wird der Kalender auf Events geprüft und das Item bei Bedarf aud Wahr geschaltet. " - en: "This configures a connection between the item and the given calendar. You can specify the calendar URI or the calendar alias (as defined in the etc/plugin.yaml). The configured calendar will automatically be added to the internal calendar cache and will automatically be updated.\n + en: "This configures a connection between the item and the given calendar. You can specify the calendar filename (the file has to be in var/ical of your smarthomeNG folder), URI or the calendar alias (as defined in the etc/plugin.yaml). The configured calendar will automatically be added to the internal calendar cache and will automatically be updated.\n \n When configured, each time an event is taken place at the moment, the item will be set to true or if not, to false.\n \n diff --git a/ical/user_doc.rst b/ical/user_doc.rst new file mode 100644 index 000000000..ac354c517 --- /dev/null +++ b/ical/user_doc.rst @@ -0,0 +1,87 @@ +.. index:: Plugins; ical +.. index:: ical + +ical +#### + +Einführung +========== + +Das iCal Plugin dient dazu, Kalender (online oder offline) einzulesen und nach Einträgen zu durchsuchen. + + +Konfiguration +============= + +.. important:: + + Detaillierte Informationen zur Konfiguration des Plugins sind unter :doc:`/plugins_doc/config/ical` zu finden. + +Kalenderdateien können in der etc/plugin.yaml als "Alias" hinterlegt werden. Auf diese Kurznamen kann in weiterer Folge, z.B. in einer Logik referenziert werden. + +.. code-block:: yaml + + # etc/plugin.yaml + ical: + plugin_name: ical + #calendars: + # - example:http://server.com/test.ics + #cycle: 3600 + +Außerdem können Kalender Items zugewiesen werden, indem das entsprechende Attribut im gewünschten Item angegeben wird. Das Item wird auf wahr gesetzt, sobald aktuell ein Event stattfindet. + +.. code-block:: yaml + + # items/item.yaml + calendaritem: + type: bool + ical_calendar: test_downloaded.ics + + +Funktionen +========== + +.. important:: + + Detaillierte Informationen zu den Funktionen des Plugins sind unter :doc:`/plugins_doc/config/ical` zu finden. + + +Beispiel +======== + +.. code-block:: python + today = sh.now().date() + + # To check a calendar file use one of the following three options: + # a) Local file + dir = sh.get_basedir() + calendarfile = '{}/var/ical/holidays.ics'.format(dir) + holidays = sh.ical(calendarfile) + + # b) Reference a calendar defined in the etc/plugin.yaml. Query tomorrow + # The second found entry for an event should be considered. + holidays = sh.ical('holidays', delta=0, offset=1, prio=2) + + # c) http(s) file, disabled https verification. + holidays = sh.ical('https://cal.server/holidays.ics', verify=false) + + # Test if there is an entry for today or not. + if today in holidays: + logger.info('There is a calendar entry for today.') + else: + logger.info('No entry for today.') + + # list all events of online calendar using given or default delta and offset + for day in holidays: + logger.info("Date: {0}".format(day)) + for event in holidays[day]: + start = event['Start'] + summary = event['Summary'] + cal_class = event['Class'] + logger.info("Time: {0} {1}".format(start, summary)) + if 'testword' in str(summary).lower(): + logger.info('calendar entry with testword found') + if start.date() == tomorrow: + logger.info('Testword calendar entry starts tommorrow') + if 'private' in str(cal_class).lower(): + logger.info('Private calendar entry found.') \ No newline at end of file From 25a0280e0c197c3ee9ccffc58167466bc2e91ad0 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Mon, 1 Apr 2019 10:55:24 +0200 Subject: [PATCH 008/200] Update plugin.yaml --- ical/plugin.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/ical/plugin.yaml b/ical/plugin.yaml index 32501464c..b92ae27f1 100644 --- a/ical/plugin.yaml +++ b/ical/plugin.yaml @@ -15,7 +15,7 @@ plugin: maintainer: cmalo (mknx) tester: ohinckel, onkelandy keywords: calendar ical ics - state: ready + state: testing version: 1.3.1 # Plugin version sh_minversion: 1.3 # minimum shNG version to use this plugin @@ -121,4 +121,4 @@ plugin_functions: logic_parameters: NONE # Definition of logic parameters defined by this plugin -item_structs: NONE \ No newline at end of file +item_structs: NONE From 06d6e28cee30332050a575c16ca119ace5a743b0 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Tue, 2 Apr 2019 06:41:11 +0200 Subject: [PATCH 009/200] fixed "dir" variable --- ical/__init__.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/ical/__init__.py b/ical/__init__.py index 7fa191d16..4e4c595ac 100755 --- a/ical/__init__.py +++ b/ical/__init__.py @@ -53,12 +53,12 @@ def __init__(self, smarthome): cycle = self.get_parameter_value('cycle') calendars = self.get_parameter_value('calendars') except Exception as err: - self.logger.error(err) + self.logger.error('Problems initializing: {}'.format(err)) self._init_complete = False return try: - dir = '{}/var/ical'.format(self.sh.get_basedir()) - os.makedirs(dir) + directory = '{}/var/ical'.format(self.sh.get_basedir()) + os.makedirs(directory) self.logger.debug('Created ical subfolder in var') except OSError as e: if e.errno != errno.EEXIST: @@ -185,13 +185,13 @@ def _filter_events(self, events, delta=1, offset=0, prio=1): return revents def _read_events(self, ics, username=None, password=None, prio=1, verify=True): - dir = '{}/var/ical/'.format(self.sh.get_basedir()) + directory = '{}/var/ical/'.format(self.sh.get_basedir()) if ics.startswith('http'): name = ics[ics.rfind("/")+1:] name = '{}_downloaded.{}'.format(name.split(".")[0], name.split(".")[1]) for entry in self._ical_aliases: name = '{}_downloaded.ics'.format(entry) if ics == self._ical_aliases[entry] else name - filename = '{}{}'.format(dir, name) + filename = '{}{}'.format(directory, name) auth = 'HTTPBasicAuth' if username else None downloaded = self.dl.download(url=ics, local=filename, params={username:username, password:password}, verify=verify, auth=auth) if downloaded is False: @@ -200,7 +200,7 @@ def _read_events(self, ics, username=None, password=None, prio=1, verify=True): self.logger.debug('Online ics {} successfully downloaded to {}'.format(ics, filename)) ics = os.path.normpath(filename) try: - ics = '{}{}'.format(dir, ics) if dir not in ics else ics + ics = '{}{}'.format(directory, ics) if directory not in ics else ics with open(ics, 'r') as f: ical = f.read() self.logger.debug('Read offline ical file {}'.format(ics)) From 1d8027a2f7541009794748c3ced78b3ef6a0e4c3 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Fri, 19 Apr 2019 18:34:11 +0200 Subject: [PATCH 010/200] improvements implement timeout parameter for download implement directory parameter to define download folder --- ical/README.md | 3 ++- ical/__init__.py | 28 +++++++++++++++++----------- ical/plugin.yaml | 18 ++++++++++++++++-- 3 files changed, 35 insertions(+), 14 deletions(-) diff --git a/ical/README.md b/ical/README.md index 03e45207a..6234cc8cb 100755 --- a/ical/README.md +++ b/ical/README.md @@ -1,11 +1,12 @@ # iCal ## Changelog -1.3.1: +1.6.1: - Fix reading offline files and line breaks - Updated code - using network library instead of fetch_url to download online calendars into var/ical - possibility to disable https verification when using online calendars - user documentation - updated plugin.yaml +- new parameters: directory and timeout to configure download of online calendars - implement a "prio" attribute to choose which information in an entry should be used diff --git a/ical/__init__.py b/ical/__init__.py index 4e4c595ac..d6f22e8d4 100755 --- a/ical/__init__.py +++ b/ical/__init__.py @@ -34,7 +34,7 @@ class iCal(SmartPlugin): - PLUGIN_VERSION = "1.3.1" + PLUGIN_VERSION = "1.5.1" ALLOW_MULTIINSTANCE = False DAYS = ("MO", "TU", "WE", "TH", "FR", "SA", "SU") FREQ = ("YEARLY", "MONTHLY", "WEEKLY", "DAILY", "HOURLY", "MINUTELY", "SECONDLY") @@ -45,24 +45,31 @@ def __init__(self, smarthome): self.logger = logging.getLogger(__name__) try: self.shtime = Shtime.get_instance() - self.dl = Http('') + try: + self.dl = Http(timeout=self.get_parameter_value('timeout')) + except: + self.dl = Http('') self._items = [] self._icals = {} self._ical_aliases = {} self.sh = smarthome cycle = self.get_parameter_value('cycle') calendars = self.get_parameter_value('calendars') + config_dir = self.get_parameter_value('directory') except Exception as err: self.logger.error('Problems initializing: {}'.format(err)) self._init_complete = False return try: - directory = '{}/var/ical'.format(self.sh.get_basedir()) - os.makedirs(directory) - self.logger.debug('Created ical subfolder in var') + self._directory = self.get_vardir(config_dir) + except Exception: + self._directory = '{}/var/{}'.format(self.sh.get_basedir(), config_dir) + try: + os.makedirs(self._directory) + self.logger.debug('Created {} subfolder in var'.format(config_dir)) except OSError as e: if e.errno != errno.EEXIST: - self.logger.error('Problem creating ical folder in {}var'.format(self.sh.get_basedir())) + self.logger.error('Problem creating {} folder in {}/var'.format(config_dir, self.sh.get_basedir())) self._init_complete = False return @@ -185,13 +192,12 @@ def _filter_events(self, events, delta=1, offset=0, prio=1): return revents def _read_events(self, ics, username=None, password=None, prio=1, verify=True): - directory = '{}/var/ical/'.format(self.sh.get_basedir()) if ics.startswith('http'): name = ics[ics.rfind("/")+1:] - name = '{}_downloaded.{}'.format(name.split(".")[0], name.split(".")[1]) + name = '{}.{}'.format(name.split(".")[0], name.split(".")[1]) for entry in self._ical_aliases: - name = '{}_downloaded.ics'.format(entry) if ics == self._ical_aliases[entry] else name - filename = '{}{}'.format(directory, name) + name = '{}.ics'.format(entry) if ics == self._ical_aliases[entry] else name + filename = '{}/{}'.format(self._directory, name) auth = 'HTTPBasicAuth' if username else None downloaded = self.dl.download(url=ics, local=filename, params={username:username, password:password}, verify=verify, auth=auth) if downloaded is False: @@ -200,7 +206,7 @@ def _read_events(self, ics, username=None, password=None, prio=1, verify=True): self.logger.debug('Online ics {} successfully downloaded to {}'.format(ics, filename)) ics = os.path.normpath(filename) try: - ics = '{}{}'.format(directory, ics) if directory not in ics else ics + ics = '{}/{}'.format(self._directory, ics) if self._directory not in ics else ics with open(ics, 'r') as f: ical = f.read() self.logger.debug('Read offline ical file {}'.format(ics)) diff --git a/ical/plugin.yaml b/ical/plugin.yaml index b92ae27f1..5ebbd708e 100644 --- a/ical/plugin.yaml +++ b/ical/plugin.yaml @@ -17,8 +17,8 @@ plugin: keywords: calendar ical ics state: testing - version: 1.3.1 # Plugin version - sh_minversion: 1.3 # minimum shNG version to use this plugin + version: 1.5.1 # Plugin version + sh_minversion: 1.5 # minimum shNG version to use this plugin # sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) multi_instance: False # plugin supports multi instance classname: iCal # class containing the plugin @@ -32,6 +32,20 @@ parameters: de: "Definiert in Sekunden das Intervall, in dem der Kalender aktualisert werden soll." en: "Specifies the interval in seconds to update the calendars." + directory: + type: str + default: 'ics' + description: + de: "Definiert den Unterordner im var-Pfad, in dem die Kalenderdateien gespeichert werden sollen." + en: "Defines the subfolder in the var path where the calendar files should be saved to." + + timeout: + type: int + default: 10 + description: + de: "Wartezeit in Sekunden auf eine Antwort vom Server beim Download eines Onlinekalenders." + en: "Timeout in seconds to wait for a response when downloading an online calendar." + calendars: type: list(str) description: From 0b46018271fdd2b77757e7b69078b509216425f3 Mon Sep 17 00:00:00 2001 From: msinn Date: Sat, 11 May 2019 14:33:24 +0200 Subject: [PATCH 011/200] setting version of plugins-repo to "after release" --- __init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/__init__.py b/__init__.py index f3e6a9d8e..61a79a1b3 100644 --- a/__init__.py +++ b/__init__.py @@ -1,5 +1,5 @@ def plugin_release(): - return '1.6' + return '1.6a' def plugin_branch(): From 1ea5f4816d63ff7b1915cdacb02ebe6f666c0e0c Mon Sep 17 00:00:00 2001 From: msinn Date: Sat, 11 May 2019 16:05:23 +0200 Subject: [PATCH 012/200] Re-pushing rpi1wire --- rpi1wire/README.md | 181 ------------------------------------ rpi1wire/__init__.py | 217 ------------------------------------------- 2 files changed, 398 deletions(-) delete mode 100644 rpi1wire/README.md delete mode 100644 rpi1wire/__init__.py diff --git a/rpi1wire/README.md b/rpi1wire/README.md deleted file mode 100644 index fa88af17c..000000000 --- a/rpi1wire/README.md +++ /dev/null @@ -1,181 +0,0 @@ -# Raspberry Pi 1-Wire plugin - -# Requirements - -This plugin has been developed for the Raspberry Pi. It allows easy access to 1-Wire - sensors. -We tested the plugin with the Raspberry Pi B and the temperature sensor DS18B20. - -## Supported Hardware - -Tested width: -Raspberry Pi Model B -1-Wire - Sensor DS18B20 - -# Configuration - -## Raspberry Pi - - see also: http://www.kompf.de/weather/pionewiremini.html - -### /boot/config.txt -
-   # activating 1-wire without pullup (3-wire-Version)
-   dtoverlay=w1-gpio,gpiopin=4,pullup=off
-
-### /etc/modules - -
-   #(3-wire-Version)
-   w1-gpio pullup=0  
-   w1-therm
-
- -# Smarthome - -## plugin.conf - -
-[rpi1wire]
-   class_name = Rpi1Wire
-   class_path = plugins.rpi1wire
-#   dirname = "/sys/bus/w1/devices"
-#   cycle = 120
-
- -## plugin.yaml - -
-rpi1wire:
-   class_name: Rpi1Wire
-   class_path: plugins.rpi1wire
-#   dirname: "/sys/bus/w1/devices"
-#   cycle: 120
-
- -dirname -
-   is the path where the Raspberry provides the values of the 1-wire - sensors
-   default "/sys/bus/w1/devices"
-
-cycle -
-   is the period in which the values are updated
-   default 120 seconds
-
- - -## items -# .conf - -
-   [rpi1wire]
-       [[sensor_list]]
-           name = Sensor-List
-           type = str
-           visu_acl = ro
-       [[sensors]]
-          name = Sensors
-          type = num
-          visu_acl = ro
-
- -# .yaml - -
-   rpi1wire:
-       sensor_list:
-           name: Sensor-List
-           type: str
-           visu_acl: ro
-       sensors:
-          name: Sensors
-          type: num
-          visu_acl: ro
-
-sh.rpi1wire.sensor_list() -
-   - contains a list of all found sensors
-
-sh.rpi1wire.sensors() -
-   - contains the number of sensors found
-
-### rpi1wire_name -
   
-   The name of the 1-wire - sensor
-    - rpi1wire_name or rpi1wire_id are possible
-
-### rpi1wire_id -
   
-   The id of the 1-wire - sensor
-    - rpi1wire_name or rpi1wire_id are possible
-
-### rpi1wire_update -
   
-   If you trigger this item, the sensors are re-searched without restart the server
-
- -### Example - - -
-# items/my.conf
-
-[someroom]
-    [[mytemperature]]
-        name = my Name
-        type = num
-        visu_acl = ro
-        rpi1wire_name = rpi_temp1
-        sqlite = yes
-
-#or
-
-[someroom]
-    [[mytemperature]]
-        name = my Name
-        name = Wohnzimme Raumtemperatur
-        type = num
-        visu_acl = ro
-        rpi1wire_id = 28-0215018970ff
-        sqlite = yes
-
-[rpi1wire]
-    [[update]]
-        name = Update Sensor-List
-        type = bool
-        visu_acl = rw
-        rpi1wire_update = 1
-
-
-# or in YAML -
-# items/my.yaml
-
-someroom:
-     mytemperature:
-        name: my Name
-        type: num
-        visu_acl: ro
-        rpi1wire_name: rpi_temp1
-        sqlite: yes
-
-#or
-
-someroom:
-     mytemperature:
-        name: my Name
-        name: Wohnzimme Raumtemperatur
-        type: num
-        visu_acl: ro
-        rpi1wire_id: 28-0215018970ff
-        sqlite: yes
-
-rpi1wire:
-     update:
-        name: Update Sensor-List
-        type: bool
-        visu_acl: rw
-        rpi1wire_update: 1
-
-
diff --git a/rpi1wire/__init__.py b/rpi1wire/__init__.py deleted file mode 100644 index cd0b70592..000000000 --- a/rpi1wire/__init__.py +++ /dev/null @@ -1,217 +0,0 @@ -#!/usr/bin/env python3 -# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab -######################################################################### -# Copyright 2015 R.Rauer software@rrauer.de -######################################################################### -# This file is part of SmartHome.py. http://mknx.github.io/smarthome/ -# -# SmartHome.py is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# SmartHome.py is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with SmartHome.py. If not, see . -######################################################################### - -import logging -import os - -class Rpi1Wire(): - def __init__(self, smarthome, dirname="/sys/bus/w1/devices",cycle = 120): - self.logger = logging.getLogger(__name__) - self.logger.info('Init rpi1wire') - self._sh = smarthome - self.dirname = dirname - self.cycle = cycle - self.sensors = {} - self._sensordaten = {} - self.values = {} - self.update = False - self.get_sensors() - self.anz_sensors = len(self.sensors) - self.logger.info("rpi1wire find {0} sensors".format(self.anz_sensors)) - self.logger.info(self.sensors) - self._sh.scheduler.add('rpi1wire', self.update_values, prio=3, cycle=self.cycle) - - - - def run(self): - self.alive = True - self.update_values() - self.update_basics() - - def update_basics(self): - anz = self._sh.return_item("rpi1wire.sensors") - ids = self._sh.return_item("rpi1wire.sensor_list") - if anz != None: - anz(int(self.anz_sensors),'rpi1wire') - self.logger.debug("rpi1wire-item sensors value = {0}".format(self.anz_sensors)) - if ids != None: - ids(str(self.sensors),'rpi1wire') - self.logger.debug("rpi1wire-item sensor_list value = {0}".format(self.sensors)) - - def stop(self): - self.alive = False - - def parse_item(self, item): - if 'rpi1wire_update' in item.conf: - ad=item.conf['rpi1wire_update'] - return self.update_item - if 'rpi1wire_id' not in item.conf: - if 'rpi1wire_name' not in item.conf: - return None - if 'rpi1wire_unit' not in item.conf: - self.logger.warning("rpi1wire_unit for {0} not defined".format(item.id())) - return None - not_found = False - if 'rpi1wire_id'in item.conf: - addr = item.conf['rpi1wire_id'] - try: - for sn, sid in self.sensors.items(): - if sid == item.conf['rpi1wire_id']: - name = sn - break - except: - self.logger.warning("Sensor {0} Hardware not found".format(item.conf['rpi1wire_id'])) - not_found = True - else: - if 'rpi1wire_name'in item.conf: - name = item.conf['rpi1wire_name'] - try: - addr = self.sensors[item.conf['rpi1wire_name']] - except: - self.logger.warning("Sensor {0} Hardware not found".format(item.conf['rpi1wire_name'])) - not_found = True - if not_found == False: - self._sensordaten[addr]['item'] = item - - def parse_logic(self, logic): - pass - - def update_item(self, item, caller=None, source=None, dest=None): - if self.update == True: - return None - if 'rpi1wire_update' in item.conf: - self.logger.info("rpi1wire_update wurde angefordert") - self.update_sensors() - return None - if caller != 'plugin': - self.logger.info("update item: {0}".format(item.id())) - - def update_values(self): - for sensor in self.sensors: - id = self.sensors[sensor] - value = self.getvalue(id) - #if value != 99999: - text = sensor +"=" + sensor[0] +": " + str(round(value/float(1000),1)) + " (" + str(value)+")" - self.logger.debug(text) - self.values[sensor] = round(value/float(1000),1) - try: - rpix = self._sensordaten[id] - temp = rpix['item'] - temp(round(value/float(1000),1), "rpi1wire") - self._sensordaten[id]['value'] = round(value/float(1000),1) - except: - self.logger.info("sensor {0} has no item".format(id)) - - def get_sensors(self): - objects = self.folder_objects(self.dirname) - i=1 - for sensor in objects: - if 'w1_bus' in sensor: - continue - typ = sensor.rsplit("-",1) - if typ[0] in ['10', '22', '28']: - value = self.getvalue(sensor) - if value == 99999: - self.logger.warning("rpi1wire {0} - has no value".format(sensor)) - else: - text = "rpi_temp"+str(i)+"=" + sensor +": " + str(round(value/float(1000),1)) + " (" + str(value)+")" - self.logger.info(text) - self.sensors["rpi_temp"+str(i)] = sensor - self.values["rpi_temp"+str(i)] = round(value/float(1000),1) - self._sensordaten[sensor]= {'name' : "rpi_temp"+str(i), 'value' : round(value/float(1000),1)} - i+=1 - - def folder_objects(self, dirname, otype="all"): - if (os.path.exists(dirname) == False or - os.path.isdir(dirname) == False or - os.access(dirname, os.R_OK) == False): - return False - else: - objects = os.listdir(dirname) - result = [] - for objectname in objects: - objectpath = dirname + "/" + objectname - if (otype == "all" or - (otype == "dir" and os.path.isdir(objectpath) == True) or - (otype == "file" and os.path.isfile(objectpath) == True) or - (otype == "link" and os.path.islink(objectpath) == True)): - result.append(objectname) - result.sort() - return result - - - def getvalue(self, id): - try: - mytemp = '' - filename = 'w1_slave' - f = open('/' + self.dirname + '/' + id + '/' + filename, 'r') - line = f.readline() # read 1st line - crc = line.rsplit(' ',1) - crc = crc[1].replace('\n', '') - if crc=='YES': - line = f.readline() # read 2nd line - mytemp = line.rsplit('t=',1) - else: - self.logger.warning("rpi1wire {0} - return no value".format(id)) - mytemp = '99999' - f.close() - return int(mytemp[1]) - except: - self.logger.warning("can not read sensor {}".format(id)) - return 99999 - - def update_sensors(self): - self.update = True - self.sensors = {} - self.anz_sensors = 0 - self.get_sensors() - self.anz_sensors = len(self.sensors) - self.search_item() - self.update_basics() - self.update_values() - upd = self._sh.return_item("rpi1wire.update") - if upd != None: - upd(False,'rpi1wire') - self.logger.info("rpi1wire-item update value done, {0} sensors found".format(self.anz_sensors)) - self.update = False - - def search_item(self): - items = self._sh.return_items() - for item in items: - if 'rpi1wire_id'in item.conf: - addr = item.conf['rpi1wire_id'] - try: - for sn, sid in self.sensors.items(): - if sid == item.conf['rpi1wire_id']: - name = sn - self._sensordaten[addr]['item'] = item - break - except: - self.logger.warning("Sensor {0} Hardware not found".format(item.conf['rpi1wire_id'])) - not_found = True - if 'rpi1wire_name'in item.conf: - name = item.conf['rpi1wire_name'] - try: - addr = self.sensors[item.conf['rpi1wire_name']] - self._sensordaten[addr]['item'] = item - except: - self.logger.warning("Sensor {0} Hardware not found".format(item.conf['rpi1wire_name'])) - self.logger.info("{0} rpi1wire-items registriert".format(len(self._sensordaten))) From d529bf87254aafdbf71dca068f7d8abdfa2fbc56 Mon Sep 17 00:00:00 2001 From: msinn Date: Sat, 11 May 2019 16:08:49 +0200 Subject: [PATCH 013/200] Re-added rpi1wire --- rpi1wire/README.md | 181 ++++++++++++++++++++++++++++++++++++ rpi1wire/__init__.py | 217 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 398 insertions(+) create mode 100644 rpi1wire/README.md create mode 100644 rpi1wire/__init__.py diff --git a/rpi1wire/README.md b/rpi1wire/README.md new file mode 100644 index 000000000..fa88af17c --- /dev/null +++ b/rpi1wire/README.md @@ -0,0 +1,181 @@ +# Raspberry Pi 1-Wire plugin + +# Requirements + +This plugin has been developed for the Raspberry Pi. It allows easy access to 1-Wire - sensors. +We tested the plugin with the Raspberry Pi B and the temperature sensor DS18B20. + +## Supported Hardware + +Tested width: +Raspberry Pi Model B +1-Wire - Sensor DS18B20 + +# Configuration + +## Raspberry Pi + + see also: http://www.kompf.de/weather/pionewiremini.html + +### /boot/config.txt +
+   # activating 1-wire without pullup (3-wire-Version)
+   dtoverlay=w1-gpio,gpiopin=4,pullup=off
+
+### /etc/modules + +
+   #(3-wire-Version)
+   w1-gpio pullup=0  
+   w1-therm
+
+ +# Smarthome + +## plugin.conf + +
+[rpi1wire]
+   class_name = Rpi1Wire
+   class_path = plugins.rpi1wire
+#   dirname = "/sys/bus/w1/devices"
+#   cycle = 120
+
+ +## plugin.yaml + +
+rpi1wire:
+   class_name: Rpi1Wire
+   class_path: plugins.rpi1wire
+#   dirname: "/sys/bus/w1/devices"
+#   cycle: 120
+
+ +dirname +
+   is the path where the Raspberry provides the values of the 1-wire - sensors
+   default "/sys/bus/w1/devices"
+
+cycle +
+   is the period in which the values are updated
+   default 120 seconds
+
+ + +## items +# .conf + +
+   [rpi1wire]
+       [[sensor_list]]
+           name = Sensor-List
+           type = str
+           visu_acl = ro
+       [[sensors]]
+          name = Sensors
+          type = num
+          visu_acl = ro
+
+ +# .yaml + +
+   rpi1wire:
+       sensor_list:
+           name: Sensor-List
+           type: str
+           visu_acl: ro
+       sensors:
+          name: Sensors
+          type: num
+          visu_acl: ro
+
+sh.rpi1wire.sensor_list() +
+   - contains a list of all found sensors
+
+sh.rpi1wire.sensors() +
+   - contains the number of sensors found
+
+### rpi1wire_name +
   
+   The name of the 1-wire - sensor
+    - rpi1wire_name or rpi1wire_id are possible
+
+### rpi1wire_id +
   
+   The id of the 1-wire - sensor
+    - rpi1wire_name or rpi1wire_id are possible
+
+### rpi1wire_update +
   
+   If you trigger this item, the sensors are re-searched without restart the server
+
+ +### Example + + +
+# items/my.conf
+
+[someroom]
+    [[mytemperature]]
+        name = my Name
+        type = num
+        visu_acl = ro
+        rpi1wire_name = rpi_temp1
+        sqlite = yes
+
+#or
+
+[someroom]
+    [[mytemperature]]
+        name = my Name
+        name = Wohnzimme Raumtemperatur
+        type = num
+        visu_acl = ro
+        rpi1wire_id = 28-0215018970ff
+        sqlite = yes
+
+[rpi1wire]
+    [[update]]
+        name = Update Sensor-List
+        type = bool
+        visu_acl = rw
+        rpi1wire_update = 1
+
+
+# or in YAML +
+# items/my.yaml
+
+someroom:
+     mytemperature:
+        name: my Name
+        type: num
+        visu_acl: ro
+        rpi1wire_name: rpi_temp1
+        sqlite: yes
+
+#or
+
+someroom:
+     mytemperature:
+        name: my Name
+        name: Wohnzimme Raumtemperatur
+        type: num
+        visu_acl: ro
+        rpi1wire_id: 28-0215018970ff
+        sqlite: yes
+
+rpi1wire:
+     update:
+        name: Update Sensor-List
+        type: bool
+        visu_acl: rw
+        rpi1wire_update: 1
+
+
diff --git a/rpi1wire/__init__.py b/rpi1wire/__init__.py new file mode 100644 index 000000000..cd0b70592 --- /dev/null +++ b/rpi1wire/__init__.py @@ -0,0 +1,217 @@ +#!/usr/bin/env python3 +# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab +######################################################################### +# Copyright 2015 R.Rauer software@rrauer.de +######################################################################### +# This file is part of SmartHome.py. http://mknx.github.io/smarthome/ +# +# SmartHome.py is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# SmartHome.py is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with SmartHome.py. If not, see . +######################################################################### + +import logging +import os + +class Rpi1Wire(): + def __init__(self, smarthome, dirname="/sys/bus/w1/devices",cycle = 120): + self.logger = logging.getLogger(__name__) + self.logger.info('Init rpi1wire') + self._sh = smarthome + self.dirname = dirname + self.cycle = cycle + self.sensors = {} + self._sensordaten = {} + self.values = {} + self.update = False + self.get_sensors() + self.anz_sensors = len(self.sensors) + self.logger.info("rpi1wire find {0} sensors".format(self.anz_sensors)) + self.logger.info(self.sensors) + self._sh.scheduler.add('rpi1wire', self.update_values, prio=3, cycle=self.cycle) + + + + def run(self): + self.alive = True + self.update_values() + self.update_basics() + + def update_basics(self): + anz = self._sh.return_item("rpi1wire.sensors") + ids = self._sh.return_item("rpi1wire.sensor_list") + if anz != None: + anz(int(self.anz_sensors),'rpi1wire') + self.logger.debug("rpi1wire-item sensors value = {0}".format(self.anz_sensors)) + if ids != None: + ids(str(self.sensors),'rpi1wire') + self.logger.debug("rpi1wire-item sensor_list value = {0}".format(self.sensors)) + + def stop(self): + self.alive = False + + def parse_item(self, item): + if 'rpi1wire_update' in item.conf: + ad=item.conf['rpi1wire_update'] + return self.update_item + if 'rpi1wire_id' not in item.conf: + if 'rpi1wire_name' not in item.conf: + return None + if 'rpi1wire_unit' not in item.conf: + self.logger.warning("rpi1wire_unit for {0} not defined".format(item.id())) + return None + not_found = False + if 'rpi1wire_id'in item.conf: + addr = item.conf['rpi1wire_id'] + try: + for sn, sid in self.sensors.items(): + if sid == item.conf['rpi1wire_id']: + name = sn + break + except: + self.logger.warning("Sensor {0} Hardware not found".format(item.conf['rpi1wire_id'])) + not_found = True + else: + if 'rpi1wire_name'in item.conf: + name = item.conf['rpi1wire_name'] + try: + addr = self.sensors[item.conf['rpi1wire_name']] + except: + self.logger.warning("Sensor {0} Hardware not found".format(item.conf['rpi1wire_name'])) + not_found = True + if not_found == False: + self._sensordaten[addr]['item'] = item + + def parse_logic(self, logic): + pass + + def update_item(self, item, caller=None, source=None, dest=None): + if self.update == True: + return None + if 'rpi1wire_update' in item.conf: + self.logger.info("rpi1wire_update wurde angefordert") + self.update_sensors() + return None + if caller != 'plugin': + self.logger.info("update item: {0}".format(item.id())) + + def update_values(self): + for sensor in self.sensors: + id = self.sensors[sensor] + value = self.getvalue(id) + #if value != 99999: + text = sensor +"=" + sensor[0] +": " + str(round(value/float(1000),1)) + " (" + str(value)+")" + self.logger.debug(text) + self.values[sensor] = round(value/float(1000),1) + try: + rpix = self._sensordaten[id] + temp = rpix['item'] + temp(round(value/float(1000),1), "rpi1wire") + self._sensordaten[id]['value'] = round(value/float(1000),1) + except: + self.logger.info("sensor {0} has no item".format(id)) + + def get_sensors(self): + objects = self.folder_objects(self.dirname) + i=1 + for sensor in objects: + if 'w1_bus' in sensor: + continue + typ = sensor.rsplit("-",1) + if typ[0] in ['10', '22', '28']: + value = self.getvalue(sensor) + if value == 99999: + self.logger.warning("rpi1wire {0} - has no value".format(sensor)) + else: + text = "rpi_temp"+str(i)+"=" + sensor +": " + str(round(value/float(1000),1)) + " (" + str(value)+")" + self.logger.info(text) + self.sensors["rpi_temp"+str(i)] = sensor + self.values["rpi_temp"+str(i)] = round(value/float(1000),1) + self._sensordaten[sensor]= {'name' : "rpi_temp"+str(i), 'value' : round(value/float(1000),1)} + i+=1 + + def folder_objects(self, dirname, otype="all"): + if (os.path.exists(dirname) == False or + os.path.isdir(dirname) == False or + os.access(dirname, os.R_OK) == False): + return False + else: + objects = os.listdir(dirname) + result = [] + for objectname in objects: + objectpath = dirname + "/" + objectname + if (otype == "all" or + (otype == "dir" and os.path.isdir(objectpath) == True) or + (otype == "file" and os.path.isfile(objectpath) == True) or + (otype == "link" and os.path.islink(objectpath) == True)): + result.append(objectname) + result.sort() + return result + + + def getvalue(self, id): + try: + mytemp = '' + filename = 'w1_slave' + f = open('/' + self.dirname + '/' + id + '/' + filename, 'r') + line = f.readline() # read 1st line + crc = line.rsplit(' ',1) + crc = crc[1].replace('\n', '') + if crc=='YES': + line = f.readline() # read 2nd line + mytemp = line.rsplit('t=',1) + else: + self.logger.warning("rpi1wire {0} - return no value".format(id)) + mytemp = '99999' + f.close() + return int(mytemp[1]) + except: + self.logger.warning("can not read sensor {}".format(id)) + return 99999 + + def update_sensors(self): + self.update = True + self.sensors = {} + self.anz_sensors = 0 + self.get_sensors() + self.anz_sensors = len(self.sensors) + self.search_item() + self.update_basics() + self.update_values() + upd = self._sh.return_item("rpi1wire.update") + if upd != None: + upd(False,'rpi1wire') + self.logger.info("rpi1wire-item update value done, {0} sensors found".format(self.anz_sensors)) + self.update = False + + def search_item(self): + items = self._sh.return_items() + for item in items: + if 'rpi1wire_id'in item.conf: + addr = item.conf['rpi1wire_id'] + try: + for sn, sid in self.sensors.items(): + if sid == item.conf['rpi1wire_id']: + name = sn + self._sensordaten[addr]['item'] = item + break + except: + self.logger.warning("Sensor {0} Hardware not found".format(item.conf['rpi1wire_id'])) + not_found = True + if 'rpi1wire_name'in item.conf: + name = item.conf['rpi1wire_name'] + try: + addr = self.sensors[item.conf['rpi1wire_name']] + self._sensordaten[addr]['item'] = item + except: + self.logger.warning("Sensor {0} Hardware not found".format(item.conf['rpi1wire_name'])) + self.logger.info("{0} rpi1wire-items registriert".format(len(self._sensordaten))) From 4ed3222ac3a2f466a3af146bda3eff64c98507e8 Mon Sep 17 00:00:00 2001 From: Tom Bombadil Date: Sat, 11 May 2019 21:57:10 +0200 Subject: [PATCH 014/200] Update __init__.py - Changed cycle time from 70 to 7 ms according to Standard (now data come 10 times faster) - Changed log level when invalid values are received (e.g. due to white noise on bus) --- helios/__init__.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/helios/__init__.py b/helios/__init__.py index 2c7f30779..ff7e14bd7 100755 --- a/helios/__init__.py +++ b/helios/__init__.py @@ -147,7 +147,7 @@ def _waitForSilence(self): gotSlot = False backupTimeout = self._port.timeout end = time.time() + 3 - self._port.timeout = 0.07 + self._port.timeout = 0.007 # Changed from 0.07 --> 0.007 (7ms) according to Standard while end > time.time(): chars = self._port.read(1) # nothing received so we got a slot of silence...hopefully @@ -409,8 +409,8 @@ def readValue(self,varname): .format(varname, '0x%0*X' % (2, CONST_MAP_VARIABLES_TO_ID[varname]["varid"]), '0x%0*X' % (2,raw_value), "{0:08b}".format(raw_value), raw_value, value) ) - else: # logging in debug only, so we stop spamming log file (noise on the bus seems to be normal) - self.logger.debug("Helios: No valid value for '{0}' from ventilation system received." + else: # logging as info only, so we stop spamming log file as some noise on the bus seems to be normal + self.logger.info("Helios: No valid value for '{0}' from ventilation system received." .format(varname) ) else: From ba75366bf048edd36ebfe3efae36d32b925dd615 Mon Sep 17 00:00:00 2001 From: Tom Bombadil Date: Sat, 11 May 2019 21:58:23 +0200 Subject: [PATCH 015/200] Update plugin.yaml Changed 'cycle' parameter from num to int (caused error in 1.6 as num). --- helios/plugin.yaml | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/helios/plugin.yaml b/helios/plugin.yaml index 7fd7ad5b4..c3c81ef36 100755 --- a/helios/plugin.yaml +++ b/helios/plugin.yaml @@ -24,7 +24,7 @@ parameters: # Definition of parameters to be configured i en: 'Port for communication' cycle: - type: num + type: int # used to be num until 1.6, then caused error default: 60 description: de: 'Abfrage-Intervall in Sekunden' @@ -48,4 +48,3 @@ plugin_functions: NONE logic_parameters: NONE # Definition of logic parameters defined by this plugin - From 8343e5839846c482342fd6cb8d87362f931e9d06 Mon Sep 17 00:00:00 2001 From: Tom Bombadil Date: Sat, 11 May 2019 21:59:34 +0200 Subject: [PATCH 016/200] Update helios.yaml Added several further options. Still interpret efficiency and power calculations with care. --- helios/files/helios.yaml | 555 +++++++++++++++++++++------------------ 1 file changed, 304 insertions(+), 251 deletions(-) diff --git a/helios/files/helios.yaml b/helios/files/helios.yaml index bf3c4113e..6ebc05269 100644 --- a/helios/files/helios.yaml +++ b/helios/files/helios.yaml @@ -1,83 +1,89 @@ -# smarthome/items/helios.yaml, version 1.0a -# Item file for smarthome.py - Helios/Vallox ventilation unit control & visualization through RS485 +%YAML 1.1 +--- + +# smarthome/items/helios.conf, version 0.95 +# Item file for smarthome.py - Helios/Vallox ventilation unit control & visualization through RS485. # Use at own risk - ABSOLUTELY NO WARRANTY, to the extent permitted by applicable law. + ventilation: # Settings - by default for Helios EC/ET 300 Pro; adjust as necessary + # ============================================================================================== + parameters: - # '============================================================================================ #' house_volume: name: Volumen des Hauses in m³ ("umbauter Raum", der von der Lüftung durchströmt wird) type: num - # "value: 546 # Original 'umbauter Raum' = 546; gem. Helios-Rechner aber nur 384" + # value = 546 # umbauter Raum (546m³); gem. Helios-Rechner nur 384 m³ belüftet (???) value: 384 visu_acl: r + Ane: + name: 'DIN: Fläche (A) der Nutzungseinheit (ne) in m² (=belüftete Fläche, Wohnfläche)' + type: num + # value = 143 + value: 143 + visu_acl: r + + fWS: + name: 'DIN: Wärmeschutzfaktor (0,3 für Haus mit aktueller Wärmedämmung, sonst 0,4)' + type: num + # value = 0.3 + value: '0.3' + visu_acl: r + + daemmung: + name: Haustyp gem. Wärmeschutzdämmung # nicht ändern, wird automatisch gesetzt + type: str + visu_acl: r + eval: '"gedämmt" if (sh.ventilation.parameters.fWS()<0.4) else "teil-/ungedämmt"' + eval_trigger: ventilation.parameters.fWS + max_airflow: name: Maximaler Volumenstrom der KWL in m³ (siehe Anlagendoku) type: num - # 'value: 360 # Default Helios EC/ET 300 Pro' + # value = 360 # Default Helios EC/ET 300 Pro value: 360 visu_acl: r fanspeed_levels: name: Anzahl der Schaltstufen der KWL (siehe Anlagendoku); wird z.Z. nicht verwendet type: num - # 'value: 8 # Default Helios EC/ET 300 Pro' + # value = 8 # Default Helios EC/ET 300 Pro value: 8 visu_acl: r airflow_per_mode: name: Volumenstrom je Stufe in m³/h (siehe Anlagendoku); F7-Filter = jeweils -10%! type: str - # 'value: "0 105 165 195 240 270 305 335 360" # Default Helios EC/ET 300 Pro' + # value = "0 105 165 195 240 270 305 335 360" # Default Helios EC/ET 300 Pro value: 0 105 165 195 240 270 305 335 360 visu_acl: r consumption_per_mode: name: Verbrauch _beider_ Ventilatoren je Stufe in W (siehe Anlagendoku) type: str - # 'value: "0 20 36 50 72 92 130 160 194" # Default Helios EC/ET 300 Pro' + # value = "0 20 36 50 72 92 130 160 194" # Default Helios EC/ET 300 Pro value: 0 20 36 50 72 92 130 160 194 visu_acl: r preheating_consumption: name: Stromverbrauch der Vorheizung in W (siehe Anlagendoku) type: num - # 'value: 1000 # Default Helios EC/ET 300 Pro' + # value = 1000 # Default Helios EC/ET 300 Pro value: 1000 visu_acl: r - fWS: - name: DIN - Wärmeschutzfaktor; 0,3 für Haus mit Wärmeschutzdämmung, sonst 0,4 - type: num - # value: 0.3 - value: '0.3' - visu_acl: r - - daemmung: - name: Haustyp gem. Wärmeschutzdämmung # nicht ändern, wird automatisch gesetzt - type: str - visu_acl: r - eval: '"gedämmt" if (sh.ventilation.parameters.fWS()<0.4) else "teil-/ungedämmt"' - eval_trigger: ventilation.parameters.fWS - - Ane: - name: DIN - Fläche (A) der Nutzungseinheit (ne) in m² - type: num - # 'value: 143 # Lüftungsrelevante Nutzfläche des Hauses' - value: 143 - visu_acl: r - # sh.py/logics/helios_logics.py - Booster ("Stoßlüftung") settings + # ============================================================================================== + logics_settings: - # ============================================================================================ # - # 1=Helios default, 2=Logic with fixed values, 3=Logic (interactive Popup) boost_mode: name: Setting for booster type: num + # value: 1=Helios default, 2=Logic with fixed values, 3=Logic (interactive Popup) value: 3 visu_acl: r @@ -90,17 +96,19 @@ ventilation: boost_time: name: Setting for booster - duration for logic with fixed values (only for boost_mode 2) type: num - # 'value: 2700 # 45 minutes * 60 seconds = 2700 seconds' + # value = 2700 ---> 45 minutes * 60 seconds = 2700 seconds value: 2700 visu_acl: r - # ============================================================================================ # - # Don't modify items below unless you know what you're doing # - # ============================================================================================ # + # ============================================================================================== + # Don't modify the items below unless you know what you're doing + # ============================================================================================== + # UZSU - Universelle Zeit Schalt Uhr + # ============================================================================================== + uzsu: - # '============================================================================================ #' fanspeed_uzsu: name: 'Zeitschaltuhr: Hilfsitem für Tests' type: num @@ -114,101 +122,105 @@ ventilation: visu_acl: rw # Connectors to the plugin values + # ============================================================================================ # + rs485: - # '============================================================================================ #' - _power_state: + _powerstate: name: Anlage an / aus type: num helios_var: power_state visu_acl: rw _bypass_disabled: - name: Sommerbypass an / aus + name: 0 = Sommermodus (aut. Bypass), 1= Wintermodus (Bypass deakt., LED an FBD ist an) type: num helios_var: bypass_disabled visu_acl: rw _bypass_setpoint: - name: Temperatur für automatische Umschaltung des Sommerbypasses + name: Temperatur für automatische Umschaltung des Sommerbypasses, Standard = 10°C + # Siehe Handbuch - der Bypass wird aktiviert wenn: + # - die Aussentemperatur über dem hier eingestellten Wert liegt *UND* + # - die Raumtemperatur > Aussentemperatur ist + # ToDo: Macht Wert 18...20°C hier eher Sinn? type: num helios_var: bypass_temp visu_acl: r _outside_temp: name: 'DIN/EN: Außenluft, outdoor air / ODA, grün; Luft von draussen' + # Achtung: Bei starkem Frost wird der Zuluftventilator automatisch gestoppt. + # In diesem Fall weicht die 'outside_temp' von der tatsächlichen Außentemperatur + # stark ab, da keine Frischluft mehr in die Anlage geführt wird. + # (Erwärmung des WT Anlage durch die Raumtemperatur sowie durch die ggf. gerade + # abkühlende Vorheizung verfälschen dann die Werte) type: num helios_var: outside_temp visu_acl: r - sqlite: 'yes' - - # rrd: yes - # rrd_min: yes - # rrd_max: yes - # Achtung: Bei starkem Frost wird der Zuluftventilator automatisch gestoppt. - # In diesem Fall weicht die 'outside_temp' von der tatsächlichen Außentemperatur - # stark ab, da keine Frischluft mehr in die Anlage geführt wird. - # (Erwärmung des WT Anlage durch die Raumtemperatur sowie durch die ggf. gerade - # abkühlende Vorheizung verfälschen dann die Werte) + # sqlite = yes + database: 'init' + _incoming_temp: name: 'DIN/EN: Zuluft, supply air / SUP, blau; Luft in die Räume' type: num helios_var: incoming_temp visu_acl: r - sqlite: 'yes' + # sqlite = yes + database: 'init' - # rrd: yes - # rrd_min: yes - # rrd_max: yes _inside_temp: name: 'DIN/EN: Abluft, extract air / ETA, gelb; Luft aus den Räumen' type: num - cache: true # schmeisst sonst beim Start Fehler div/0 bei Berechnungen + cache: true + # cache = true --> sonst beim Start Fehler div/0 bei Berechnungen helios_var: inside_temp visu_acl: r - sqlite: 'yes' + # sqlite = yes + database: 'init' - # rrd: yes - # rrd_min: yes - # rrd_max: yes _exhaust_temp: name: 'DIN/EN: Fortluft, exhaust air, braun; Luft nach draussen' type: num helios_var: exhaust_temp visu_acl: r - sqlite: 'yes' - - # rrd: yes - # rrd_min: yes - # rrd_max: yes - _heating_on_off: - name: Vorheizung ein - type: num - visu_acl: rw - helios_var: heating_on_off - sqlite: 'yes' + # sqlite = yes + database: 'init' - # rrd: yes - # rrd_min: yes - # rrd_max: yes _heating_setpoint: name: Einschalttemperatur Vorheizung type: num visu_acl: rw helios_var: heating_setpoint - _frost_setpoint: + _heating_on_off: + name: Vorheizung ein + type: num + visu_acl: rw + helios_var: heating_on_off + # sqlite = yes + database: 'true' + + _defrost_setpoint: name: Frostschutztemperatur - Zuluft aus unter dieser Temperatur type: num visu_acl: rw helios_var: frost_stop - _frost_hysteresis: + _defrost_hysteresis: name: Hysteresetemperatur Frostschutz, 0x03 ~ 1°C type: num visu_acl: rw helios_var: cell_defrost + _fanspeed: + name: 'Aktuelle Lüftungsstufe (EC300Pro: 1..8)' + type: num + helios_var: fanspeed + visu_acl: rw + # sqlite = yes + database: 'true' + _min_fanspeed: name: 'Lüftungerstufe min (EC300Pro: 1..8)' type: num @@ -221,16 +233,6 @@ ventilation: helios_var: max_fanspeed visu_acl: rw - _fanspeed: - name: 'Aktuelle Lüftungsstufe (EC300Pro: 1..8)' - type: num - helios_var: fanspeed - visu_acl: rw - sqlite: 'yes' - - # rrd: yes - # rrd_min: yes - # rrd_max: yes _fan_in_on_off: name: Ausschaltregister (1=aus); u.a. vom Frostschutz benutzt; ggf zweifach beschreiben type: num @@ -242,11 +244,7 @@ ventilation: type: num helios_var: fan_in_percent visu_acl: rw - sqlite: 'yes' - # rrd: yes - # rrd_min: yes - # rrd_max: yes _fan_out_on_off: name: Ausschaltregister (1=aus); ggf zweifach beschreiben type: num @@ -258,16 +256,6 @@ ventilation: type: num helios_var: fan_out_percent visu_acl: rw - sqlite: 'yes' - - # rrd: yes - # rrd_min: yes - # rrd_max: yes - _boost_on: - name: Stoßlüftung ein (Anlage setzt selbstständig zurück) - type: bool - helios_var: boost_on - visu_acl: rw _boost_mode: name: 'Grundeinstellung: 0=Kaminlüftung ("Anheizen"), 1=Stoßlüftung' @@ -275,7 +263,13 @@ ventilation: helios_var: boost_mode visu_acl: rw - # Wird in den Logiken nicht verwendet???? --> prüfen + _boost_on: + name: Einschalter für Stoßlüftung (Anlage setzt selbstständig zurück) + type: bool + helios_var: boost_on + visu_acl: rw + + # ToDo: Wird in den Logiken nicht verwendet???? --> prüfen _boost_status: name: Aktueller Status type: bool @@ -299,35 +293,36 @@ ventilation: type: num helios_var: device_error visu_acl: r - e0: 0:Kein Fehler:Kein Fehlertext:Keine Fehlerbehebung # Format = ErrNo:Name:Description:Countermeasures - e1: 1:?:?:? - e2: 2:?:?:? - e3: 3:?:?:? - e4: 4:?:?:? - e5: 5:Zuluftsensor defekt:Fühler lose, Kurzschluss
oder Temperatur >90°C gemessen:Gerätestecker ziehen (ausschalten), kurz warten und wieder einstecken - e6: 6:CO2-Alarm:CO2-Wert >5.000 ppm seit mehr als 3 Minuten:Ursache ermitteln oder ggf. Sensor überprüfen lassen. - e7: 7:Außenluftsensor defekt:Fühler lose, Kurzschluss oder Temperatur >90°C gemessen:Gerätestecker ziehen (ausschalten), kurz warten und wieder einstecken - e8: 8:Abluftsensor defekt:Fühler lose, Kurzschluss oder Temperatur >90°C gemessen:Gerätestecker ziehen (ausschalten), kurz warten und wieder einstecken - e9: 9:Frostwarnung:Außenluft <0°C und Zuluft <8°C - Frostgefahr am Wärmetauscher:Der Alarm verschwindet automatisch bei normalisierten Temperaturen + # Konstanten für Fehleranzeige in der Visu --> ErrNo:Name:Description:Countermeasures + e0: 0:Kein Fehler:Kein Fehlertext:Keine Fehlerbehebung + e1: 1:?:?:? + e2: 2:?:?:? + e3: 3:?:?:? + e4: 4:?:?:? + e5: 5:Zuluftsensor defekt:Fühler lose, Kurzschluss
oder Temperatur >90°C gemessen:Gerätestecker ziehen (ausschalten), kurz warten und wieder einstecken + e6: 6:CO2-Alarm:CO2-Wert >5.000 ppm seit mehr als 3 Minuten:Ursache ermitteln oder ggf. Sensor überprüfen lassen. + e7: 7:Außenluftsensor defekt:Fühler lose, Kurzschluss oder Temperatur >90°C gemessen:Gerätestecker ziehen (ausschalten), kurz warten und wieder einstecken + e8: 8:Abluftsensor defekt:Fühler lose, Kurzschluss oder Temperatur >90°C gemessen:Gerätestecker ziehen (ausschalten), kurz warten und wieder einstecken + e9: 9:Frostwarnung:Außenluft <0°C und Zuluft <8°C - Frostgefahr am Wärmetauscher:Der Alarm verschwindet automatisch bei normalisierten Temperaturen e10: 10:Fortluftsensor defekt:Fühler lose, Kurzschluss oder Temperatur >90°C gemessen:Gerätestecker ziehen (ausschalten), kurz warten und wieder einstecken # Fresh air heating ("pre-heating") + # ============================================================================================== + heating: - # ============================================================================================ # - # hier noch prüfen, was passiert, wenn der Frostschutz greift (angeblich Motor aus = Heizung aus) is_on: name: Pre-heating on --> 1 type: num - eval: (sh.ventilation.rs485._heating_on_off() and sh.ventilation.rs485._power_state()) + eval: (sh.ventilation.rs485._heating_on_off() and sh.ventilation.rs485._powerstate()) eval_trigger: - ventilation.rs485._heating_on_off - - ventilation.rs485._power_state + - ventilation.rs485._powerstate as_text: name: Item als formatierter Text type: str - eval: "'An' if sh.ventilation.heating.is_on() else 'Aus'" + eval: "'an' if sh.ventilation.heating.is_on() else 'aus'" eval_trigger: ventilation.heating.is_on setpoint: @@ -335,47 +330,50 @@ ventilation: as_text: name: Item als formatierter Text type: str + # ToDo: alle as_text noch umstellen, Beispiel: eval: '{0},{1},{2}'.format(sh...Hue(), sh...Sat(), sh...Bright()) + # also hier: eval: '{0}°C'.format(sh..()) (Anzahl Punkte noch prüfen) eval: str(int(sh.ventilation.rs485._heating_setpoint())) + '°C' eval_trigger: ventilation.rs485._heating_setpoint - # Fresh air fan auto-stop (frost) + # Fresh air fan auto-stop (frost) - measured at EXHAUST temperature (!) + # ============================================================================================== + frost_protection: - # ============================================================================================ # - # hier evtl. noch Logikfehler --> wird wieder 1, wenn setpoint überschritten, aber hysterese noch nicht erreicht ist; Test mit neuem eval_trigger is_on: - name: Frost-protection on --> 1 + name: Defrost eingeschaltet --> 1 type: num - eval: 1 if ((sh.ventilation.rs485._exhaust_temp()<=sh.ventilation.rs485._frost_setpoint()) and not sh.ventilation.fans.supply.is_on()) else 0 - - # eval_trigger: ventilation.rs485._exhaust_temp | ventilation.rs485._frost_setpoint | ventilation.fans.supply.is_on + eval: 1 if ((sh.ventilation.rs485._exhaust_temp()<=sh.ventilation.frost_protection.defrost_end()) and not sh.ventilation.fans.supply.is_on()) else 0 eval_trigger: - - ventilation.rs485._frost_setpoint + - ventilation.rs485._exhaust_temp + - ventilation.rs485._defrost_setpoint - ventilation.fans.supply.is_on as_text: name: Item als formatierter Text type: str - eval: "'An' if sh.ventilation.frost_protection.is_on() else 'Aus'" + eval: "'an' if sh.ventilation.frost_protection.is_on() else 'aus'" eval_trigger: ventilation.frost_protection.is_on - # '---> ventilation.rs485._frost_setpoint' + # '---> ventilation.rs485._defrost_setpoint' setpoint: + name: 'Temperatur der Fortluft in °C - 1°C = Zuluft aus (Frost-/Vereisungsschutz)' as_text: name: Item als formatierter Text type: str - eval: str(int(sh.ventilation.rs485._frost_setpoint())) + '°C' - eval_trigger: ventilation.rs485._frost_setpoint + eval: str(int(sh.ventilation.rs485._defrost_setpoint())) + '°C' + eval_trigger: ventilation.rs485._defrost_setpoint - # '---> ventilation.rs485._frost_hysteresis' + # '---> ventilation.rs485._defrost_hysteresis' hysteresis: + name: Setpoint °C + Hysterese °C + 1°C = Zuluft wieder an celsius: name: Umrechnung # 03h ~ 1°C type: num - eval: sh.ventilation.rs485._frost_hysteresis() / 3 - eval_trigger: ventilation.rs485._frost_hysteresis + eval: sh.ventilation.rs485._defrost_hysteresis() / 3 + eval_trigger: ventilation.rs485._defrost_hysteresis as_text: name: Item als formatierter Text @@ -383,50 +381,49 @@ ventilation: eval: str(int(sh.ventilation.frost_protection.hysteresis.celsius())) + '°C' eval_trigger: ventilation.frost_protection.hysteresis.celsius - end_setpoint: - name: Ausschalttemperatur Fostschutz + defrost_end: + name: Ausschalttemperatur Fostschutz nach Erwärmung type: num - eval: sh.ventilation.rs485._frost_setpoint() + (sh.ventilation.rs485._frost_hysteresis() / 3) + eval: sh.ventilation.rs485._defrost_setpoint() + (sh.ventilation.rs485._defrost_hysteresis() / 3) eval_trigger: - - sh.ventilation.frost_protection.setpoint - - ventilation.frost_protection.hysteresis.celsius + - ventilation.rs485._defrost_setpoint + - ventilation.rs485._defrost_hysteresis as_text: name: Item als formatierter Text type: str - eval: str(int(sh.ventilation.frost_protection.end_setpoint())) + '°C' - eval_trigger: ventilation.frost_protection.end_setpoint + eval: str(int(sh.ventilation.frost_protection.defrost_end())) + '°C' + eval_trigger: ventilation.frost_protection.defrost_end # Fans + # ============================================================================================== + # Hinweis: Für 0..10V-Signal sollten in den evals entsprechende Formeln gesetzt werden. + # Die anliegende Spannung ist im Register 2EH als Wert 0..FFh gespeichert. + fans: - # ============================================================================================ # - # Hinweis: Für 0..10V-Signal sollten in den evals entsprechende Formeln gesetzt werden. - # Die anliegende Spannung ist im Register 2EH als Wert 0..FFh gespeichert. - # Fresh air supply: - + # Fresh air + is_on: name: Lüfter ist wirklich an - # type: num ## rene 12/2016: Diagramme falsch + # type = num --> in bool gewandelt, Diagramme falsch type: bool - eval: 0 if (sh.ventilation.rs485._fan_in_on_off()==1 or sh.ventilation.rs485._power_state()==0) else 1 + eval: 0 if (sh.ventilation.rs485._fan_in_on_off()==1 or not sh.ventilation.rs485._powerstate()) else 1 eval_trigger: - ventilation.rs485._fan_in_on_off - - ventilation.rs485._power_state - sqlite: 'yes' + - ventilation.rs485._powerstate + # sqlite = yes + # database: 'init' + database: 'true' - # rrd: yes - # rrd_min: yes - # rrd_max: yes as_text: name: Item als formatierter Text type: str - # eval: "'An' if sh.ventilation.fans.supply.is_on()==1 else 'Aus'" - eval: "'An' if sh.ventilation.fans.supply.is_on() else 'Aus'" + eval: "'an' if sh.ventilation.fans.supply.is_on() else 'aus'" eval_trigger: ventilation.fans.supply.is_on - # '---> ventilation.rs485._fan_in_percent' + # ---> ventilation.rs485._fan_in_percent percent: as_text: @@ -436,12 +433,10 @@ ventilation: eval_trigger: ventilation.rs485._fan_in_percent effective: - name: Tatsächliche Drehzahl in % unter Berücksichtigung von an/aus + name: Tatsächliche Leistung in % unter Berücksichtigung von an/aus type: num visu_acl: rw - eval: sh.ventilation.rs485._fan_in_percent() * int(sh.ventilation.fans.supply.is_on()) # # int hinzugefügt - - # 'eval_trigger: | ventilation.rs485._fanspeed | ventilation.rs485._exhaust_temp' + eval: sh.ventilation.rs485._fan_in_percent() * int(sh.ventilation.fans.supply.is_on()) eval_trigger: - ventilation.rs485._fan_in_percent - ventilation.fans.supply.is_on @@ -457,8 +452,6 @@ ventilation: visu_acl: r type: str eval: sh.ventilation.fans.supply.is_on.as_text() + ', ' + sh.ventilation.power.supply_fan.effective.as_text() - - # eval_trigger: ventilation.rs485._fanspeed | ventilation.rs485._fan_in_percent | ventilation.fans.supply.is_on eval_trigger: - ventilation.fans.supply.is_on.as_text - ventilation.power.supply_fan.effective.as_text @@ -468,8 +461,6 @@ ventilation: visu_acl: r type: str eval: sh.ventilation.airflow.supply_fan.effective.as_text() + ' (' + sh.ventilation.fans.supply.percent.effective.as_text() + ')' - - # eval_trigger: ventilation.rs485._fanspeed ventilation.rs485._fan_in_percent | ventilation.fans.supply.is_on eval_trigger: - ventilation.airflow.supply_fan.effective.as_text - ventilation.fans.supply.percent.effective.as_text @@ -480,19 +471,16 @@ ventilation: is_on: name: Lüfter ist wirklich an type: num - eval: 0 if (sh.ventilation.rs485._fan_out_on_off()==1 or sh.ventilation.rs485._power_state()==0) else 1 + eval: 0 if (sh.ventilation.rs485._fan_out_on_off()==1 or not sh.ventilation.rs485._powerstate()) else 1 eval_trigger: - ventilation.rs485._fan_out_on_off - - ventilation.rs485._power_state - sqlite: 'yes' + - ventilation.rs485._powerstate + # sqlite = yes - # rrd: yes - # rrd_min: yes - # rrd_max: yes as_text: name: Item als formatierter Text type: str - eval: "'An' if sh.ventilation.fans.exhaust.is_on()==1 else 'Aus'" + eval: "'an' if sh.ventilation.fans.exhaust.is_on()==1 else 'aus'" eval_trigger: ventilation.fans.exhaust.is_on # '---> ventilation.rs485._fan_out_percent' @@ -509,8 +497,6 @@ ventilation: type: num visu_acl: rw eval: sh.ventilation.rs485._fan_out_percent() * sh.ventilation.fans.exhaust.is_on() - - # 'eval_trigger: | ventilation.rs485._fanspeed' eval_trigger: - ventilation.rs485._fan_out_percent - ventilation.fans.exhaust.is_on @@ -567,9 +553,10 @@ ventilation: - ventilation.rs485._max_fanspeed # Booster (built-in and logic-triggered) + # ============================================================================================== + booster: - # '============================================================================================ #' built_in: name: Original-Stoßlueftung der Anlagen-Firmware type: num @@ -618,17 +605,19 @@ ventilation: value: 10 visu_acl: r + # ToDo boost_remaining_a: - # name: Verbleibende Stosslüftungszeit - Logik 1 + # name = Verbleibende Stosslüftungszeit - Logik 1 type: num - # eval_trigger: ventilation.booster.logics.boost_duration # muss was anderes sein + # eval_trigger = ventilation.booster.logics.boost_duration # muss was anderes sein # eval: funktioniert, aber item noch korrigieren --> nur bei boost true eval: __import__('math').ceil(sh.ventilation.booster.logics.boost_duration()/60) # Summer bypass + # ============================================================================================== + bypass: - # '============================================================================================ #' is_on: name: Summer bypass on --> 1 type: num @@ -641,7 +630,7 @@ ventilation: eval: "'an' if sh.ventilation.bypass.is_on() else 'aus'" eval_trigger: ventilation.bypass.is_on - # '---> ventilation.rs485._frost_setpoint' + # 'ToDo: rs485-variable prüfen' setpoint: as_text: @@ -663,9 +652,10 @@ ventilation: eval_trigger: ventilation.bypass.heat_recovery # Device errors, alarms, filter change + # ============================================================================================== + alarms: - # '============================================================================================ #' last_error: name: Aktueller Fehler type: str @@ -704,9 +694,10 @@ ventilation: filter_warning: # Input / output air flow and air exchange rate + # ============================================================================================== + airflow: - # '============================================================================================ #' supply_fan: name: Luftdurchsatz in m³ gem. Messung oder Ventilatorkurve type: num @@ -725,11 +716,7 @@ ventilation: eval_trigger: - ventilation.airflow.supply_fan - ventilation.fans.supply.percent.effective - sqlite: 'yes' - # rrd: yes - # rrd_min: yes - # rrd_max: yes as_text: name: Item als formatierter Text type: str @@ -754,11 +741,7 @@ ventilation: eval_trigger: - ventilation.airflow.exhaust_fan - ventilation.fans.exhaust.percent.effective - sqlite: 'yes' - # rrd: yes - # rrd_min: yes - # rrd_max: yes as_text: name: Item als formatierter Text type: str @@ -773,30 +756,32 @@ ventilation: eval_trigger: ventilation.airflow.supply_fan.effective # Recommended air echange volumes for your house in m³/h as per DIN 1946-6 + # ========================================================================================== + # + # Die KWL sollte so ausgelegt sein, dass sie einen Luftaustausch zwischen + # Feuchteschutz (min) und Intensivlüftung (max) gewährleistet. + # + # Beispiel für eine Gebäudefläche von 280 m² in einem gedämmten Gebäude: + # Feuchteschutz = 0,3 *(-0,001*280² + 1,15*280+20) = 0,3*(-78,4+322+20) = 79,08 + # Nennlüftung = -0,001*280² + 1,15*280+20 = 263,6 + # Reduzierte Lüftung = 0,7 *(-0,001*280² + 1,15*280+20) = 184,52 + # Intensivlüftung = 1,15 *(-0,001*280² + 1,15*280+20) = 303,14 + # Für Auslegung nach DIN wird also KWL benötigt, die zwischen 80m³/h und 300 m³/h liefert. + # + # Die errechneten Werte wurden mit denen des Helios Auslegungsprogramms verglichen. + # Die beiden wichtigsten Werte (Feuchteschutz, Intensivlüftung) sind zu 100% identisch. + # Die beiden anderen Werte (reduzierte Lüftung, Nennlüftung) weichen leicht ab (~10%). + # Grund ist vermutlich, dass das Helios-Auslegungsprogramm sowohl Volumina als auch + # Hausgeometrie berücksichtigt, die DIN-Formeln aber nur pauschale Flächen. 10% sind für die + # Gesamtbetrachtung aber unwesentlich (ergibt ~10...15 m³/h mehr Luftaustausch als Helios). + # + # Eigene Berechnungen im Auslegungsassistenten unter: + # https://www.kwleasyplan.de/Erstellen-Sie-Ihr-Angebot/2.html?lang=de&stland=de&nav=auslegung + # + # unklar ist --> Wieso berechnet die DIN nach Fläche statt Volumen??? + DIN: - # ======================================================================================== # - # Die KWL sollte so ausgelegt sein, dass sie einen Luftaustausch zwischen - # Feuchteschutz (min) und Intensivlüftung (max) gewährleistet. - # - # Beispiel für eine Gebäudefläche von 280 m² in einem gedämmten Gebäude: - # Feuchteschutz = 0,3 *(-0,001*280² + 1,15*280+20) = 0,3*(-78,4+322+20) = 79,08 - # Nennlüftung = -0,001*280² + 1,15*280+20 = 263,6 - # Reduzierte Lüftung = 0,7 *(-0,001*280² + 1,15*280+20) = 184,52 - # Intensivlüftung = 1,15 *(-0,001*280² + 1,15*280+20) = 303,14 - # Für Auslegung nach DIN wird also KWL benötigt, die zwischen 80m³/h und 300 m³/h liefert. - # - # Die errechneten Werte wurden mit denen des Helios Auslegungsprogramms verglichen. - # Die beiden wichtigsten Werte (Feuchteschutz, Intensivlüftung) sind zu 100% identisch. - # Die beiden anderen Werte (reduzierte Lüftung, Nennlüftung) weichen leicht ab (~10%). - # Grund ist vermutlich, dass das Helios-Auslegungsprogramm sowohl Volumina als auch - # Hausgeometrie berücksichtigt, die DIN-Formeln aber nur pauschale Flächen. Die Abweichungen - # waren aber unwesentlich (dieses Plugin errechnet ~15 m³/h mehr Luftaustausch als Helios). - # - # Eigene Berechnungen im Auslegungsassistenten unter: - # https://www.kwleasyplan.de/Erstellen-Sie-Ihr-Angebot/2.html?lang=de&stland=de&nav=auslegung - # - # unklar ist --> Wieso berechnet die DIN nach Fläche statt Volumen??? # Mindestlüftung für Feuchteschutz in m³/h (nach DIN) moisture_protection: name: Feuchteschutz # fWS * (-0,001 * Ane² + 1,15 * Ane + 20) @@ -804,7 +789,7 @@ ventilation: visu_acl: r eval: round(sh.ventilation.parameters.fWS() * (-0.001 * (sh.ventilation.parameters.Ane()*sh.ventilation.parameters.Ane()) + 1.15 * sh.ventilation.parameters.Ane() + 20)) eval_trigger: - - ventilation.parameter.ane + - ventilation.parameters.Ane - ventilation.parameters.fWS air_exchange_rate: @@ -820,7 +805,7 @@ ventilation: type: num visu_acl: r eval: round(0.7 * (-0.001 * (sh.ventilation.parameters.Ane()*sh.ventilation.parameters.Ane()) + 1.15 * sh.ventilation.parameters.Ane() + 20)) - eval_trigger: ventilation.parameter.ane + eval_trigger: ventilation.parameters.Ane air_exchange_rate: name: Luftaustauschrate bei reduzierter Lüftung @@ -835,7 +820,7 @@ ventilation: type: num visu_acl: r eval: round(-0.001 * (sh.ventilation.parameters.Ane()*sh.ventilation.parameters.Ane()) + 1.15 * sh.ventilation.parameters.Ane() + 20) - eval_trigger: ventilation.parameter.ane + eval_trigger: ventilation.parameters.Ane air_exchange_rate: name: Luftaustauschrate bei Nennlüftung @@ -850,7 +835,7 @@ ventilation: type: num visu_acl: r eval: round(1.15 * (-0.001 * (sh.ventilation.parameters.Ane()*sh.ventilation.parameters.Ane()) + 1.15 * sh.ventilation.parameters.Ane() + 20)) - eval_trigger: ventilation.parameter.ane + eval_trigger: ventilation.parameters.Ane air_exchange_rate: name: Luftaustauschrate bei Intensivlüftung @@ -860,92 +845,160 @@ ventilation: eval_trigger: ventilation.airflow.DIN.boost_air_exchange # Efficiency calculations - interpret with care - thermal_efficiency: + # ============================================================================================== + thermal_energy: - # '============================================================================================ #' - energy_lost: - name: Verlustwärme + total_outgoing: + name: Energiegehalt der Abluft type: num visu_acl: r - eval: round(1.005 * 1.024 / 3.6 * sh.ventilation.airflow.exhaust_fan.effective() * (sh.ventilation.rs485._inside_temp() - sh.ventilation.rs485._incoming_temp())) + cache: 'true' + # 'cache = true # otherwise often div/0 at startup; cache not working for some reason' + # database: 'init' + database: 'true' + eval: round(1.005 * 1.204 / 3.6 * sh.ventilation.airflow.exhaust_fan.effective() * (sh.ventilation.rs485._inside_temp() - sh.ventilation.rs485._outside_temp())) eval_trigger: - ventilation.airflow.exhaust_fan.effective - ventilation.rs485._inside_temp - - ventilation.rs485._incoming_temp - sqlite: 'yes' + - ventilation.rs485._outside_temp + + as_text: + name: Wärmeenergie + 'W' + type: str + visu_acl: r + eval: "'%sW' % (sh.ventilation.thermal_energy.total_outgoing())" + eval_trigger: ventilation.thermal_energy.total_outgoing + + loss: + name: Restenrgiegehalt der Fortluft (=Verlustwärme) + eval: round(1.005 * 1.204 / 3.6 * sh.ventilation.airflow.exhaust_fan.effective() * (sh.ventilation.rs485._exhaust_temp() - sh.ventilation.rs485._outside_temp())) + eval_trigger: + - ventilation.airflow.exhaust_fan.effective + - ventilation.rs485._exhaust_temp + - ventilation.rs485._outside_temp + type: num + visu_acl: r + # sqlite = yes + # database: 'init' + database: 'true' - # rrd: yes - # rrd_min: yes - # rrd_max: yes as_text: name: Verlustwärme + 'W' type: str visu_acl: r - eval: "'%sW' % (sh.ventilation.thermal_efficiency.energy_lost())" - eval_trigger: ventilation.thermal_efficiency.energy_lost + eval: "'%sW' % (sh.ventilation.thermal_energy.loss())" + eval_trigger: ventilation.thermal_energy.loss - energy_recovered: + recovery: name: Rückgewonnene Wärme type: num visu_acl: r - eval: round(1.005 * 1.024 / 3.6 * sh.ventilation.airflow.supply_fan.effective() * (sh.ventilation.rs485._incoming_temp() - sh.ventilation.rs485._outside_temp())) + eval: round(1.005 * 1.204 / 3.6 * sh.ventilation.airflow.supply_fan.effective() * (sh.ventilation.rs485._incoming_temp() - sh.ventilation.rs485._outside_temp())) eval_trigger: - ventilation.airflow.supply_fan.effective - ventilation.rs485._incoming_temp - ventilation.rs485._outside_temp - sqlite: 'yes' + # sqlite = yes + # database: 'init' + database: 'true' - # rrd: yes - # rrd_min: yes - # rrd_max: yes as_text: name: Rückgewonnene Wärme + 'W' type: str visu_acl: r - eval: "'%sW' % (sh.ventilation.thermal_efficiency.energy_recovered())" - eval_trigger: ventilation.thermal_efficiency.energy_recovered + eval: "'%sW' % (sh.ventilation.thermal_energy.recovery())" + eval_trigger: ventilation.thermal_energy.recovery - energy_total: - name: Summe rückgewonnen + verloren (=Wärmeenergie der Abluft aus den Räumen) + # = total - loss - recovery + defrost: + name: Verlustwärme durch Aufheizen des Wärmetauschers type: num visu_acl: r - eval: sh.ventilation.thermal_efficiency.energy_lost() + sh.ventilation.thermal_efficiency.energy_recovered() + eval: sh.ventilation.thermal_energy.total_outgoing() - sh.ventilation.thermal_energy.loss() - sh.ventilation.thermal_energy.recovery() eval_trigger: - - ventilation.thermal_efficiency.energy_lost - - ventilation.thermal_efficiency.energy_recovered + - ventilation.thermal_energy.total_outgoing + - ventilation.thermal_energy.loss + - ventilation.thermal_energy.recovery + # sqlite = yes + # database: 'init' + database: 'true' as_text: - name: Wärmeenergie + 'W' + name: Verlustwärme durch Aufheizen + 'W' type: str visu_acl: r - eval: "'%sW' % (sh.ventilation.thermal_efficiency.energy_total())" - eval_trigger: ventilation.thermal_efficiency.energy_total + eval: "'%sW' % (sh.ventilation.thermal_energy.defrost())" + eval_trigger: ventilation.thermal_energy.defrost efficiency: name: Wirkungsgrad in % type: num visu_acl: r - eval: round((sh.ventilation.rs485._incoming_temp() - sh.ventilation.rs485._outside_temp()) / (sh.ventilation.rs485._inside_temp() - sh.ventilation.rs485._outside_temp()) * 100) + # 0.000001 addieren, sonst beim Start DIV/0 + eval: round(sh.ventilation.thermal_energy.recovery() / (sh.ventilation.thermal_energy.total_outgoing()+0.000001) * 100) eval_trigger: - - ventilation.rs485._incoming_temp - - ventilation.rs485._outside_temp - - ventilation.rs485._inside_temp - sqlite: 'yes' + - ventilation.thermal_energy.recovery + - ventilation.thermal_energy.total_outgoing + # sqlite = yes + # database: 'init' + database: 'true' - # rrd: yes - # rrd_min: yes - # rrd_max: yes as_text: name: Wirkungsgrad + '%' type: str visu_acl: r - eval: str(int(sh.ventilation.thermal_efficiency.efficiency())) + '%' - eval_trigger: ventilation.thermal_efficiency.efficiency + eval: str(int(sh.ventilation.thermal_energy.efficiency())) + '%' + eval_trigger: ventilation.thermal_energy.efficiency + + # =========== alternative calculations ======================# + alt_total_outgoing: + name: Energieverlust Abluft total + type: num + visu_acl: r + eval: round(1.005 * 101325 / ( 287.05 * (sh.ventilation.rs485._inside_temp() - sh.ventilation.rs485._outside_temp() + 273.15)) / 3.6 * sh.ventilation.airflow.exhaust_fan.effective() * (sh.ventilation.rs485._inside_temp() - sh.ventilation.rs485._outside_temp())) + eval_trigger: + - ventilation.airflow.exhaust_fan.effective + - ventilation.rs485._inside_temp + - ventilation.rs485._outside_temp + + alt_loss: + name: Restenrgiegehalt der Fortluft (=Verlustwärme) + eval: round(1.005 * (101325 / (287.05 * (sh.ventilation.rs485._exhaust_temp() - sh.ventilation.rs485._outside_temp() + 273.15))) / 3.6 * sh.ventilation.airflow.exhaust_fan.effective() * (sh.ventilation.rs485._exhaust_temp() - sh.ventilation.rs485._outside_temp())) + eval_trigger: + - ventilation.airflow.exhaust_fan.effective + - ventilation.rs485._exhaust_temp + - ventilation.rs485._outside_temp + type: num + visu_acl: r + + alt_recovery: + name: Rückgewonnene Wärme + type: num + visu_acl: r + eval: round(1.005 * (101325 / (287.05 * (sh.ventilation.rs485._incoming_temp() - sh.ventilation.rs485._outside_temp() + 273.15))) / 3.6 * sh.ventilation.airflow.supply_fan.effective() * (sh.ventilation.rs485._incoming_temp() - sh.ventilation.rs485._outside_temp())) + eval_trigger: + - ventilation.airflow.supply_fan.effective + - ventilation.rs485._incoming_temp + - ventilation.rs485._outside_temp + + alt_defrost: + name: Verlustwärme durch Aufheizen des Wärmetauschers + type: num + visu_acl: r + eval: sh.ventilation.thermal_energy.alt_total_outgoing() - sh.ventilation.thermal_energy.alt_loss() - sh.ventilation.thermal_energy.alt_recovery() + eval_trigger: + - ventilation.thermal_energy.total_outgoing + - ventilation.thermal_energy.loss + - ventilation.thermal_energy.recovery + + # sqlite = yes + # 101325/(287,05*(temp+273,15)) + # 101325/(287,05*(sh.ventilation.rs485._exhaust_temp()+273,15)) # Electrical power consumption + # ============================================================================================== power: - # '============================================================================================ #' heating: name: Aktueller Stromverbrauch der Vorheizung in W type: num @@ -1026,9 +1079,9 @@ ventilation: eval_trigger: ventilation.power.total # Helper items for testing + # ============================================================================================== testing: - # '============================================================================================ #' a_num: name: Numerisches Testitem type: num From 335334315593ceff4eb94ff328a317c3081ea0e8 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 12 May 2019 10:08:17 +0200 Subject: [PATCH 017/200] Update requirements.txt --- uzsu/requirements.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/uzsu/requirements.txt b/uzsu/requirements.txt index 0b62d4fc4..99953f2f6 100644 --- a/uzsu/requirements.txt +++ b/uzsu/requirements.txt @@ -1 +1,2 @@ +numpy scipy>=1.1.0 \ No newline at end of file From 95e2c37af86a322aea01fee7df9060b4f4ece019 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 12 May 2019 15:45:15 +0200 Subject: [PATCH 018/200] several fixes - turn_off and muteoff now work - handling multiple responses at once - resend if response not correct - init on reconnect --- kodi/__init__.py | 172 +++++++++++++++++++++++++++-------------------- kodi/plugin.yaml | 32 ++++++++- 2 files changed, 128 insertions(+), 76 deletions(-) diff --git a/kodi/__init__.py b/kodi/__init__.py index b464341e5..55cd2108b 100755 --- a/kodi/__init__.py +++ b/kodi/__init__.py @@ -25,6 +25,7 @@ import logging import threading import json +import re from lib.model.smartplugin import SmartPlugin from lib.network import Tcp_client @@ -36,10 +37,10 @@ class Kodi(SmartPlugin): Main class of the Plugin. Does all plugin specific stuff and provides the update functions for the items ''' - - PLUGIN_VERSION = '1.3c.0' + + PLUGIN_VERSION = '1.4.0' ALLOW_MULTIINSTANCE = True - + # list of all possible input actions for Kodi _possible_input_actions = [ 'left', 'right', 'up', 'down', 'pageup', 'pagedown', 'select', 'highlight', @@ -79,12 +80,12 @@ class Kodi(SmartPlugin): 'zoomgesture', 'rotategesture', 'swipeleft', 'swiperight', 'swipeup', 'swipedown', 'error', 'noop'] _get_items = ['volume', 'mute', 'title', 'media', 'state', 'favorites'] - + _set_items = {'volume': dict(method='Application.SetVolume', params=dict(volume='ITEM_VALUE')), 'mute' : dict(method='Application.SetMute', params=dict(mute='ITEM_VALUE')), 'input' : dict(method='Input.ExecuteAction', params=dict(action='ITEM_VALUE')), 'on_off': dict(method='System.Shutdown', params=None)} - + def __init__(self, sh, *args, **kwargs): ''' Initalizes the plugin. @@ -94,13 +95,17 @@ def __init__(self, sh, *args, **kwargs): self.logger.info('Init Kodi Plugin') self.host = self.get_parameter_value('host') self.port = self.get_parameter_value('port') + self.autoreconnect = self.get_parameter_value('autoreconnect') + self.connect_retries = self.get_parameter_value('connect_retries') + self.connect_cycle = self.get_parameter_value('connect_cycle') + self.send_retries = self.get_parameter_value('send_retries') self.kodi_tcp_connection = Tcp_client(host=self.host, port=self.port, name='KodiTCPConnection', - autoreconnect=False, - connect_retries=5, - connect_cycle=5) - self.kodi_tcp_connection.set_callbacks(connected=None, + autoreconnect=self.autoreconnect, + connect_retries=self.connect_retries, + connect_cycle=self.connect_cycle) + self.kodi_tcp_connection.set_callbacks(connected=self.connect_to_kodi, data_received=self.received_data, disconnected=self.on_disconnect) self.kodi_server_alive = False @@ -108,6 +113,8 @@ def __init__(self, sh, *args, **kwargs): # self.balance(b'{', b'}') self.message_id = 1 self.response_id = None + self.sendingcommand = None + self.sendingretries = 0 self.cmd_lock = threading.Lock() self.reply_lock = threading.Condition() self.reply = None @@ -116,9 +123,9 @@ def __init__(self, sh, *args, **kwargs): def run(self): ''' Run method for the plugin - ''' + ''' self.logger.debug('Plugin \'{}\': run method called'.format(self.get_shortname())) - self.connect_to_kodi() + self.connect_to_kodi('run') self.alive = True def stop(self): @@ -129,18 +136,20 @@ def stop(self): self.kodi_tcp_connection.close() self.kodi_server_alive = False self.alive = False - - def on_connect(self): + + def on_connect(self, by): ''' - This method is called on a succesful connect to Kodi + This method is called on a succesful connect to Kodi On a connect first check if the JSON-RPC API is available. If this is the case initialize all items with values extracted from Kodi ''' # check if API is available + self.logger.debug("Kodi running onconnect started by {}. Connection: {}.".format(by, self.kodi_server_alive)) result = self.send_kodi_rpc(method='JSONRPC.Ping') + self.logger.debug("Kodi self reply: {}.".format(self.reply)) if result is None or result['result'] != 'pong': self.logger.error('Kodi JSON-RPC API not available on {}:{}'.format(self.host, self.port)) - self.stop() + #self.stop() else: # API available -> init items # @@ -154,39 +163,41 @@ def on_connect(self): # get the list of favorites result = self.send_kodi_rpc(method='Favourites.GetFavourites', params=dict(properties=['window', 'path', 'thumbnail', 'windowparameter']))['result'] - item_dict = dict() + item_dict = dict() if result['favourites'] is not None: item_dict = {elem['title']: elem for elem in result['favourites']} for elem in self.registered_items['favorites']: - elem(item_dict, caller='Kodi') + elem(item_dict, caller='Kodi') # parse active player (if present) self._get_player_info() - - def on_disconnect(self): + + def on_disconnect(self, obj): ''' function called when TCP connection to Kodi is disconnected ''' - self.logger.debug('Received disconnect from Kodi server') + self.logger.debug('Received disconnect from Kodi') self.kodi_server_alive = False for elem in self.registered_items['on_off']: elem(self.kodi_server_alive, caller='Kodi') - - def connect_to_kodi(self): + + def connect_to_kodi(self, by): ''' try to establish a new connection to Kodi - + While this method is called during the start-up phase of the plugin, it can also be used to establish a connection to the Kodi server if the plugin was initialized before the server went up. ''' - self.kodi_tcp_connection.connect() - # we allow for 2 seconds to connect - time.sleep(2) + self.logger.debug("Kodi connection initialized by {}".format(by)) + if not self.kodi_tcp_connection.connected(): + self.kodi_tcp_connection.connect() + # we allow for 2 seconds to connect + time.sleep(2) if not self.kodi_tcp_connection.connected(): # no connection could be established, Kodi may be offline self.logger.info('Could not establish a connection to Kodi Server') self.kodi_server_alive = False else: self.kodi_server_alive = True - self.on_connect() + self.on_connect(by) for elem in self.registered_items['on_off']: elem(self.kodi_server_alive, caller='Kodi') @@ -202,7 +213,7 @@ def parse_item(self, item): self.logger.debug('Plugin \'%s\', instance \'%s\': registering item: %s', self.get_shortname(), self.get_instance_name(), - item) + item) if kodi_item in self.registered_items: self.registered_items[kodi_item].append(item) else: @@ -226,22 +237,22 @@ def update_item(self, item, caller=None, source=None, dest=None): :param dest: if given it represents the dest ''' item_value = item() - if item_value: + if item_value is not None: if caller != 'Kodi' and self.has_iattr(item.conf, 'kodi_item'): # update item was triggered from something else then this plugin -> send to Kodi - kodi_item = self.get_iattr_value(item.conf, 'kodi_item') - + kodi_item = self.get_iattr_value(item.conf, 'kodi_item') + if kodi_item == 'on_off' and item(): - # handle the on_off item as special case: + # handle the on_off item as special case: # if item is on, try to establish a connection to Kodi - self.connect_to_kodi() + self.connect_to_kodi('update') # if item is off send shutdown command to Kodi. This is # handled in the standard block below though elif kodi_item in Kodi._set_items: if kodi_item == 'input' and item() not in self._possible_input_actions: self.logger.error('The action \'%s\' for the kodi_item \'input\' is not allowed, skipping!', item_value) else: - self.logger.debug('Plugin \'%s\': update_item ws called with item \'%s\' from caller \'%s\', source \'%s\' and dest \'%s\'', + self.logger.debug('Plugin \'%s\': update_item was called with item \'%s\' from caller \'%s\', source \'%s\' and dest \'%s\'', self.get_shortname(), item, caller, source, dest) method = self._set_items[kodi_item]['method'] params = self._set_items[kodi_item]['params'] @@ -255,11 +266,11 @@ def update_item(self, item, caller=None, source=None, dest=None): self.send_kodi_rpc(method, params, wait=False) else: self.logger.info('kodi_item \'%s\' not in send_keys, skipping!', kodi_item) - + def notify(self, title, message, image=None, display_time=10000): ''' Send a notification to Kodi to be displayed on the screen - + :param title: the title of the message :param message: the message itself :param image: an optional image to be displayed alongside the message @@ -273,8 +284,8 @@ def notify(self, title, message, image=None, display_time=10000): def send_kodi_rpc(self, method, params=None, message_id=None, wait=True): ''' Send a JSON RPC to Kodi. - - The JSON string is extracted from the supplied method and the given parameters. + + The JSON string is extracted from the supplied method and the given parameters. :param method: the Kodi method to be triggered :param params: parameters dictionary :param message_id: the message ID to be used. If none, use the internal counter @@ -298,9 +309,11 @@ def send_kodi_rpc(self, method, params=None, message_id=None, wait=True): data = {'jsonrpc': '2.0', 'id': message_id, 'method': method} self.reply_lock.acquire() self.logger.debug('Kodi sending: {0}'.format(json.dumps(data, separators=(',', ':')))) + self.sendingcommand = data self.kodi_tcp_connection.send((json.dumps(data, separators=(',', ':')) + '\r\n').encode()) if wait: - self.reply_lock.wait(2) + self.logger.debug("Waiting for reply_lock..") + self.reply_lock.wait(1) self.reply_lock.release() reply = self.reply self.reply = None @@ -314,39 +327,52 @@ def received_data(self, connection, data): This method is called whenever data is received from the connection to Kodi. ''' - event = json.loads(data) - self.logger.debug('Kodi receiving: {0}'.format(event)) - if 'id' in event: - if event['id'] == self.response_id: - self.response_id = None - self.reply = event - self.reply_lock.acquire() - self.reply_lock.notify() - self.reply_lock.release() - return - if 'method' in event: - if event['method'] == 'Player.OnPause': - for elem in self.registered_items['state']: - elem('Pause', caller='Kodi') - elif event['method'] == 'Player.OnStop': - for elem in self.registered_items['state']: - elem('Stopped Player', caller='Kodi') - for elem in self.registered_items['media']: - elem('', caller='Kodi') - for elem in self.registered_items['title']: - elem('', caller='Kodi') - elif event['method'] == 'GUI.OnScreensaverActivated': - for elem in self.registered_items['state']: - elem('Screensaver', caller='Kodi') - if event['method'] in ['Player.OnPlay']: - # use a different thread for event handling - self.get_sh().trigger('kodi-player-start', self._get_player_info, 'Kodi') - elif event['method'] in ['Application.OnVolumeChanged']: - for elem in self.registered_items['mute']: - elem(event['params']['data']['muted'], caller='Kodi') - for elem in self.registered_items['volume']: - elem(event['params']['data']['volume'], caller='Kodi') - + self.logger.debug('Kodi receiving: {0}'.format(data)) + text_data = '[' + re.sub(r'\}\{', '},{', data) + ']' + events = json.loads(text_data) + for event in events: + if len(events) > 1: + self.logger.debug('Kodi checking from multianswer: {0}'.format(event)) + if 'id' in event: + self.reply_lock.acquire() + if event['id'] == self.response_id or event['result'] == 'pong': + self.response_id = None + self.sendingcommand = None + self.reply = event + self.logger.debug("Kodi command {} sent successfully".format(event['id'])) + self.reply_lock.notify() + self.reply_lock.release() + else: + self.sendingretries += 1 + self.reply_lock.release() + if self.sendingretries <= self.send_retries: + self.logger.debug("Kodi resend {}".format(self.sendingcommand)) + self.send_kodi_rpc(self.sendingcommand.get('method'), params=self.sendingcommand.get('params'), message_id=self.sendingcommand.get('id')) + else: + self.logger.warning("Kodi giving up command {}".format(self.sendingcommand)) + elif 'method' in event: + if event['method'] == 'Player.OnPause': + for elem in self.registered_items['state']: + elem('Pause', caller='Kodi') + elif event['method'] == 'Player.OnStop': + for elem in self.registered_items['state']: + elem('Stopped Player', caller='Kodi') + for elem in self.registered_items['media']: + elem('', caller='Kodi') + for elem in self.registered_items['title']: + elem('', caller='Kodi') + elif event['method'] == 'GUI.OnScreensaverActivated': + for elem in self.registered_items['state']: + elem('Screensaver', caller='Kodi') + if event['method'] in ['Player.OnPlay']: + # use a different thread for event handling + self.get_sh().trigger('kodi-player-start', self._get_player_info, 'Kodi') + elif event['method'] in ['Application.OnVolumeChanged']: + for elem in self.registered_items['mute']: + elem(event['params']['data']['muted'], caller='Kodi') + for elem in self.registered_items['volume']: + elem(event['params']['data']['volume'], caller='Kodi') + def _send_player_command(self, kodi_item): ''' This method should only be called from the update item method in @@ -398,7 +424,7 @@ def _get_player_info(self): elem(typ.capitalize(), caller='Kodi') elif typ == 'audio': for elem in self.registered_items['media']: - elem('Audio', caller='Kodi') + elem('Audio', caller='Kodi') result = self.send_kodi_rpc(method='Player.GetItem', params=dict(properties=['title', 'artist'], playerid=playerid), message_id='AudioGetItem')['result'] diff --git a/kodi/plugin.yaml b/kodi/plugin.yaml index c49a846d0..d49dd4454 100755 --- a/kodi/plugin.yaml +++ b/kodi/plugin.yaml @@ -13,8 +13,8 @@ plugin: # support: https://knx-user-forum.de/forum/supportforen/smarthome-py # Following entries are for Smart-Plugins: - version: 1.3c.0 # Plugin version - sh_minversion: 1.3c # minimum shNG version to use this plugin + version: 1.4.0 # Plugin version + sh_minversion: 1.4 # minimum shNG version to use this plugin # sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) multi_instance: True classname: Kodi # class containing the plugin @@ -39,6 +39,33 @@ parameters: de: 'Eindeutiger Identifier für die Instanz des Plugins. Kann bei nur einer konfigurierten Instanz des Plugins entfallen.' en: 'Unique identifier for each instance of the plugin. Can be omitted if only one device instance of the plugin is configured.' + autoreconnect: + type: bool + default: False + description: + de: 'Erneuter Verbindungsversuch bei Verlust der Verbindung.' + en: 'Try to reconnect after connection loss.' + + connect_retries: + type: int + default: 10 + description: + de: 'Anzahl Verbindungsversuche' + en: 'Amount of connection retries' + + connect_cycle: + type: int + default: 5 + description: + de: 'Pause zwischen Verbindungsversuchen' + en: 'Pause between connection retries' + + send_retries: + type: int + default: 5 + description: + de: 'Maximale Versuche zum Senden eines Befehls, der von Kodi nicht bestätigt wurde.' + en: 'Maximum retries to send a command that did not get confirmed by Kodi.' item_attributes: # Definition of item attributes defined by this plugin @@ -88,4 +115,3 @@ plugin_functions: description: de: 'Dauer der Anzeige in msec' en: '' - From b65f2262ed1a5ad1fb7b1c4beaaa9df8453db95c Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Mon, 13 May 2019 19:59:38 +0200 Subject: [PATCH 019/200] Rework of Art-Net Plugin --- artnet/README.md | 56 ++++-- artnet/__init__.py | 222 ++++++++++++++++++++++-- artnet/plugin.yaml | 79 ++++----- artnet/webif/static/img/plugin_logo.png | Bin 0 -> 72259 bytes artnet/webif/templates/index.html | 68 ++++++++ 5 files changed, 356 insertions(+), 69 deletions(-) create mode 100644 artnet/webif/static/img/plugin_logo.png create mode 100644 artnet/webif/templates/index.html diff --git a/artnet/README.md b/artnet/README.md index 31c6bdfac..ae053e16f 100644 --- a/artnet/README.md +++ b/artnet/README.md @@ -4,6 +4,7 @@ You need a device understanding Artnet. I suggest to use the software OLA http://www.opendmx.net/index.php/Open_Lighting_Architecture to translate the ArtNet packets into DMX Signals. +Alternatively you can use any Art-Net to DMX Adapter OLA supports most USB -> DMX Adapters available at the moment. ## Supported Hardware @@ -14,20 +15,43 @@ OLA supports most USB -> DMX Adapters available at the moment. ### plugin.yaml +```yaml +artnet1: + class_name: ArtNet + class_path: plugins.artnet + artnet_universe: 0 + artnet_net: 0 + artnet_subnet: 0 + ip: 192.168.159.216 + port: 6454 + update_cycle: 120 + instance: keller ``` -dmx1: - class_name: ArtNet - class_path: plugins.artnet - artnet_subnet: 0 - artnet_net: 0 - artnet_universe: 0 - ip: 192.168.1.123 - port: 6454 -``` + +#### Attributes + * `artnet_universe`: Optional login information + * `artnet_net`: Required login information + * `artnet_subnet`: Hostname or ip address of the FritzDevice. + * `ip`: Port of the FritzDevice, typically 49433 for https or 49000 for http + * `port`: True or False => True will add "https", False "http" to the URLs in the plugin + * `update_cycle`: timeperiod between two update cycles. Default is 300 seconds. + * `instance`: Name of this plugin instance (e.g. above: keller) ### items.yaml -Not needed yet. +#### artnet_address +This attribute assigns an item to the respective artnet-address (DMX channel) + +### Example: +```yaml + lightbar: + red: + artnet_address@keller: 1 + green: + artnet_address@keller: 2 + blue: + artnet_address@keller: 3 +``` ### logic.yaml Notice: First DMX channel is 1! Not 0! @@ -35,22 +59,22 @@ Notice: First DMX channel is 1! Not 0! To send DMX Data to the universe set in plugin.yaml you have 3 possibilities: #### 1) Send single value -``sh.dmx1(, )`` +``sh.artnet1(, )`` Sets DMX_CHAN to value DMX_VALUE. -Example: ``sh.dmx1(12,255)`` +Example: ``sh.artnet1(12,255)`` If channels 1-11 are already set, they will not change. If channels 1-11 are not set till now, the will be set to value 0. This is needed because on a DMX bus you can not set just one specific channel. You have to begin at first channel setting your values. #### 2) Send a list of values starting at channel -``sh.dmx1(, )`` +``sh.artnet1(, )`` Sends to DMX Bus starting at Example: -``sh.dmx1(10,[0,33,44,55,99])`` +``sh.artnet1(10,[0,33,44,55,99])`` If channels 1-9 are already set, they will not change. If channels 1-9 are not set till now, the will be set to value 0. This is needed because on a DMX bus you can not set just one specific channel. @@ -59,7 +83,7 @@ Values in square brackets will be written to channel (10-14) #### 3) Send a list of values -``sh.dmx1()`` +``sh.artnet1()`` Sends to DMX Bus starting at channel 1 @@ -67,5 +91,5 @@ This is nearly the same as 2) but without starting channel. Example: -``sh.dmx1([0,33,44,55,99])`` +``sh.artnet1([0,33,44,55,99])`` Values in Square brackets will be written to channel (1-5) diff --git a/artnet/__init__.py b/artnet/__init__.py index a7966feee..b9d5144dc 100755 --- a/artnet/__init__.py +++ b/artnet/__init__.py @@ -2,6 +2,7 @@ # vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab ######################################################################### # Copyright 2013- mode2k mode@gmx.co.uk +# Extended 2019 jentz1986 ######################################################################### # This file is part of SmartHomeNG # https://github.com/smarthomeNG/smarthome @@ -25,32 +26,137 @@ import socket import struct -from lib.model.smartplugin import SmartPlugin +from lib.model.smartplugin import * +from lib.module import Modules +class ArtNet_Model: + + def __init__(self, host, port, universe, net, subnet, instance_name, update_cycle): + self._host = host + self._port = port + + self._universe = universe + self._net = net + self._subnet = subnet + self._instance_name = instance_name + self._update_cycle = update_cycle + + self._items = [] + + def get_ip(self): + """ + Returns the IP of the ArtNet node + + :return: hostname of the device, as set in plugin.conf + """ + return self._host + + def get_port(self): + """ + Returns the port of the ArtNet node + + :return: port of the device, as set in plugin.conf + """ + return self._port + + def get_universe(self): + """ + Returns the Universe of the ArtNet node + + :return: Universe of the device, as set in plugin.conf + """ + return self._universe + + def get_net(self): + """ + Returns the net of the ArtNet node + + :return: net of the device, as set in plugin.conf + """ + return self._net + + def get_subnet(self): + """ + Returns the Subnet of the ArtNet node + + :return: Subnet of the device, as set in plugin.conf + """ + return self._subnet + + def get_items(self): + """ + Returns added items + + :return: array of items held by the device + """ + return self._items class ArtNet(SmartPlugin): - ALLOW_MULTIINSTANCE = False - PLUGIN_VERSION = '1.3.0' + ALLOW_MULTIINSTANCE = True + PLUGIN_VERSION = "1.5.1" + ADDR_ATTR = 'artnet_address' packet_counter = 1 dmxdata = [0, 0] + + def __init__(self, sh, *args, **kwargs): + """ + Initalizes the plugin. The parameters describe for this method are pulled from the entry in plugin.conf. + """ + # self.logger = logging.getLogger(__name__) + self.logger.info('Init ArtNet Plugin') + + self._model = ArtNet_Model(self.get_parameter_value('ip') or '127.0.0.1', + port=int(self.get_parameter_value('port') or 6454), + universe=int(self.get_parameter_value('artnet_universe') or 0), + net=int(self.get_parameter_value('artnet_net') or 0), + subnet=int(self.get_parameter_value('artnet_subnet') or 0), + instance_name=self.get_instance_name(), + update_cycle=int(self.get_parameter_value('update_cycle') or 0), + ) - def __init__(self, smarthome, artnet_net, artnet_subnet, artnet_universe, ip, port): - self.logger = logging.getLogger(__name__) self.s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - self.net = int(artnet_net) - self.subnet = int(artnet_subnet) - self.universe = int(artnet_universe) - self.ip = ip - self.port = int(port) - self.logger.debug("Init ArtNet Plugin done") + self.init_webinterface() + + self.logger.debug("Init ArtNet Plugin for %s done" % self._model._instance_name) + def parse_item(self, item): + # items bound to this artnet-subnet + if self.has_iattr(item.conf, self.ADDR_ATTR): + adr = int(self.get_iattr_value(item.conf, self.ADDR_ATTR)) + if adr > 0 and adr < 513: + while len(self.dmxdata) < (adr - 1): + self.dmxdata.append(0) + + self.logger.debug("Bound address %s to item %s" % (adr, item)) + self._model._items.append(item) + return self.update_item + else: + self.logger.error("Invalid address %s in item %s" % (adr, item)) + + def update_item(self, item, caller=None, source=None, dest=None): + if caller != 'ArtNet': + adr = int(self.get_iattr_value(item.conf, self.ADDR_ATTR)) + if item() < 0 or item() > 255: + self.logger.warning("Impossible to update address: %s to value %s from item %s, value has to be >=0 and <=255" % (adr, item(), item)) + else: + self.logger.debug("Updating address: %s to value %s" % (adr, item())) + self.send_single_value(adr, item()) + + def run(self): - pass + """ + Run method for the plugin + """ + self.logger.debug("run method called") + if self._model._update_cycle > 0: + self.scheduler_add('updateArtnet', self._update_loop, prio=5, cycle=self._model._update_cycle, offset=2) + self.alive = True def stop(self): self.close() + self.alive = False def __call__(self, var1=None, var2=None): if type(var1) == int and type(var2) == int: @@ -60,6 +166,17 @@ def __call__(self, var1=None, var2=None): if type(var1) == list and type(var2) == type(None): self.send_frame(var1) + def _update_loop(self): + if not self.alive: + return + self.logger.debug("Update Loop") + + def get_address_value(self, req_adr): + adr = int(req_adr) + while len(self.dmxdata) < adr: + self.dmxdata.append(0) + return self.dmxdata[adr - 1] + def send_single_value(self, adr, value): if adr < 1 or adr > 512: self.logger.error("DMX address %s invalid" % adr) @@ -110,7 +227,7 @@ def __ArtDMX_broadcast(self): data.append(struct.pack('B', 0)) # Artnet source address data.append( - struct.pack('H', len(self.dmxdata))) # DMX Data @@ -127,7 +244,84 @@ def __ArtDMX_broadcast(self): # debug # self.logger.info("Outgoing Artnet:%s"%(':'.join(x.encode('hex') for x in data))) # send over ethernet - self.s.sendto(result, (self.ip, self.port)) + self.s.sendto(result, (self._model._host, self._model._port)) def close(self): self.s.close() + + def init_webinterface(self): + """" + Initialize the web interface for this plugin + + This method is only needed if the plugin is implementing a web interface + """ + try: + self.mod_http = Modules.get_instance().get_module( + 'http') # try/except to handle running in a core version that does not support modules + except: + self.mod_http = None + if self.mod_http == None: + self.logger.error("Plugin '{}': Not initializing the web interface".format(self.get_shortname())) + return False + + # set application configuration for cherrypy + webif_dir = self.path_join(self.get_plugin_dir(), 'webif') + config = { + '/': { + 'tools.staticdir.root': webif_dir, + }, + '/static': { + 'tools.staticdir.on': True, + 'tools.staticdir.dir': 'static' + } + } + + # Register the web interface as a cherrypy app + self.mod_http.register_webif(WebInterface(webif_dir, self), + self.get_shortname(), + config, + self.get_classname(), self.get_instance_name(), + description='') + + return True + +# ------------------------------------------ +# Webinterface of the plugin +# ------------------------------------------ + +import cherrypy + +class WebInterface(SmartPluginWebIf): + + def __init__(self, webif_dir, plugin): + """ + Initialization of instance of class WebInterface + + :param webif_dir: directory where the webinterface of the plugin resides + :param plugin: instance of the plugin + :type webif_dir: str + :type plugin: object + """ + self.logger = logging.getLogger(__name__) + self.webif_dir = webif_dir + self.plugin = plugin + + self.tplenv = self.init_template_environment() + + @cherrypy.expose + def index(self, reload=None): + """ + Build index.html for cherrypy + + Render the template and return the html file to be delivered to the browser + + :return: contents of the template after beeing rendered + """ + tabcount = 1 + + tmpl = self.tplenv.get_template('index.html') + return tmpl.render(plugin_shortname=self.plugin.get_shortname(), + plugin_version=self.plugin.get_version(), + plugin_info=self.plugin.get_info(), + tabcount=tabcount, + p=self.plugin) diff --git a/artnet/plugin.yaml b/artnet/plugin.yaml index 8b6594c8a..dad853535 100755 --- a/artnet/plugin.yaml +++ b/artnet/plugin.yaml @@ -5,21 +5,46 @@ plugin: description: de: 'Ansteuerung der meisten USB/Netwerk DMX Adapter' en: 'Can control most of USB/network DMX adapters' - maintainer: mode2k + maintainer: mode2k, jentz1986 tester: ohinckel - state: qa-passed + state: ready keywords: dmx # documentation: https://github.com/smarthomeNG/plugins/blob/develop/mqtt/README.md # url of documentation (wiki) page - version: 1.3.0 # Plugin version - sh_minversion: 1.3 # minimum shNG version to use this plugin -# sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) - multi_instance: False - restartable: unknown - classname: ArtNet # class containing the plugin + + version: 1.5.1 # Plugin version + sh_minversion: 1.5.1 # minimum shNG version to use this plugin +# sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) + multi_instance: True + classname: ArtNet # class containing the plugin parameters: # Definition of parameters to be configured in etc/plugin.yaml + ip: + type: ip + description: + de: 'Gibt die Adresse des angesprochenen Art-Net Node an' + en: 'Specifies the address of a Art-Net node' + port: + type: int + valid_min: 0 + description: + de: 'Gibt den Port des angesprochenen Art-Net Node an' + en: 'Specifies the port of a Art-Net node' + update_cycle: + type: int + valid_min: 0 + description: + de: 'Gibt an, wie oft (Sekunden) die aktuelle Lichtsituation neu verschickt werden soll (optional, 0 deaktiviert dies)' + en: 'Defines Refresh-cycle for re-sending the current setting in seconds, 0 deactivates this' + artnet_universe: + type: int + default: 0 + description: + de: 'Gibt das Art-Net Universe an' + en: 'Specifies the Art-Net Universe to use' + valid_min: 0 + valid_max: 15 artnet_net: type: int default: 0 @@ -35,36 +60,12 @@ parameters: de: 'Gibt das Art-Net Sub-Net an' en: 'Specifies the Art-Net Sub-Net to use' valid_min: 0 - valid_max: 15 - artnet_universe: - type: int - default: 0 - description: - de: 'Gibt das Art-Net Universe an' - en: 'Specifies the Art-Net Universe to use' - valid_min: 0 - valid_max: 15 - ip: - type: ip - description: - de: 'Gibt die Adresse einer Art-Net Node an' - en: 'Specifies the address of a Art-Net node' - port: + valid_max: 15 + +item_attributes: + artnet_address: type: int - valid_min: 0 + mandatory: True description: - de: 'Gibt den Port einer Art-Net Node an' - en: 'Specifies the port of a Art-Net node' - -item_attributes: NONE - # Definition of item attributes defined by this plugin - -item_structs: NONE - # Definition of item-structure templates for this plugin - -logic_parameters: NONE - # Definition of logic parameters defined by this plugin - -plugin_functions: NONE - # Definition of function interface of the plugin - + de: 'Definition der DMX Adresse' + en: 'Defition of DMX address' \ No newline at end of file diff --git a/artnet/webif/static/img/plugin_logo.png b/artnet/webif/static/img/plugin_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2709230b4edb5bc51ef5cdb91529b7f8156fcd86 GIT binary patch literal 72259 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 Sb!#rpbKAo92HM;!@&5s_*pwas literal 0 HcmV?d00001 diff --git a/artnet/webif/templates/index.html b/artnet/webif/templates/index.html new file mode 100644 index 000000000..fb7bab96c --- /dev/null +++ b/artnet/webif/templates/index.html @@ -0,0 +1,68 @@ +{% extends "base_plugin.html" %} +{% set tab1title = _('Artnet Items') %} +{% set language = p._sh.get_defaultlanguage() %} +{% if language not in ['en','de'] %} +{% set language = 'en' %} +{% endif %} + +{% block headtable %} + + + + + + + + + + + + + + + + + + + + + +
  {{ _('Universum') }}{{ p._model.get_universe() }}
{{ _('Host') }}{{ p._model.get_ip() }}{{ _('Netz') }}{{ p._model.get_net() }}
{{ _('Port') }}{{ p._model.get_port() }}{{ _('Subnetz') }}{{ p._model.get_subnet() }}
+{% endblock %} +{% block bodytab1 %} +

+{% endblock %} \ No newline at end of file From 7eeb811ad7b8df25ef43490729eb8a1c007f41a1 Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Mon, 13 May 2019 20:05:22 +0200 Subject: [PATCH 020/200] Update README.md --- artnet/README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/artnet/README.md b/artnet/README.md index ae053e16f..51f058d38 100644 --- a/artnet/README.md +++ b/artnet/README.md @@ -4,7 +4,7 @@ You need a device understanding Artnet. I suggest to use the software OLA http://www.opendmx.net/index.php/Open_Lighting_Architecture to translate the ArtNet packets into DMX Signals. -Alternatively you can use any Art-Net to DMX Adapter +Alternatively you can use any Art-Net to DMX Adapter. (Tested with https://www.ulrichradig.de/home/index.php/dmx/art-net-box) OLA supports most USB -> DMX Adapters available at the moment. ## Supported Hardware @@ -22,19 +22,19 @@ artnet1: artnet_universe: 0 artnet_net: 0 artnet_subnet: 0 - ip: 192.168.159.216 + ip: 192.168.0.99 port: 6454 update_cycle: 120 instance: keller ``` #### Attributes - * `artnet_universe`: Optional login information - * `artnet_net`: Required login information - * `artnet_subnet`: Hostname or ip address of the FritzDevice. - * `ip`: Port of the FritzDevice, typically 49433 for https or 49000 for http - * `port`: True or False => True will add "https", False "http" to the URLs in the plugin - * `update_cycle`: timeperiod between two update cycles. Default is 300 seconds. + * `artnet_universe`: Art-Net Universe, default: 0 + * `artnet_net`: Art-Net Net, default: 0 + * `artnet_subnet`: Art-Net Subnet, default: 0 + * `ip`: IP-address of your Art-Net node, mandatory, no default + * `port`: Port to reach your Art-Net node, defaul 6454 + * `update_cycle`: timeperiod between two update cycles, default 0 for no update. If a cycle is provided the current channel-settings is updated to Art-Net every n-th second. * `instance`: Name of this plugin instance (e.g. above: keller) ### items.yaml From 21a57b121e4ad3287ece71b044f8b35043fa18ec Mon Sep 17 00:00:00 2001 From: psilo909 Date: Tue, 14 May 2019 07:09:20 +0200 Subject: [PATCH 021/200] alexa4p3 doku fix --- alexa4p3/user_doc.rst | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/alexa4p3/user_doc.rst b/alexa4p3/user_doc.rst index a60f25e69..ede81222a 100644 --- a/alexa4p3/user_doc.rst +++ b/alexa4p3/user_doc.rst @@ -1,7 +1,7 @@ .. index:: Plugins; Alexa4P3 (Unterstützung von Amazon Echo/Alexa Geräten .. index:: Alexa -avm +alexa4p3 ### Konfiguration @@ -28,12 +28,15 @@ Beispielfunktionen Beleuchtung einschalten : **Alexa, schalte das Küchenlicht ein** + **Alexa, dimme das Küchenlicht um 10 Prozent** + **Alexa, stelle das Küchenlicht auf 40 Prozent** Temperatur einstellen: **Alexa, stelle die Temperatur in der Küche auf 25 Grad** + **Alexa, erhöhe die Temperatur in der Küche um 2 Grad** Temperatur abfragen : From b3ccab2a4f20ef8a3462bd238f4522723cc43ed4 Mon Sep 17 00:00:00 2001 From: psilo909 Date: Tue, 14 May 2019 11:47:00 +0200 Subject: [PATCH 022/200] fix for network plugin parameter handling increased version and version for core (1.6) --- network/__init__.py | 44 ++++++++++++++++++++++++-------------------- network/plugin.yaml | 20 ++++++++++---------- 2 files changed, 34 insertions(+), 30 deletions(-) diff --git a/network/__init__.py b/network/__init__.py index 9308fa51f..9b359f090 100755 --- a/network/__init__.py +++ b/network/__init__.py @@ -28,6 +28,7 @@ from lib.model.smartplugin import SmartPlugin + class TCPHandler(lib.connection.Stream): def __init__(self, parser, dest, sock, source): @@ -47,7 +48,7 @@ class TCPDispatcher(lib.connection.Server): def __init__(self, parser, ip, port): lib.connection.Server.__init__(self, ip, port) self.parser = parser - self.dest = 'tcp:' + ip + ':' + port + self.dest = "tcp:%s:%s" % (ip, port) self.connect() def handle_connection(self): @@ -84,7 +85,7 @@ class HTTPDispatcher(lib.connection.Server): def __init__(self, parser, ip, port): lib.connection.Server.__init__(self, ip, port) self.parser = parser - self.dest = 'http:' + ip + ':' + port + self.dest = "http:%s:%s" % (ip, port) self.connect() def handle_connection(self): @@ -99,7 +100,7 @@ class UDPDispatcher(lib.connection.Server): def __init__(self, parser, ip, port): self.logger = logging.getLogger(__name__) lib.connection.Server.__init__(self, ip, port, proto='UDP') - self.dest = 'udp:' + ip + ':' + port + self.dest = "udp:%s:%s" % (ip, port) self.parser = parser self.connect() @@ -117,7 +118,7 @@ def handle_connection(self): class Network(SmartPlugin): ALLOW_MULTIINSTANCE = False - PLUGIN_VERSION = "1.3.1" + PLUGIN_VERSION = "1.4.0" generic_listeners = {} special_listeners = {} @@ -125,18 +126,19 @@ class Network(SmartPlugin): socket_warning = 10 socket_warning = 2 - def __init__(self, smarthome, ip='0.0.0.0', port='2727', udp='no', tcp='no', http='no', udp_acl='*', tcp_acl='*', http_acl='*'): - self._sh = smarthome - self.logger = logging.getLogger(__name__) - self.tcp_acl = self.parse_acl(tcp_acl) - self.udp_acl = self.parse_acl(udp_acl) - self.http_acl = self.parse_acl(http_acl) - if tcp == 'yes': - self.add_listener('tcp', ip, port, tcp_acl, generic=True) - if udp == 'yes': - self.add_listener('udp', ip, port, udp_acl, generic=True) - if http != 'no': - self.add_listener('http', ip, http, http_acl, generic=True) + def __init__(self, sh, *args, **kwargs): + self.tcp_acl = self.parse_acl(self.get_parameter_value('tcp_acl')) + self.udp_acl = self.parse_acl(self.get_parameter_value('udp_acl')) + self.http_acl = self.parse_acl(self.get_parameter_value('http_acl')) + if self.get_parameter_value('tcp') == 'yes': + self.add_listener('tcp', self.get_parameter_value('ip'), self.get_parameter_value('port'), self.tcp_acl, + generic=True) + if self.get_parameter_value('udp') == 'yes': + self.add_listener('udp', self.get_parameter_value('ip'), self.get_parameter_value('port'), self.udp_acl, + generic=True) + if self.get_parameter_value('http') != 'no': + self.add_listener('http', self.get_parameter_value('ip'), self.get_parameter_value('http'), self.http_acl, + generic=True) def udp(self, host, port, data): try: @@ -144,7 +146,7 @@ def udp(self, host, port, data): sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) sock.sendto(data.encode(), (sockaddr[0], sockaddr[1])) sock.close() - del(sock) + del (sock) except Exception as e: self.logger.warning("UDP: Problem sending data to {}:{}: {}".format(host, port, e)) pass @@ -152,7 +154,7 @@ def udp(self, host, port, data): self.logger.debug("UDP: Sending data to {}:{}: {}".format(host, port, data)) def add_listener(self, proto, ip, port, acl='*', generic=False): - dest = proto + ':' + ip + ':' + port + dest = "%s:%s:%s" % (proto, ip, port) self.logger.debug("Adding listener on: {}".format(dest)) if proto == 'tcp': dispatcher = TCPDispatcher(self.parse_input, ip, port) @@ -161,6 +163,7 @@ def add_listener(self, proto, ip, port, acl='*', generic=False): elif proto == 'http': dispatcher = HTTPDispatcher(self.parse_input, ip, port) else: + return if not dispatcher.connected: return False @@ -172,7 +175,7 @@ def add_listener(self, proto, ip, port, acl='*', generic=False): return True def parse_acl(self, acl): - if acl == '*': + if acl == ['*']: return False if isinstance(acl, str): return [acl] @@ -249,7 +252,8 @@ def parse_input(self, source, dest, data): logic = self.special_listeners[dest]['logics'][entry]['logic'] if lacl: if source not in lacl: - self.logger.error("Logic '{}' acl doesn't permit triggering from {}.".format(logic.name, source)) + self.logger.error( + "Logic '{}' acl doesn't permit triggering from {}.".format(logic.name, source)) return False elif gacl: if source not in gacl: diff --git a/network/plugin.yaml b/network/plugin.yaml index 6eb8ed55c..1b9878ba1 100755 --- a/network/plugin.yaml +++ b/network/plugin.yaml @@ -11,9 +11,9 @@ plugin: # keywords: iot xyz documentation: https://www.smarthomeng.de/developer/plugins/network/README.html # url of documentation (wiki) page - version: 1.3.1 # Plugin version - sh_minversion: 1.3 # minimum shNG version to use this plugin -# sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) + version: 1.4.0 # Plugin version + sh_minversion: 1.6 # minimum shNG version to use this plugin +# sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) multi_instance: False # plugin supports multi instance restartable: unknown classname: Network # class containing the plugin @@ -38,8 +38,8 @@ parameters: type: str default: 'no' valid_list: - - yes - - no + - 'yes' + - 'no' description: de: "Eingehende UDP Verbindungen akzeptieren" en: "Accept incoming UDP connections" @@ -47,8 +47,8 @@ parameters: type: str default: 'no' valid_list: - - yes - - no + - 'yes' + - 'no' description: de: "Eingehende TCP Verbindungen akzeptieren" en: "Accept incoming TCP connections" @@ -65,19 +65,19 @@ parameters: type: list default: '*' description: - de: "" + de: "Mit diesem Attribut kann man eine Liste von / eine einzelne IP Adresse definieren, von der UDP Updates kommen dürfen. Per Default wird jeder eingehende Request angenommen." en: "with this attribute you could specify a list or a single IP address to allow UDP updates from. By default it accepts every incoming request." tcp_acl: type: list default: '*' description: - de: "" + de: "Mit diesem Attribut kann man eine Liste von / eine einzelne IP Adresse definieren, von der TCP Updates kommen dürfen. Per Default wird jeder eingehende Request angenommen." en: "with this attribute you could specify a list or a single IP address to allow TCP updates from. By default it accepts every incoming request." http_acl: type: list default: '*' description: - de: "" + de: "Mit diesem Attribut kann man eine Liste von / eine einzelne IP Adresse definieren, von der HTTP Updates kommen dürfen. Per Default wird jeder eingehende Request angenommen." en: "with this attribute you could specify a list or a single IP address to allow HTTP updates from. By default it accepts every incoming request." From 30e14af9f6d8835af3abf87c91551a743b9e7d8c Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Tue, 14 May 2019 13:01:01 +0200 Subject: [PATCH 023/200] Update plugin.yaml --- artnet/plugin.yaml | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/artnet/plugin.yaml b/artnet/plugin.yaml index dad853535..6683c2158 100755 --- a/artnet/plugin.yaml +++ b/artnet/plugin.yaml @@ -9,13 +9,13 @@ plugin: tester: ohinckel state: ready keywords: dmx -# documentation: https://github.com/smarthomeNG/plugins/blob/develop/mqtt/README.md # url of documentation (wiki) page - +# documentation: https://github.com/smarthomeNG/plugins/blob/develop/mqtt/README.md # url of documentation (wiki) page version: 1.5.1 # Plugin version sh_minversion: 1.5.1 # minimum shNG version to use this plugin -# sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) +# sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) multi_instance: True + restartable: True # Plugin can be restarted safely, however, the data is not re-applied from items to the DMX-Values classname: ArtNet # class containing the plugin parameters: @@ -66,6 +66,15 @@ item_attributes: artnet_address: type: int mandatory: True + valid_min: 1 + valid_max: 255 description: de: 'Definition der DMX Adresse' - en: 'Defition of DMX address' \ No newline at end of file + en: 'Defition of DMX address' + +logic_parameters: NONE + +plugin_functions: NONE + # Definition of function interface of the plugin + +item_structs: NONE From ae3f4304fc8d8b82408e720375856f64a1b51a55 Mon Sep 17 00:00:00 2001 From: psilo909 Date: Tue, 14 May 2019 19:07:15 +0200 Subject: [PATCH 024/200] alexa4p3: corrected docu link --- alexa4p3/plugin.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/alexa4p3/plugin.yaml b/alexa4p3/plugin.yaml index 4ec5c35b3..4fecd40d7 100644 --- a/alexa4p3/plugin.yaml +++ b/alexa4p3/plugin.yaml @@ -8,7 +8,7 @@ plugin: maintainer: andrek tester: psilo909, cannon, ASSR85, Juergen keywords: Amazon Echo Alexa Voicecontrol Sprachsteuerung Show Spot FireTV - documentation: http://smarthomeng.de/user/plugins_doc/config/Alexa4P3.html # url of documentation (wiki) page + documentation: https://www.smarthomeng.de/user/plugins/alexa4p3/user_doc.html # url of documentation (wiki) page support: https://knx-user-forum.de/forum/supportforen/smarthome-py/1021150-amazon-alexa-plugin version: 1.0.1 # Plugin version sh_minversion: 1.3 # minimum shNG version to use this plugin From 590b7bc21accb27687643fa585569b729c563450 Mon Sep 17 00:00:00 2001 From: aschwith Date: Tue, 14 May 2019 20:59:05 +0200 Subject: [PATCH 025/200] fix for AVM hkr_device --- avm/README.md | 6 +----- avm/__init__.py | 18 +++++++++--------- avm/plugin.yaml | 4 ++++ 3 files changed, 14 insertions(+), 14 deletions(-) diff --git a/avm/README.md b/avm/README.md index 9700d5198..9cd4a3933 100644 --- a/avm/README.md +++ b/avm/README.md @@ -641,7 +641,7 @@ avm: visu_acl: ro hkr_bathroom: - # Current hkr state: 0 = closed, 1: open, 2: temperature controlled + # Current hkr state: 0 = closed, 1: open, 2: temperature controlled, 3: error type: num value: 3 avm_data_type@fritzbox_7490: hkr_device @@ -654,28 +654,24 @@ avm: avm_data_type@fritzbox_7490: temperature type: num visu_acl: ro - eval: value / 10 set_temperature: value: -1 avm_data_type@fritzbox_7490: set_temperature type: num visu_acl: ro - eval: value / 10 set_temperature_reduced: value: -1 avm_data_type@fritzbox_7490: set_temperature_reduced type: num visu_acl: ro - eval: value / 10 set_temperature_comfort: value: -1 avm_data_type@fritzbox_7490: set_temperature_comfort type: num visu_acl: ro - eval: value / 10 ``` diff --git a/avm/__init__.py b/avm/__init__.py index fad7ca82f..6164af726 100644 --- a/avm/__init__.py +++ b/avm/__init__.py @@ -1471,7 +1471,7 @@ def _update_myfritz(self, item): soap_data = self._assemble_soap_data(action, self._urn_map['MyFritz']) else: self.logger.error( - "Attribute %s not supported by plugin method" % self.get_iattr_value(item.conf, 'avm_data_type')) + "Attribute %s not supported by plugin method (updatemyfritz)" % self.get_iattr_value(item.conf, 'avm_data_type')) return try: @@ -1512,7 +1512,7 @@ def _update_host(self, item): soap_data = self._assemble_soap_data(action, self._urn_map['Hosts'], {'NewMACAddress': item.conf['mac']}) else: self.logger.error( - "Attribute %s not supported by plugin method" % self.get_iattr_value(item.conf, 'avm_data_type')) + "Attribute %s not supported by plugin (update hosts)" % self.get_iattr_value(item.conf, 'avm_data_type')) return try: @@ -1577,19 +1577,19 @@ def _update_home_automation(self, item): CURL for testing which data is coming back: curl --anyauth -u user:'password' "https://192.168.178.1:49443/upnp/control/x_homeauto" -H "Content-Type: text/xml; charset="utf-8"" -H "SoapAction:urn:dslforum-org:service:X_AVM-DE_Homeauto:1#GetSpecificDeviceInfos" -d "xxxxx xxxxxxx" -s -k - :param item: item to be updated (Supported item avm_data_types: aha_device) + :param item: item to be updated (Supported item avm_data_types: aha_device, hkr_device) """ url = self._build_url("/upnp/control/x_homeauto") headers = self._header.copy() - if self.get_iattr_value(item.conf, 'avm_data_type') == 'aha_device': + if self.get_iattr_value(item.conf, 'avm_data_type') == 'aha_device' or self.get_iattr_value(item.conf, 'avm_data_type') == 'hkr_device': action = 'GetSpecificDeviceInfos' headers['SOAPACTION'] = "%s#%s" % (self._urn_map['Homeauto'], action) soap_data = self._assemble_soap_data(action, self._urn_map['Homeauto'], {'NewAIN': item.conf['ain'].strip()}) else: self.logger.error( - "Attribute %s not supported by plugin method" % self.get_iattr_value(item.conf, 'avm_data_type')) + "Attribute %s not supported by plugin method (home automation)" % self.get_iattr_value(item.conf, 'avm_data_type')) return try: @@ -1669,7 +1669,7 @@ def _update_home_automation(self, item): if self.get_iattr_value(child.conf, 'avm_data_type') == 'temperature': is_temperature = xml.getElementsByTagName('NewTemperatureCelsius') if len(is_temperature) > 0: - child(int(is_temperature[0].firstChild.data)) + child(int(is_temperature[0].firstChild.data)/10) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, @@ -1677,7 +1677,7 @@ def _update_home_automation(self, item): elif self.get_iattr_value(child.conf, 'avm_data_type') == 'set_temperature': set_temperature = xml.getElementsByTagName('NewHkrSetTemperature') if len(set_temperature) > 0: - child(int(set_temperature[0].firstChild.data)) + child(int(set_temperature[0].firstChild.data)/10) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, @@ -1685,7 +1685,7 @@ def _update_home_automation(self, item): elif self.get_iattr_value(child.conf, 'avm_data_type') == 'set_temperature_reduced': set_temperature_reduced= xml.getElementsByTagName('NewHkrReduceTemperature') if len(set_temperature_reduced) > 0: - child(int(set_temperature_reduced[0].firstChild.data)) + child(int(set_temperature_reduced[0].firstChild.data)/10) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, @@ -1693,7 +1693,7 @@ def _update_home_automation(self, item): elif self.get_iattr_value(child.conf, 'avm_data_type') == 'set_temperature_comfort': set_temperature_comfort= xml.getElementsByTagName('NewHkrComfortTemperature') if len(set_temperature_comfort) > 0: - child(int(set_temperature_comfort[0].firstChild.data)) + child(int(set_temperature_comfort[0].firstChild.data)/10) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, diff --git a/avm/plugin.yaml b/avm/plugin.yaml index 402e10c69..cc40924b9 100755 --- a/avm/plugin.yaml +++ b/avm/plugin.yaml @@ -146,6 +146,10 @@ item_attributes: - 'energy' - 'power' - 'temperature' + - 'set_temperature' + - 'set_temperature_reduced' + - 'set_temperature_compfort' + - 'hkr_device' avm_incoming_allowed: type: str From 6b25463b94ee20c78314ed9107fe3be8fbd7b34f Mon Sep 17 00:00:00 2001 From: psilo909 Date: Wed, 15 May 2019 16:49:46 +0200 Subject: [PATCH 026/200] UZSU: fixed link in old readme --- uzsu/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uzsu/README.md b/uzsu/README.md index d116386ac..2bb2af1ab 100755 --- a/uzsu/README.md +++ b/uzsu/README.md @@ -6,7 +6,7 @@ Provides universal time switches for items ## Documentation For info on the features and detailed setup see the [User Documentation](https://www.smarthomeng.de/user/plugins/uzsu/user_doc.html "Manual") -For info on how to configure the plugin see the [Configuration Documentation](https://www.smarthomeng.de/plugins_doc/config/uzsu "Configuration") +For info on how to configure the plugin see the [Configuration Documentation](https://www.smarthomeng.de/user/plugins_doc/config/uzsu.html "Configuration") ## Changelog From 75f791201c8b007f1b69aead78da229d67c04180 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Wed, 15 May 2019 18:23:29 +0200 Subject: [PATCH 027/200] Update plugin.yaml --- ical/plugin.yaml | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/ical/plugin.yaml b/ical/plugin.yaml index 5ebbd708e..c11d238c9 100644 --- a/ical/plugin.yaml +++ b/ical/plugin.yaml @@ -4,7 +4,7 @@ plugin: type: web # plugin type (gateway, interface, protocol, system, web) description: de: 'Ermöglicht die Verwendung von Kalendern (ICS)' - en: 'Allows using of calendars (ICS)' + en: 'Provide access to calendars based on ics files' description_long: de: 'Ermöglicht die Verwendung von Kalendern (ICS)\n Es können sowohl Dateien als auch Onlinefeeds eingebunden werden. @@ -13,9 +13,11 @@ plugin: You can use offline files and online feeds. ' maintainer: cmalo (mknx) - tester: ohinckel, onkelandy - keywords: calendar ical ics - state: testing + tester: onkelandy + state: ready + keywords: ical ics calendar +# documentation: https://github.com/smarthomeNG/smarthome/wiki/CLI-Plugin # url of documentation (wiki) page + support: https://knx-user-forum.de/forum/supportforen/smarthome-py/1352089-support-thread-zum-ical-plugin version: 1.5.1 # Plugin version sh_minversion: 1.5 # minimum shNG version to use this plugin @@ -38,14 +40,14 @@ parameters: description: de: "Definiert den Unterordner im var-Pfad, in dem die Kalenderdateien gespeichert werden sollen." en: "Defines the subfolder in the var path where the calendar files should be saved to." - + timeout: type: int default: 10 description: de: "Wartezeit in Sekunden auf eine Antwort vom Server beim Download eines Onlinekalenders." en: "Timeout in seconds to wait for a response when downloading an online calendar." - + calendars: type: list(str) description: From 774c3507bf405f650f2cd86367ddab2f0364a398 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Wed, 15 May 2019 18:33:10 +0200 Subject: [PATCH 028/200] Delete plugin.yaml --- ical/plugin.yaml | 140 ----------------------------------------------- 1 file changed, 140 deletions(-) delete mode 100644 ical/plugin.yaml diff --git a/ical/plugin.yaml b/ical/plugin.yaml deleted file mode 100644 index c11d238c9..000000000 --- a/ical/plugin.yaml +++ /dev/null @@ -1,140 +0,0 @@ -# Metadata for the Smart-Plugin -plugin: - # Global plugin attributes - type: web # plugin type (gateway, interface, protocol, system, web) - description: - de: 'Ermöglicht die Verwendung von Kalendern (ICS)' - en: 'Provide access to calendars based on ics files' - description_long: - de: 'Ermöglicht die Verwendung von Kalendern (ICS)\n - Es können sowohl Dateien als auch Onlinefeeds eingebunden werden. - ' - en: 'Allows using of calendars (ICS)\n - You can use offline files and online feeds. - ' - maintainer: cmalo (mknx) - tester: onkelandy - state: ready - keywords: ical ics calendar -# documentation: https://github.com/smarthomeNG/smarthome/wiki/CLI-Plugin # url of documentation (wiki) page - support: https://knx-user-forum.de/forum/supportforen/smarthome-py/1352089-support-thread-zum-ical-plugin - - version: 1.5.1 # Plugin version - sh_minversion: 1.5 # minimum shNG version to use this plugin -# sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) - multi_instance: False # plugin supports multi instance - classname: iCal # class containing the plugin - -parameters: - # Definition of parameters to be configured in etc/plugin.yaml - cycle: - type: int - default: 3600 - description: - de: "Definiert in Sekunden das Intervall, in dem der Kalender aktualisert werden soll." - en: "Specifies the interval in seconds to update the calendars." - - directory: - type: str - default: 'ics' - description: - de: "Definiert den Unterordner im var-Pfad, in dem die Kalenderdateien gespeichert werden sollen." - en: "Defines the subfolder in the var path where the calendar files should be saved to." - - timeout: - type: int - default: 10 - description: - de: "Wartezeit in Sekunden auf eine Antwort vom Server beim Download eines Onlinekalenders." - en: "Timeout in seconds to wait for a response when downloading an online calendar." - - calendars: - type: list(str) - description: - de: "Liste von Kalendern die automatisch aktualisiert und via `sh.ical()` Funktion abgerufen werden kann." - en: "list of calendars to automatically keep up to date and provided via `sh.ical()` function." - description_long: - de: "Liste von Kalendern die automatisch aktualisiert und via `sh.ical()` Funktion abgerufen werden kann. Konfiguriert optional einen Alias und die URI des Kalenders, die sowohl auf ein lokales File als auch einen Onlinefeed mit `https://` verweisen kann. Onlinekalender werden in den Ordner var/ical gespeichert und je nach cycle-Angabe aktualisiert.\n - Beispiel: holidays:http://cal.server/holidays.ics" - en: "list of calendars to automatically keep up to date and provided via `sh.ical()` function. Configures an alias (optional) and the URI of calendar, which can be a local file or a remote file when starting with `https://`. Online calendars are downloaded in the folder var/ical and updated depending on the cycle attribute.\n - Example: holidays:https://cal.server/holidays.ics" - -item_attributes: - # Definition of item attributes defined by this plugin - ical_calendar: - type: str - description: - de: "Dieses Attribut konfiguriert eine Verbindung zwischen Item und entsprechendem Kalender." - en: "This configures a connection between the item and the given calendar." - description_long: - de: "Dieses Attribut konfiguriert eine Verbindung zwischen Item und entsprechendem Kalender, der entweder als Dateinamen (die Datei muss in var/ical vom smarthomeNG Verzeichnis liegen), URI oder als Kalender Alias (im etc/plugin.yaml definiert) angegeben wird. Der konfigurierte Kalender wird automatisch zum internen Kalender-Zwischenspeicher hinzugefügt und aktualisiert.\n - \n - Das Item wird auf Wahr gesetzt, sobald ein Event im Moment stattfindet. Ansonsten ist es falsch.\n - \n - Das Aktualisierungsintervall ist derzeit auf eine Minute festgelegt. Das beduetet, jede Minute wird der Kalender auf Events geprüft und das Item bei Bedarf aud Wahr geschaltet. - " - en: "This configures a connection between the item and the given calendar. You can specify the calendar filename (the file has to be in var/ical of your smarthomeNG folder), URI or the calendar alias (as defined in the etc/plugin.yaml). The configured calendar will automatically be added to the internal calendar cache and will automatically be updated.\n - \n - When configured, each time an event is taken place at the moment, the item will be set to true or if not, to false.\n - \n - The update interval for the item updates is currently at one minute, which means each minute it will be checked if an event is taking place and - the items will be updated." - -plugin_functions: - # Definition of function interface of the plugin - ical: - type: dict - description: - de: "Es wird ein dictionary mit einem datetime.date Objekt als Key und verschiedenen Detailwerten zurückgeliefert." - en: "It returns a dictonary with a datetime.date object as key and an array with different detail values." - description_long: - de: "Es wird ein dictionary mit einem datetime.date Objekt als Key und folgenden Arraywerten zurückgeliefert:\n - die Event Startzeit, die Event Endzeit, die Eventkategorie (z.B. privat), die Eventzusammenfassung (z.B. die Notizen)\n - \n - Wenn ein Kalender öfters verwendet werden soll, wird empfohlen, diesen in der etc/plugin.yaml zu konfigurieren. - " - en: "It returns a dictonary with a datetime.date object as key and an array including\n - the event start time, the event end time, the event's class type (e.g. private calendar entry), the event's summary, i.e. content\n - \n - If you want to use a calendar more regularly it could be helpful to configure this calendar in the plugin configuration. - " - parameters: - ics: - type: str - default: None - description: - de: 'eine lokale Datei, eine mit http:// startende URL oder ein Kalender-Alias aus der Pluginkonfiguration' - en: 'specify a local file, a url starting with http:// or a calendar alias configured in the plugin configuration.' - - delta: - type: int - default: 1 - description: - de: 'wieviele zusätzliche Tage analysiert werden sollen.' - en: 'how many additional days should the analysed.' - - offset: - type: int - default: 0 - description: - de: 'wann der zu analysierende Zeitrahmen starten soll.' - en: 'when should the analysed timeframe start.' - - prio: - type: int - default: 1 - description: - de: 'Falls in einem Kalendereintrag Felder mehrfach vorkommen, kann hier bestimmt werden, das wievielte Feld priorisiert werden soll.' - en: 'If in one calendar entry a field is present multiple times you can define which occurence should be prioritized.' - - verify: - type: bool - default: True - description: - de: 'Bestimmt, ob eine https URL per SSL verifiziert werden soll oder nicht.' - en: 'Defines if a https URL should be verified via SSL or not.' - -logic_parameters: NONE -# Definition of logic parameters defined by this plugin - -item_structs: NONE From 17705c59e9d729a5d449aa42a16993bdc6265f91 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Wed, 15 May 2019 18:33:58 +0200 Subject: [PATCH 029/200] Create plugin.yaml --- ical/plugin.yaml | 140 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100755 ical/plugin.yaml diff --git a/ical/plugin.yaml b/ical/plugin.yaml new file mode 100755 index 000000000..c11d238c9 --- /dev/null +++ b/ical/plugin.yaml @@ -0,0 +1,140 @@ +# Metadata for the Smart-Plugin +plugin: + # Global plugin attributes + type: web # plugin type (gateway, interface, protocol, system, web) + description: + de: 'Ermöglicht die Verwendung von Kalendern (ICS)' + en: 'Provide access to calendars based on ics files' + description_long: + de: 'Ermöglicht die Verwendung von Kalendern (ICS)\n + Es können sowohl Dateien als auch Onlinefeeds eingebunden werden. + ' + en: 'Allows using of calendars (ICS)\n + You can use offline files and online feeds. + ' + maintainer: cmalo (mknx) + tester: onkelandy + state: ready + keywords: ical ics calendar +# documentation: https://github.com/smarthomeNG/smarthome/wiki/CLI-Plugin # url of documentation (wiki) page + support: https://knx-user-forum.de/forum/supportforen/smarthome-py/1352089-support-thread-zum-ical-plugin + + version: 1.5.1 # Plugin version + sh_minversion: 1.5 # minimum shNG version to use this plugin +# sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) + multi_instance: False # plugin supports multi instance + classname: iCal # class containing the plugin + +parameters: + # Definition of parameters to be configured in etc/plugin.yaml + cycle: + type: int + default: 3600 + description: + de: "Definiert in Sekunden das Intervall, in dem der Kalender aktualisert werden soll." + en: "Specifies the interval in seconds to update the calendars." + + directory: + type: str + default: 'ics' + description: + de: "Definiert den Unterordner im var-Pfad, in dem die Kalenderdateien gespeichert werden sollen." + en: "Defines the subfolder in the var path where the calendar files should be saved to." + + timeout: + type: int + default: 10 + description: + de: "Wartezeit in Sekunden auf eine Antwort vom Server beim Download eines Onlinekalenders." + en: "Timeout in seconds to wait for a response when downloading an online calendar." + + calendars: + type: list(str) + description: + de: "Liste von Kalendern die automatisch aktualisiert und via `sh.ical()` Funktion abgerufen werden kann." + en: "list of calendars to automatically keep up to date and provided via `sh.ical()` function." + description_long: + de: "Liste von Kalendern die automatisch aktualisiert und via `sh.ical()` Funktion abgerufen werden kann. Konfiguriert optional einen Alias und die URI des Kalenders, die sowohl auf ein lokales File als auch einen Onlinefeed mit `https://` verweisen kann. Onlinekalender werden in den Ordner var/ical gespeichert und je nach cycle-Angabe aktualisiert.\n + Beispiel: holidays:http://cal.server/holidays.ics" + en: "list of calendars to automatically keep up to date and provided via `sh.ical()` function. Configures an alias (optional) and the URI of calendar, which can be a local file or a remote file when starting with `https://`. Online calendars are downloaded in the folder var/ical and updated depending on the cycle attribute.\n + Example: holidays:https://cal.server/holidays.ics" + +item_attributes: + # Definition of item attributes defined by this plugin + ical_calendar: + type: str + description: + de: "Dieses Attribut konfiguriert eine Verbindung zwischen Item und entsprechendem Kalender." + en: "This configures a connection between the item and the given calendar." + description_long: + de: "Dieses Attribut konfiguriert eine Verbindung zwischen Item und entsprechendem Kalender, der entweder als Dateinamen (die Datei muss in var/ical vom smarthomeNG Verzeichnis liegen), URI oder als Kalender Alias (im etc/plugin.yaml definiert) angegeben wird. Der konfigurierte Kalender wird automatisch zum internen Kalender-Zwischenspeicher hinzugefügt und aktualisiert.\n + \n + Das Item wird auf Wahr gesetzt, sobald ein Event im Moment stattfindet. Ansonsten ist es falsch.\n + \n + Das Aktualisierungsintervall ist derzeit auf eine Minute festgelegt. Das beduetet, jede Minute wird der Kalender auf Events geprüft und das Item bei Bedarf aud Wahr geschaltet. + " + en: "This configures a connection between the item and the given calendar. You can specify the calendar filename (the file has to be in var/ical of your smarthomeNG folder), URI or the calendar alias (as defined in the etc/plugin.yaml). The configured calendar will automatically be added to the internal calendar cache and will automatically be updated.\n + \n + When configured, each time an event is taken place at the moment, the item will be set to true or if not, to false.\n + \n + The update interval for the item updates is currently at one minute, which means each minute it will be checked if an event is taking place and + the items will be updated." + +plugin_functions: + # Definition of function interface of the plugin + ical: + type: dict + description: + de: "Es wird ein dictionary mit einem datetime.date Objekt als Key und verschiedenen Detailwerten zurückgeliefert." + en: "It returns a dictonary with a datetime.date object as key and an array with different detail values." + description_long: + de: "Es wird ein dictionary mit einem datetime.date Objekt als Key und folgenden Arraywerten zurückgeliefert:\n + die Event Startzeit, die Event Endzeit, die Eventkategorie (z.B. privat), die Eventzusammenfassung (z.B. die Notizen)\n + \n + Wenn ein Kalender öfters verwendet werden soll, wird empfohlen, diesen in der etc/plugin.yaml zu konfigurieren. + " + en: "It returns a dictonary with a datetime.date object as key and an array including\n + the event start time, the event end time, the event's class type (e.g. private calendar entry), the event's summary, i.e. content\n + \n + If you want to use a calendar more regularly it could be helpful to configure this calendar in the plugin configuration. + " + parameters: + ics: + type: str + default: None + description: + de: 'eine lokale Datei, eine mit http:// startende URL oder ein Kalender-Alias aus der Pluginkonfiguration' + en: 'specify a local file, a url starting with http:// or a calendar alias configured in the plugin configuration.' + + delta: + type: int + default: 1 + description: + de: 'wieviele zusätzliche Tage analysiert werden sollen.' + en: 'how many additional days should the analysed.' + + offset: + type: int + default: 0 + description: + de: 'wann der zu analysierende Zeitrahmen starten soll.' + en: 'when should the analysed timeframe start.' + + prio: + type: int + default: 1 + description: + de: 'Falls in einem Kalendereintrag Felder mehrfach vorkommen, kann hier bestimmt werden, das wievielte Feld priorisiert werden soll.' + en: 'If in one calendar entry a field is present multiple times you can define which occurence should be prioritized.' + + verify: + type: bool + default: True + description: + de: 'Bestimmt, ob eine https URL per SSL verifiziert werden soll oder nicht.' + en: 'Defines if a https URL should be verified via SSL or not.' + +logic_parameters: NONE +# Definition of logic parameters defined by this plugin + +item_structs: NONE From 1c7aff21ee8ecb06de4aab90e92ca66ff528c6a9 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Thu, 16 May 2019 00:22:31 +0200 Subject: [PATCH 030/200] Update __init__.py --- ical/__init__.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ical/__init__.py b/ical/__init__.py index d6f22e8d4..9ceb6c9cb 100755 --- a/ical/__init__.py +++ b/ical/__init__.py @@ -61,10 +61,10 @@ def __init__(self, smarthome): self._init_complete = False return try: - self._directory = self.get_vardir(config_dir) + self._directory = '{}/{}'.format(self.get_vardir(), config_dir) except Exception: self._directory = '{}/var/{}'.format(self.sh.get_basedir(), config_dir) - try: + try: os.makedirs(self._directory) self.logger.debug('Created {} subfolder in var'.format(config_dir)) except OSError as e: @@ -72,7 +72,7 @@ def __init__(self, smarthome): self.logger.error('Problem creating {} folder in {}/var'.format(config_dir, self.sh.get_basedir())) self._init_complete = False return - + for calendar in calendars: if ':' in calendar and 'http' != calendar[:4]: name, sep, cal = calendar.partition(':') @@ -192,7 +192,7 @@ def _filter_events(self, events, delta=1, offset=0, prio=1): return revents def _read_events(self, ics, username=None, password=None, prio=1, verify=True): - if ics.startswith('http'): + if ics.startswith('http'): name = ics[ics.rfind("/")+1:] name = '{}.{}'.format(name.split(".")[0], name.split(".")[1]) for entry in self._ical_aliases: From 0870327265ae2d7a12c49f95b48a2672704cac69 Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Thu, 16 May 2019 19:47:18 +0200 Subject: [PATCH 031/200] Update __init__.py --- artnet/__init__.py | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/artnet/__init__.py b/artnet/__init__.py index b9d5144dc..5434ee167 100755 --- a/artnet/__init__.py +++ b/artnet/__init__.py @@ -153,9 +153,20 @@ def run(self): if self._model._update_cycle > 0: self.scheduler_add('updateArtnet', self._update_loop, prio=5, cycle=self._model._update_cycle, offset=2) self.alive = True + for it in self._model._items: + adr = int(self.get_iattr_value(it.conf, self.ADDR_ATTR)) + val = it() + if val < 0 or val > 255: + self.logger.warning("Impossible to update address: %s to value %s from item %s, value has to be >=0 and <=255" % (adr, val, it)) + else: + self.logger.debug("Updating address: %s to value %s" % (adr, vaL)) + set_address_value(adr, val) + self.__ArtDMX_broadcast() + + def stop(self): - self.close() + self.s.close() self.alive = False def __call__(self, var1=None, var2=None): @@ -169,7 +180,9 @@ def __call__(self, var1=None, var2=None): def _update_loop(self): if not self.alive: return - self.logger.debug("Update Loop") + if len(self.dmxdata) < 1: + return + self.__ArtDMX_broadcast() def get_address_value(self, req_adr): adr = int(req_adr) @@ -177,14 +190,17 @@ def get_address_value(self, req_adr): self.dmxdata.append(0) return self.dmxdata[adr - 1] + def set_address_value(self, req_adr, val): + while len(self.dmxdata) < req_adr: + self.dmxdata.append(0) + self.dmxdata[adr - 1] = value + def send_single_value(self, adr, value): if adr < 1 or adr > 512: self.logger.error("DMX address %s invalid" % adr) return - while len(self.dmxdata) < adr: - self.dmxdata.append(0) - self.dmxdata[adr - 1] = value + set_address_value(adr, value) self.__ArtDMX_broadcast() def send_frame_starting_at(self, adr, values): @@ -246,9 +262,6 @@ def __ArtDMX_broadcast(self): # send over ethernet self.s.sendto(result, (self._model._host, self._model._port)) - def close(self): - self.s.close() - def init_webinterface(self): """" Initialize the web interface for this plugin From 9998c7ac4323ba7daf82e452264c38cfd5aceb39 Mon Sep 17 00:00:00 2001 From: psilo909 Date: Fri, 17 May 2019 19:00:05 +0200 Subject: [PATCH 032/200] check without restriction to virtualenv<14 (which was due to incompibility to py 3.2) --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index bf9e439b4..3e1510e74 100755 --- a/.travis.yml +++ b/.travis.yml @@ -15,7 +15,7 @@ env: before_install: - sudo apt-get install libudev-dev install: - - pip install tox-travis "virtualenv<14.0.0" + - pip install tox-travis virtualenv script: - sh .travis.sh From 5afa587437b4357bb5b3790889c4071738ab04e3 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sat, 18 May 2019 14:45:54 +0200 Subject: [PATCH 033/200] fix filename and alias parsing --- ical/README.md | 6 +++++- ical/__init__.py | 41 +++++++++++++++++++++-------------------- ical/plugin.yaml | 2 +- ical/user_doc.rst | 14 +++++++------- 4 files changed, 34 insertions(+), 29 deletions(-) mode change 100644 => 100755 ical/user_doc.rst diff --git a/ical/README.md b/ical/README.md index 6234cc8cb..d34280b1a 100755 --- a/ical/README.md +++ b/ical/README.md @@ -1,7 +1,11 @@ # iCal ## Changelog -1.6.1: +1.5.2: +- Use domain name as filename if no alias is defined +- Parse calendars in plugin.yaml more robust + +1.5.1: - Fix reading offline files and line breaks - Updated code - using network library instead of fetch_url to download online calendars into var/ical diff --git a/ical/__init__.py b/ical/__init__.py index 9ceb6c9cb..9042995e4 100755 --- a/ical/__init__.py +++ b/ical/__init__.py @@ -34,7 +34,7 @@ class iCal(SmartPlugin): - PLUGIN_VERSION = "1.5.1" + PLUGIN_VERSION = "1.5.2" ALLOW_MULTIINSTANCE = False DAYS = ("MO", "TU", "WE", "TH", "FR", "SA", "SU") FREQ = ("YEARLY", "MONTHLY", "WEEKLY", "DAILY", "HOURLY", "MINUTELY", "SECONDLY") @@ -74,14 +74,16 @@ def __init__(self, smarthome): return for calendar in calendars: + if isinstance(calendar, dict): + calendar=list("{!s}:{!s}".format(k,v) for (k,v) in calendar.items())[0] if ':' in calendar and 'http' != calendar[:4]: - name, sep, cal = calendar.partition(':') - self.logger.info('iCal: Registering online calendar {0} ({1})'.format(name, cal)) - self._ical_aliases[name] = cal - calendar = cal + name, _, cal = calendar.partition(':') + calendar = cal.strip() + self.logger.info('Registering calendar {} with alias {}.'.format(calendar, name)) + self._ical_aliases[name.strip()] = calendar else: - self.logger.info('iCal: Registering calendar {0}'.format(calendar)) - + self.logger.info('Registering calendar {} without alias.'.format(calendar)) + calendar = calendar.strip() self._icals[calendar] = self._read_events(calendar) smarthome.scheduler.add('iCalUpdate', self._update_items, cron='* * * *', prio=5) @@ -95,7 +97,7 @@ def stop(self): def parse_item(self, item): if self.has_iattr(item.conf, 'ical_calendar'): - uri = self.get_iattr_value(item.conf, 'ical_calendar') + uri = self.get_iattr_value(item.conf, 'ical_calendar').strip() if uri in self._ical_aliases: uri = self._ical_aliases[uri] @@ -149,7 +151,7 @@ def _update_items(self): def _update_calendars(self): for uri in self._icals: self._icals[uri] = self._read_events(uri) - self.logger.debug('iCal: Updated calendar {0}'.format(uri)) + self.logger.debug('Updated calendar {0}'.format(uri)) if len(self._icals): self._update_items() @@ -193,8 +195,8 @@ def _filter_events(self, events, delta=1, offset=0, prio=1): def _read_events(self, ics, username=None, password=None, prio=1, verify=True): if ics.startswith('http'): - name = ics[ics.rfind("/")+1:] - name = '{}.{}'.format(name.split(".")[0], name.split(".")[1]) + _, _, cal = ics.partition('//') + name = '{}.ics'.format(cal.split('/')[0].replace('.', '_')) for entry in self._ical_aliases: name = '{}.ics'.format(entry) if ics == self._ical_aliases[entry] else name filename = '{}/{}'.format(self._directory, name) @@ -242,16 +244,16 @@ def _parse_ical(self, ical, ics, prio): event = {'EXDATES': []} elif line == 'END:VEVENT': if 'UID' not in event: - self.logger.warning("iCal: problem parsing {0} no UID for event: {1}".format(ics, event)) + self.logger.warning("problem parsing {0} no UID for event: {1}".format(ics, event)) continue if 'SUMMARY' not in event: - self.logger.warning("iCal: problem parsing {0} no SUMMARY for UID: {1}".format(ics, event['UID'])) + self.logger.warning("problem parsing {0} no SUMMARY for UID: {1}".format(ics, event['UID'])) continue if 'DTSTART' not in event: - self.logger.warning("iCal: problem parsing {0} no DTSTART for UID: {1}".format(ics, event['UID'])) + self.logger.warning("problem parsing {0} no DTSTART for UID: {1}".format(ics, event['UID'])) continue if 'DTEND' not in event: - self.logger.warning("iCal: Warning in parsing {0} no DTEND for UID: {1}. Setting DTEND from DTSTART".format(ics, event['UID'])) + self.logger.warning("Warning in parsing {0} no DTEND for UID: {1}. Setting DTEND from DTSTART".format(ics, event['UID'])) # Set end to start time: event['DTEND'] = event['DTSTART'] continue @@ -262,7 +264,7 @@ def _parse_ical(self, ical, ics, prio): events[event['UID']]['EXDATES'].append(event['RECURRENCE-ID']) events[event['UID'] + event['DTSTART'].isoformat()] = event else: - self.logger.warning("iCal: problem parsing {0} duplicate UID: {1} ({2})".format(ics, event['UID'], event['SUMMARY'])) + self.logger.warning("problem parsing {0} duplicate UID: {1} ({2})".format(ics, event['UID'], event['SUMMARY'])) continue else: events[event['UID']] = event @@ -295,13 +297,13 @@ def _parse_ical(self, ical, ics, prio): def _parse_rrule(self, event, tzinfo): rrule = dict(a.split('=') for a in event['RRULE'].upper().split(';')) - self.logger.debug("iCal: Rrule {0}".format(rrule)) + self.logger.debug("Rrule {0}".format(rrule)) args = {} if 'FREQ' not in rrule: - self.logger.debug("iCal: Rrule has no frequency") + self.logger.debug("Rrule has no frequency") return freq = self.FREQ.index(rrule['FREQ']) - self.logger.debug("iCal: Frequency: {0}".format(freq)) + self.logger.debug("Frequency: {0}".format(freq)) del(rrule['FREQ']) if 'DTSTART' not in rrule: rrule['DTSTART'] = event['DTSTART'] @@ -338,5 +340,4 @@ def _parse_rrule(self, event, tzinfo): for par in rrule: args[par.lower()] = rrule[par] - self.logger.debug("Args: {0}".format(args)) return dateutil.rrule.rrule(freq, **args) diff --git a/ical/plugin.yaml b/ical/plugin.yaml index 888891953..2f1a93f7b 100755 --- a/ical/plugin.yaml +++ b/ical/plugin.yaml @@ -20,7 +20,7 @@ plugin: # documentation: https://github.com/smarthomeNG/smarthome/wiki/CLI-Plugin # url of documentation (wiki) page support: https://knx-user-forum.de/forum/supportforen/smarthome-py/1352089-support-thread-zum-ical-plugin - version: 1.5.1 # Plugin version + version: 1.5.2 # Plugin version sh_minversion: 1.5 # minimum shNG version to use this plugin # sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) multi_instance: False # plugin supports multi instance diff --git a/ical/user_doc.rst b/ical/user_doc.rst old mode 100644 new mode 100755 index ac354c517..4a837775a --- a/ical/user_doc.rst +++ b/ical/user_doc.rst @@ -25,17 +25,17 @@ Kalenderdateien können in der etc/plugin.yaml als "Alias" hinterlegt werden. Au ical: plugin_name: ical #calendars: - # - example:http://server.com/test.ics - #cycle: 3600 + # - example:http://server.com/test.ics + #cycle: 3600 Außerdem können Kalender Items zugewiesen werden, indem das entsprechende Attribut im gewünschten Item angegeben wird. Das Item wird auf wahr gesetzt, sobald aktuell ein Event stattfindet. - + .. code-block:: yaml # items/item.yaml calendaritem: type: bool - ical_calendar: test_downloaded.ics + ical_calendar: test_downloaded.ics Funktionen @@ -61,8 +61,8 @@ Beispiel # b) Reference a calendar defined in the etc/plugin.yaml. Query tomorrow # The second found entry for an event should be considered. holidays = sh.ical('holidays', delta=0, offset=1, prio=2) - - # c) http(s) file, disabled https verification. + + # c) http(s) file, disabled https verification. holidays = sh.ical('https://cal.server/holidays.ics', verify=false) # Test if there is an entry for today or not. @@ -84,4 +84,4 @@ Beispiel if start.date() == tomorrow: logger.info('Testword calendar entry starts tommorrow') if 'private' in str(cal_class).lower(): - logger.info('Private calendar entry found.') \ No newline at end of file + logger.info('Private calendar entry found.') From d83512794aa7afa6fde13b4b4bd3eb0467504267 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sat, 18 May 2019 15:04:52 +0200 Subject: [PATCH 034/200] re-fix path name for models files --- avdevice/AVDeviceInit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/avdevice/AVDeviceInit.py b/avdevice/AVDeviceInit.py index 56936c424..13383f86b 100755 --- a/avdevice/AVDeviceInit.py +++ b/avdevice/AVDeviceInit.py @@ -719,7 +719,7 @@ def read_commandfile(self): self._specialparse = {} self.logger.debug("Initializing {}: Starting to read file {}. Functions: {}".format( self._name, self._model, self._functions)) - filename = '{}/models/{}.txt'.format(os.path.abspath(os.path.dirname(__file__)), self._model) + filename = '{}/{}.txt'.format(os.path.abspath(os.path.dirname(__file__)), self._model) with open(filename, encoding='utf-8') as commands: zones = [0] From aad79c96329aab901471599cb6b29b01e1e1073d Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sat, 18 May 2019 16:24:14 +0200 Subject: [PATCH 035/200] change item.id() to item.property.name; avoid exception if rule item doesnt exist --- stateengine/README.md | 4 + stateengine/StateEngineAction.py | 38 +- stateengine/StateEngineActions.py | 2 +- stateengine/StateEngineCondition.py | 2 +- stateengine/StateEngineConditionSet.py | 4 +- stateengine/StateEngineEval.py | 14 +- stateengine/StateEngineItem.py | 16 +- stateengine/StateEngineLogger.py | 2 +- stateengine/StateEngineState.py | 10 +- stateengine/StateEngineTools.py | 6 +- stateengine/StateEngineValue.py | 6 +- stateengine/__init__.py | 8 +- stateengine/_pv_1_4_2/README.md | 33 + stateengine/_pv_1_4_2/StateEngineAction.py | 528 +++++++++++++++ stateengine/_pv_1_4_2/StateEngineActions.py | 250 +++++++ .../_pv_1_4_2/StateEngineCliCommands.py | 81 +++ stateengine/_pv_1_4_2/StateEngineCondition.py | 357 ++++++++++ .../_pv_1_4_2/StateEngineConditionSet.py | 118 ++++ .../_pv_1_4_2/StateEngineConditionSets.py | 71 ++ stateengine/_pv_1_4_2/StateEngineCurrent.py | 88 +++ stateengine/_pv_1_4_2/StateEngineDefaults.py | 33 + stateengine/_pv_1_4_2/StateEngineEval.py | 128 ++++ stateengine/_pv_1_4_2/StateEngineFunctions.py | 189 ++++++ stateengine/_pv_1_4_2/StateEngineItem.py | 489 ++++++++++++++ stateengine/_pv_1_4_2/StateEngineLogger.py | 245 +++++++ stateengine/_pv_1_4_2/StateEngineState.py | 193 ++++++ stateengine/_pv_1_4_2/StateEngineTools.py | 234 +++++++ stateengine/_pv_1_4_2/StateEngineValue.py | 219 +++++++ stateengine/_pv_1_4_2/__init__.py | 226 +++++++ stateengine/_pv_1_4_2/autblind_update.sh | 72 +++ stateengine/_pv_1_4_2/plugin.yaml | 523 +++++++++++++++ .../sv_widgets/stateengine.example.html | 52 ++ .../_pv_1_4_2/sv_widgets/stateengine.js | 55 ++ .../sv_widgets/widget_stateengine.html | 19 + stateengine/_pv_1_4_2/user_doc.rst | 23 + stateengine/_pv_1_4_2/user_doc/user_doc1.rst | 53 ++ stateengine/_pv_1_4_2/user_doc/user_doc10.rst | 376 +++++++++++ stateengine/_pv_1_4_2/user_doc/user_doc11.rst | 217 +++++++ stateengine/_pv_1_4_2/user_doc/user_doc2.rst | 23 + stateengine/_pv_1_4_2/user_doc/user_doc3.rst | 65 ++ stateengine/_pv_1_4_2/user_doc/user_doc4.rst | 85 +++ stateengine/_pv_1_4_2/user_doc/user_doc5.rst | 241 +++++++ stateengine/_pv_1_4_2/user_doc/user_doc6.rst | 226 +++++++ stateengine/_pv_1_4_2/user_doc/user_doc7.rst | 48 ++ stateengine/_pv_1_4_2/user_doc/user_doc8.rst | 610 ++++++++++++++++++ stateengine/_pv_1_4_2/user_doc/user_doc9.rst | 323 ++++++++++ .../webif/static/img/plugin_logo.png | Bin 0 -> 21516 bytes .../webif/static/img/plugin_logo.tif | Bin 0 -> 143044 bytes .../_pv_1_4_2/webif/static/img/readme.txt | 6 + .../_pv_1_4_2/webif/templates/index.html | 70 ++ stateengine/plugin.yaml | 13 +- stateengine/user_doc.rst | 22 +- stateengine/user_doc/user_doc10.rst | 0 stateengine/user_doc/user_doc11.rst | 0 stateengine/user_doc/user_doc2.rst | 0 stateengine/user_doc/user_doc4.rst | 0 stateengine/user_doc/user_doc5.rst | 0 stateengine/user_doc/user_doc6.rst | 0 stateengine/user_doc/user_doc7.rst | 0 stateengine/user_doc/user_doc8.rst | 0 stateengine/user_doc/user_doc9.rst | 0 stateengine/webif/static/img/plugin_logo.tif | Bin 62 files changed, 6650 insertions(+), 66 deletions(-) create mode 100755 stateengine/_pv_1_4_2/README.md create mode 100755 stateengine/_pv_1_4_2/StateEngineAction.py create mode 100755 stateengine/_pv_1_4_2/StateEngineActions.py create mode 100755 stateengine/_pv_1_4_2/StateEngineCliCommands.py create mode 100755 stateengine/_pv_1_4_2/StateEngineCondition.py create mode 100755 stateengine/_pv_1_4_2/StateEngineConditionSet.py create mode 100755 stateengine/_pv_1_4_2/StateEngineConditionSets.py create mode 100755 stateengine/_pv_1_4_2/StateEngineCurrent.py create mode 100755 stateengine/_pv_1_4_2/StateEngineDefaults.py create mode 100755 stateengine/_pv_1_4_2/StateEngineEval.py create mode 100755 stateengine/_pv_1_4_2/StateEngineFunctions.py create mode 100755 stateengine/_pv_1_4_2/StateEngineItem.py create mode 100755 stateengine/_pv_1_4_2/StateEngineLogger.py create mode 100755 stateengine/_pv_1_4_2/StateEngineState.py create mode 100755 stateengine/_pv_1_4_2/StateEngineTools.py create mode 100755 stateengine/_pv_1_4_2/StateEngineValue.py create mode 100755 stateengine/_pv_1_4_2/__init__.py create mode 100755 stateengine/_pv_1_4_2/autblind_update.sh create mode 100755 stateengine/_pv_1_4_2/plugin.yaml create mode 100755 stateengine/_pv_1_4_2/sv_widgets/stateengine.example.html create mode 100755 stateengine/_pv_1_4_2/sv_widgets/stateengine.js create mode 100755 stateengine/_pv_1_4_2/sv_widgets/widget_stateengine.html create mode 100755 stateengine/_pv_1_4_2/user_doc.rst create mode 100755 stateengine/_pv_1_4_2/user_doc/user_doc1.rst create mode 100755 stateengine/_pv_1_4_2/user_doc/user_doc10.rst create mode 100755 stateengine/_pv_1_4_2/user_doc/user_doc11.rst create mode 100755 stateengine/_pv_1_4_2/user_doc/user_doc2.rst create mode 100755 stateengine/_pv_1_4_2/user_doc/user_doc3.rst create mode 100755 stateengine/_pv_1_4_2/user_doc/user_doc4.rst create mode 100755 stateengine/_pv_1_4_2/user_doc/user_doc5.rst create mode 100755 stateengine/_pv_1_4_2/user_doc/user_doc6.rst create mode 100755 stateengine/_pv_1_4_2/user_doc/user_doc7.rst create mode 100755 stateengine/_pv_1_4_2/user_doc/user_doc8.rst create mode 100755 stateengine/_pv_1_4_2/user_doc/user_doc9.rst create mode 100755 stateengine/_pv_1_4_2/webif/static/img/plugin_logo.png create mode 100755 stateengine/_pv_1_4_2/webif/static/img/plugin_logo.tif create mode 100755 stateengine/_pv_1_4_2/webif/static/img/readme.txt create mode 100755 stateengine/_pv_1_4_2/webif/templates/index.html mode change 100644 => 100755 stateengine/user_doc/user_doc10.rst mode change 100644 => 100755 stateengine/user_doc/user_doc11.rst mode change 100644 => 100755 stateengine/user_doc/user_doc2.rst mode change 100644 => 100755 stateengine/user_doc/user_doc4.rst mode change 100644 => 100755 stateengine/user_doc/user_doc5.rst mode change 100644 => 100755 stateengine/user_doc/user_doc6.rst mode change 100644 => 100755 stateengine/user_doc/user_doc7.rst mode change 100644 => 100755 stateengine/user_doc/user_doc8.rst mode change 100644 => 100755 stateengine/user_doc/user_doc9.rst mode change 100644 => 100755 stateengine/webif/static/img/plugin_logo.tif diff --git a/stateengine/README.md b/stateengine/README.md index 2b14a34ee..6997f5888 100755 --- a/stateengine/README.md +++ b/stateengine/README.md @@ -13,6 +13,10 @@ Copy stateengine.example.html from the sv_widgets folder to your smartvisu/dropi http://URL/index.php?page=widgets/stateengine.example ## Changelog +### v1.5.0 +* Use new item property feature +* Fix exception if rules item does not exist + ### v1.4.2 * Added and fixed documentation (onkelandy) * Added a smartvisu widget (onkelandy) diff --git a/stateengine/StateEngineAction.py b/stateengine/StateEngineAction.py index 1b586e8bb..3e74b818f 100755 --- a/stateengine/StateEngineAction.py +++ b/stateengine/StateEngineAction.py @@ -176,15 +176,15 @@ def complete(self, item_state): if self.__item is not None: self.__value.set_cast(self.__item.cast) self.__mindelta.set_cast(self.__item.cast) - self._scheduler_name = self.__item.id() + "-SeItemDelayTimer" - if self._abitem.id == self.__item.id(): + self._scheduler_name = self.__item.property.name + "-SeItemDelayTimer" + if self._abitem.id == self.__item.property.name: self.__caller += '_self' # Write action to logger def write_to_logger(self): SeActionBase.write_to_logger(self) if self.__item is not None: - self._log_debug("item: {0}", self.__item.id()) + self._log_debug("item: {0}", self.__item.property.name) self.__mindelta.write_to_logger() self.__value.write_to_logger() @@ -212,10 +212,10 @@ def _execute(self, actionname: str, repeat_text: str = ""): delta = float(abs(self.__item() - value)) if delta < mindelta: text = "{0}: Not setting '{1}' to '{2}' because delta '{3:.2}' is lower than mindelta '{4}'" - self._log_debug(text, actionname, self.__item.id(), value, delta, mindelta) + self._log_debug(text, actionname, self.__item.property.name, value, delta, mindelta) return - self._log_debug("{0}: Set '{1}' to '{2}'.{3}", actionname, self.__item.id(), value, repeat_text) + self._log_debug("{0}: Set '{1}' to '{2}'.{3}", actionname, self.__item.property.name, value, repeat_text) # noinspection PyCallingNonCallable self.__item(value, caller=self.__caller) @@ -249,7 +249,7 @@ def write_to_logger(self): def _execute(self, actionname: str, repeat_text: str = ""): self._log_info("{0}: Setting values by attribute '{1}'.{2}", actionname, self.__byattr, repeat_text) for item in self.items.find_items(self.__byattr): - self._log_info("\t{0} = {1}", item.id(), item.conf[self.__byattr]) + self._log_info("\t{0} = {1}", item.property.name, item.conf[self.__byattr]) item(item.conf[self.__byattr], caller=StateEngineDefaults.plugin_identification) @@ -378,13 +378,13 @@ def complete(self, item_state): if self.__item is not None: self.__value.set_cast(self.__item.cast) self.__mindelta.set_cast(self.__item.cast) - self._scheduler_name = self.__item.id() + "-SeItemDelayTimer" + self._scheduler_name = self.__item.property.name + "-SeItemDelayTimer" # Write action to logger def write_to_logger(self): SeActionBase.write_to_logger(self) if self.__item is not None: - self._log_debug("item: {0}", self.__item.id()) + self._log_debug("item: {0}", self.__item.property.name) self.__mindelta.write_to_logger() self.__value.write_to_logger() self._log_debug("force update: yes") @@ -414,34 +414,34 @@ def _execute(self, actionname: str, repeat_text: str = ""): delta = float(abs(self.__item() - value)) if delta < mindelta: text = "{0}: Not setting '{1}' to '{2}' because delta '{3:.2}' is lower than mindelta '{4}'" - self._log_debug(text, actionname, self.__item.id(), value, delta, mindelta) + self._log_debug(text, actionname, self.__item.property.name, value, delta, mindelta) return # Set to different value first ("force") if self.__item() == value: if self.__item._type == 'bool': - self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.id(), not value) + self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.name, not value) self.__item(not value, caller=StateEngineDefaults.plugin_identification) elif self.__item._type == 'str': if value != '': - self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.id(), '') + self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.name, '') self.__item('', caller=StateEngineDefaults.plugin_identification) else: - self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.id(), '-') + self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.name, '-') self.__item('-', caller=StateEngineDefaults.plugin_identification) elif self.__item._type == 'num': if value != 0: - self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.id(), 0) + self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.name, 0) self.__item(0, caller=StateEngineDefaults.plugin_identification) else: - self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.id(), 1) + self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.name, 1) self.__item(1, caller=StateEngineDefaults.plugin_identification) else: self._log_warning("{0}: Force not implemented for item type '{1}'", actionname, self.__item._type) else: self._log_debug("{0}: New value differs from old value, no force required.", actionname) - self._log_debug("{0}: Set '{1}' to '{2}'.{3}", actionname, self.__item.id(), value, repeat_text) + self._log_debug("{0}: Set '{1}' to '{2}'.{3}", actionname, self.__item.property.name, value, repeat_text) # noinspection PyCallingNonCallable self.__item(value, caller=StateEngineDefaults.plugin_identification) @@ -506,19 +506,19 @@ def suspend_get_value(self, value): if manual_item is None: raise ValueError("Action {0}: Manual item '{1}' not found!", self._name, manual) - return [suspend_item, manual_item.id()] + return [suspend_item, manual_item.property.name] def suspend_execute(self): suspend_item = self.__value[0] if self._abitem.get_update_trigger_source() == self.__value[1]: # triggered by manual-item: Update suspend item if suspend_item(): - self._log_debug("Set '{0}' to '{1}' (Force)", suspend_item.id(), False) + self._log_debug("Set '{0}' to '{1}' (Force)", suspend_item.property.name, False) suspend_item(False) - self._log_debug("Set '{0}' to '{1}'.", suspend_item.id(), True) + self._log_debug("Set '{0}' to '{1}'.", suspend_item.property.name, True) suspend_item(True) else: - self._log_debug("Leaving '{0}' untouched.", suspend_item.id()) + self._log_debug("Leaving '{0}' untouched.", suspend_item.property.name) # determine remaining suspend time and write to variable item.suspend_remaining suspend_time = self._abitem.get_variable("item.suspend_time") diff --git a/stateengine/StateEngineActions.py b/stateengine/StateEngineActions.py index fd9679d72..073684df6 100755 --- a/stateengine/StateEngineActions.py +++ b/stateengine/StateEngineActions.py @@ -221,7 +221,7 @@ def complete(self, item_state): try: self.__actions[name].complete(item_state) except ValueError as ex: - raise ValueError("State '{0}', Action '{1}': {2}".format(item_state.id(), name, str(ex))) + raise ValueError("State '{0}', Action '{1}': {2}".format(item_state.property.name, name, str(ex))) # Execute all actions # is_repeat: Inidicate if this is a repeated action without changing the state diff --git a/stateengine/StateEngineCondition.py b/stateengine/StateEngineCondition.py index ba7090d8c..cf6e46036 100755 --- a/stateengine/StateEngineCondition.py +++ b/stateengine/StateEngineCondition.py @@ -173,7 +173,7 @@ def write_to_logger(self): if self.__error is not None: self._log_debug("error: {0}", self.__error) if self.__item is not None: - self._log_debug("item: {0}", self.__item.id()) + self._log_debug("item: {0}", self.__item.property.name) if self.__eval is not None: self._log_debug("eval: {0}", StateEngineTools.get_eval_name(self.__eval)) self.__value.write_to_logger() diff --git a/stateengine/StateEngineConditionSet.py b/stateengine/StateEngineConditionSet.py index 4e1a970a0..de2364ce1 100755 --- a/stateengine/StateEngineConditionSet.py +++ b/stateengine/StateEngineConditionSet.py @@ -76,7 +76,7 @@ def update(self, item, grandparent_item): self.__conditions[name].set(func, grandparent_item.conf[attribute]) except ValueError as ex: text = "Item '{0}', Attribute '{1}': {2}" - raise ValueError(text.format(grandparent_item.id(), attribute, str(ex))) + raise ValueError(text.format(grandparent_item.property.name, attribute, str(ex))) # Check the condition set, optimize and complete it # item_state: item to read from @@ -90,7 +90,7 @@ def complete(self, item_state): continue except ValueError as ex: text = "State '{0}', Condition Set '{1}', Condition '{2}': {3}" - raise ValueError(text.format(item_state.id(), self.name, name, str(ex))) + raise ValueError(text.format(item_state.property.name, self.name, name, str(ex))) # Remove incomplete conditions for name in conditions_to_remove: diff --git a/stateengine/StateEngineEval.py b/stateengine/StateEngineEval.py index f9a738dc3..a2575553f 100755 --- a/stateengine/StateEngineEval.py +++ b/stateengine/StateEngineEval.py @@ -75,26 +75,28 @@ def get_variable(self, varname): # Return the absolute id of an item related to the StateEngine Object Item # item_id: Relative id of item whose absolute id should be returned # - # See describtion if StateEngineItem.SeItem.return_item for details + # See description of StateEngineItem.SeItem.return_item for details def get_relative_itemid(self, subitem_id): self._log_debug("Executing method 'get_relative_itemid({0})'", subitem_id) try: item = self._abitem.return_item(subitem_id) - return item.id() + return item.property.name except Exception as ex: - self._log_exception(ex) + self.__logger.warning("Problem evaluating name of {}: {}".format(subitem_id, ex)) + #self._log_exception(ex) # Return the value of an item related to the StateEngine Object Item # item_id: Relative id of item whose value should be returned # - # See describtion if StateEngineItem.SeItem.return_item for details + # See description of StateEngineItem.SeItem.return_item for details def get_relative_itemvalue(self, subitem_id): self._log_debug("Executing method 'get_relative_itemvalue({0})'", subitem_id) try: item = self._abitem.return_item(subitem_id) return item() except Exception as ex: - self._log_exception(ex) + self.__logger.warning("Problem evaluating value of {}: {}".format(subitem_id, ex)) + #self._log_exception(ex) # Insert end time of suspension into text # suspend_item_id: Item whose age is used to determine how much of the suspend time is already over @@ -110,7 +112,7 @@ def insert_suspend_time(self, suspend_item_id, suspend_text="Ausgesetzt bis %X") if suspend_item is None: text = "Eval-Method 'insert_suspend_time': Suspend Item {0} not found!" raise ValueError(text.format(suspend_item_id)) - self._log_debug("Suspend item is {0}", suspend_item.id()) + self._log_debug("Suspend item is {0}", suspend_item.property.name) suspend_over = suspend_item.age() self._log_debug("Current suspend age: {0}", suspend_over) suspend_remaining = suspend_time - suspend_over diff --git a/stateengine/StateEngineItem.py b/stateengine/StateEngineItem.py index 788e3ce69..4e6031d68 100755 --- a/stateengine/StateEngineItem.py +++ b/stateengine/StateEngineItem.py @@ -55,7 +55,7 @@ def __init__(self, smarthome, item): self.shtime = Shtime.get_instance() self.__sh = smarthome self.__item = item - self.__id = self.__item.id() + self.__id = self.__item.property.name self.__name = str(self.__item) # initialize logging self.__logger = SeLogger.create(self.__item) @@ -105,7 +105,7 @@ def __init__(self, smarthome, item): try: self.__states.append(StateEngineState.SeState(self, item_state)) except ValueError as ex: - self.__logger.error("Ignoring state {0} because: {1}".format(item_state.id(), str(ex))) + self.__logger.error("Ignoring state {0} because: {1}".format(item_state.property.name, str(ex))) if len(self.__states) == 0: raise ValueError("{0}: No states defined!".format(self.id)) @@ -138,25 +138,25 @@ def update_state(self, item, caller=None, source=None, dest=None): self.__logger.update_logfile() self.__logger.header("Update state of item {0}".format(self.__name)) if caller: - item_id = item.id() if item is not None else "(no item)" + item_id = item.property.name if item is not None else "(no item)" self.__logger.debug("Update triggered by {0} (item={1} source={2} dest={3})", caller, item_id, source, dest) # Find out what initially caused the update to trigger if the caller is "Eval" orig_caller, orig_source, orig_item = StateEngineTools.get_original_caller(self.sh, caller, source, item) if orig_caller != caller: text = "Eval initially triggered by {0} (item={1} source={2})" - self.__logger.debug(text, orig_caller, orig_item.id(), orig_source) + self.__logger.debug(text, orig_caller, orig_item.property.name, orig_source) if orig_caller == StateEngineDefaults.plugin_identification or caller == StateEngineDefaults.plugin_identification: self.__logger.debug("Ignoring changes from {0}", StateEngineDefaults.plugin_identification) self.__update_in_progress = False return - self.__update_trigger_item = item.id() + self.__update_trigger_item = item.property.name self.__update_trigger_caller = caller self.__update_trigger_source = source self.__update_trigger_dest = dest - self.__update_original_item = orig_item.id() + self.__update_original_item = orig_item.property.name self.__update_original_caller = orig_caller self.__update_original_source = orig_source @@ -351,9 +351,9 @@ def __write_to_log(self): # log laststate settings if self.__laststate_item_id is not None: - self.__logger.info("Item 'Laststate Id': {0}", self.__laststate_item_id.id()) + self.__logger.info("Item 'Laststate Id': {0}", self.__laststate_item_id.property.name) if self.__laststate_item_name is not None: - self.__logger.info("Item 'Laststate Name': {0}", self.__laststate_item_name.id()) + self.__logger.info("Item 'Laststate Name': {0}", self.__laststate_item_name.property.name) # log states for state in self.__states: diff --git a/stateengine/StateEngineLogger.py b/stateengine/StateEngineLogger.py index 132167646..ab3e77b9a 100755 --- a/stateengine/StateEngineLogger.py +++ b/stateengine/StateEngineLogger.py @@ -95,7 +95,7 @@ def create(item): # item: item for which the detailed log is (used as part of file name) def __init__(self, item): self.logger = logging.getLogger(__name__) - self.__section = item.id().replace(".", "_").replace("/", "") + self.__section = item.property.name.replace(".", "_").replace("/", "") self.__indentlevel = 0 self.__date = None self.__filename = "" diff --git a/stateengine/StateEngineState.py b/stateengine/StateEngineState.py index adc3ca409..d372c064a 100755 --- a/stateengine/StateEngineState.py +++ b/stateengine/StateEngineState.py @@ -47,7 +47,7 @@ def text(self): def __init__(self, abitem, item_state): super().__init__(abitem) self.__item = item_state - self.__id = self.__item.id() + self.__id = self.__item.property.name self.__name = "" self.__text = StateEngineValue.SeValue(self._abitem, "State Name", False, "str") self.__conditions = StateEngineConditionSets.SeConditionSets(self._abitem) @@ -55,7 +55,7 @@ def __init__(self, abitem, item_state): self.__actions_enter = StateEngineActions.SeActions(self._abitem) self.__actions_stay = StateEngineActions.SeActions(self._abitem) self.__actions_leave = StateEngineActions.SeActions(self._abitem) - self._log_info("Init state {}", item_state.id()) + self._log_info("Init state {}", item_state.property.name) self._log_increase_indent() try: self.__fill(self.__item, 0) @@ -136,7 +136,7 @@ def run_leave(self, allow_item_repeat: bool): # abitem_object: Related SeItem instance for later determination of current age and current delay def __fill(self, item_state, recursion_depth): if recursion_depth > 5: - self._log_error("{0}/{1}: too many levels of 'use'", self.id, item_state.id()) + self._log_error("{0}/{1}: too many levels of 'use'", self.id, item_state.property.name) return # Import data from other item if attribute "use" is found @@ -146,7 +146,7 @@ def __fill(self, item_state, recursion_depth): if use_item is not None: self.__fill(use_item, recursion_depth + 1) else: - self._log_error("{0}: Referenced item '{1}' not found!", item_state.id(), item_state.conf["se_use"]) + self._log_error("{0}: Referenced item '{1}' not found!", item_state.property.name, item_state.conf["se_use"]) # Get action sets and condition sets parent_item = item_state.return_parent() @@ -177,7 +177,7 @@ def __fill(self, item_state, recursion_depth): # if an item name is given, or if we do not have a name after returning from all recursions, # use item name as state name - if str(item_state) != item_state.id() or (self.__name == "" and recursion_depth == 0): + if str(item_state) != item_state.property.name or (self.__name == "" and recursion_depth == 0): self.__name = str(item_state) if "se_name" in item_state.conf: self.__text.set_from_attr(item_state, "se_name", self.__text.get(None)) diff --git a/stateengine/StateEngineTools.py b/stateengine/StateEngineTools.py index 1b0bfeec3..21cebd1dd 100755 --- a/stateengine/StateEngineTools.py +++ b/stateengine/StateEngineTools.py @@ -30,9 +30,9 @@ # child_id: Id of child item to search (without prefixed id of "item") # returns: child item if found, otherwise None def get_child_item(item, child_id): - search_id = item.id() + "." + child_id + search_id = item.property.name + "." + child_id for child in item.return_children(): - if child.id() == search_id: + if child.property.name == search_id: return child return None @@ -41,7 +41,7 @@ def get_child_item(item, child_id): # item: Item for which the last part of the id should be returned # returns: last part of item id def get_last_part_of_item_id(item): - return item.id().rsplit(".", 1)[1] + return item.property.name.rsplit(".", 1)[1] # cast a value as numeric. Throws ValueError if cast not possible diff --git a/stateengine/StateEngineValue.py b/stateengine/StateEngineValue.py index a380182d3..d23fcb7e6 100755 --- a/stateengine/StateEngineValue.py +++ b/stateengine/StateEngineValue.py @@ -132,7 +132,7 @@ def write_to_logger(self): if self.__value is not None: self._log_debug("{0}: {1}", self.__name, self.__value) elif self.__item is not None: - self._log_debug("{0} from item: {1}", self.__name, self.__item.id()) + self._log_debug("{0} from item: {1}", self.__name, self.__item.property.name) elif self.__eval is not None: self._log_debug("{0} from eval: {1}", self.__name, self.__eval) elif self.__varname is not None: @@ -145,7 +145,7 @@ def get_text(self, prefix=None, suffix=None): if self.__value is not None: value = "{0}: {1}".format(self.__name, self.__value, prefix, suffix) elif self.__item is not None: - value = "{0} from item: {1}".format(self.__name, self.__item.id()) + value = "{0} from item: {1}".format(self.__name, self.__item.property.name) elif self.__eval is not None: value = "{0} from eval: {1}".format(self.__name, self.__eval) elif self.__varname is not None: @@ -203,7 +203,7 @@ def __get_from_item(self): # noinspection PyCallingNonCallable value = self.__item() except Exception as ex: - self._log_info("Problem while reading item '{0}': {1}.", self.__item.id(), str(ex)) + self._log_info("Problem while reading item '{0}': {1}.", self.__item.property.name, str(ex)) return None return self.__do_cast(value) diff --git a/stateengine/__init__.py b/stateengine/__init__.py index 191e5ad6a..2b34210ad 100755 --- a/stateengine/__init__.py +++ b/stateengine/__init__.py @@ -33,7 +33,7 @@ class StateEngine(SmartPlugin): - PLUGIN_VERSION = '1.4.2' + PLUGIN_VERSION = '1.5.0' # Constructor # noinspection PyUnusedLocal,PyMissingConstructor @@ -85,9 +85,9 @@ def __init__(self, sh): # noinspection PyMethodMayBeStatic def parse_item(self, item): if "se_manual_include" in item.conf or "se_manual_exclude" in item.conf: - item._eval = "sh.stateengine_plugin_functions.manual_item_update_eval('" + item.id() + "', caller, source)" + item._eval = "sh.stateengine_plugin_functions.manual_item_update_eval('" + item.property.name + "', caller, source)" elif "se_manual_invert" in item.conf: - item._eval = "not sh." + item.id() + "()" + item._eval = "not sh." + item.property.name + "()" return None @@ -101,7 +101,7 @@ def run(self): ab_item = StateEngineItem.SeItem(self.get_sh(), item) self.__items[ab_item.id] = ab_item except ValueError as ex: - self.logger.error("Item: {0}: {1}".format(item.id(), str(ex))) + self.logger.error("Item: {0}: {1}".format(item.property.name, str(ex))) if len(self.__items) > 0: self.logger.info("Using StateEngine for {} items".format(len(self.__items))) diff --git a/stateengine/_pv_1_4_2/README.md b/stateengine/_pv_1_4_2/README.md new file mode 100755 index 000000000..2b14a34ee --- /dev/null +++ b/stateengine/_pv_1_4_2/README.md @@ -0,0 +1,33 @@ +# StateEngine +Created by i-am-offline + +## Description +Finite state machine plugin for smarthomeNG, previously known as AutoBlind + +## Documentation +For info on the features and detailed setup see the [User Documentation](https://www.smarthomeng.de/user/plugins/stateengine/user_doc.html "Manual") +For info on how to configure the plugin see the [Configuration Documentation](https://www.smarthomeng.de/plugins_doc/config/stateengine "Configuration") + +### smartvisu widget +Copy stateengine.example.html from the sv_widgets folder to your smartvisu/dropins/widgets folder and use the URL in your browser: +http://URL/index.php?page=widgets/stateengine.example + +## Changelog +### v1.4.2 +* Added and fixed documentation (onkelandy) +* Added a smartvisu widget (onkelandy) +* Added conversion script for easy change from autoblind to stateengine plugin + +### v1.4.1 +* Added to official develop repository (onkelandy) +* Renamed to StateEngine (onkelandy) +* Fixed compatibility of logic trigger for SmarthomeNG 1.4+ (onkelandy) +* Changed state condition evaluation to OrderedDict to keep original order (onkelandy) +* Added additional option for manual item called "manual_on" to figure out if item WAS trigger by specific KNX GA (onkelandy) +* Added Webinterface with documentation (german) + +### v1.4.0 +* Make compatible with SmarthomeNG 1.4+ (i-am-offline) + +### before v1.4.0 +* Constant improvements to infinite state machine (complete plugin development by i-am-offline) diff --git a/stateengine/_pv_1_4_2/StateEngineAction.py b/stateengine/_pv_1_4_2/StateEngineAction.py new file mode 100755 index 000000000..3e74b818f --- /dev/null +++ b/stateengine/_pv_1_4_2/StateEngineAction.py @@ -0,0 +1,528 @@ +#!/usr/bin/env python3 +# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab +######################################################################### +# Copyright 2014- Thomas Ernst offline@gmx.net +######################################################################### +# Finite state machine plugin for SmartHomeNG +# +# This plugin is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This plugin is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this plugin. If not, see . +######################################################################### +from . import StateEngineTools +from . import StateEngineEval +from . import StateEngineValue +from . import StateEngineDefaults +import datetime +from lib.shtime import Shtime +from lib.item import Items + + +# Base class from which all action classes are derived +class SeActionBase(StateEngineTools.SeItemChild): + # Cast function for delay + # value: value to cast + @staticmethod + def __cast_delay(value): + if isinstance(value, str): + delay = value.strip() + if delay.endswith('m'): + return int(delay.strip('m')) * 60 + else: + return int(delay) + elif isinstance(value, int): + return value + elif isinstance(value, float): + return int(value) + else: + raise ValueError("Can not cast delay value {0} to int!".format(value)) + + # Initialize the action + # abitem: parent SeItem instance + # name: Name of action + def __init__(self, abitem, name: str): + super().__init__(abitem) + self.shtime = Shtime.get_instance() + self.items = Items.get_instance() + self._name = name + self.__delay = StateEngineValue.SeValue(self._abitem, "delay") + self.__repeat = None + self.__order = StateEngineValue.SeValue(self._abitem, "order", False, "num") + self._scheduler_name = None + + def update_delay(self, value): + self.__delay.set(value) + self.__delay.set_cast(SeActionBase.__cast_delay) + + def update_repeat(self, value): + if self.__repeat is None: + self.__repeat = StateEngineValue.SeValue(self._abitem, "repeat", False, "bool") + self.__repeat.set(value) + + def update_order(self, value): + self.__order.set(value) + + def get_order(self): + return self.__order.get(1) + + # Write action to logger + def write_to_logger(self): + self.__delay.write_to_logger() + if self.__repeat is not None: + self.__repeat.write_to_logger() + self.__order.write_to_logger() + + # Execute action (considering delay, etc) + # is_repeat: Inidicate if this is a repeated action without changing the state + # item_allow_repeat: Is repeating actions generally allowed for the item? + def execute(self, is_repeat: bool, allow_item_repeat: bool): + if not self._can_execute(): + return + + if is_repeat: + if self.__repeat is None: + if allow_item_repeat: + repeat_text = " Repeat allowed by item configuration." + else: + self._log_info("Action '{0}': Repeat denied by item configuration.", self._name) + return + elif self.__repeat.get(): + repeat_text = " Repeat allowed by action configuration." + else: + self._log_info("Action '{0}': Repeat denied by action configuration.", self._name) + return + else: + repeat_text = "" + + plan_next = self._sh.scheduler.return_next(self._scheduler_name) + if plan_next is not None and plan_next > self.shtime.now(): + self._log_info("Action '{0}: Removing previous delay timer '{1}'.", self._name, self._scheduler_name) + self._sh.scheduler.remove(self._scheduler_name) + + delay = 0 if self.__delay.is_empty() else self.__delay.get() + actionname = "Action '{0}'".format(self._name) if delay == 0 else "Delay Timer '{0}'".format( + self._scheduler_name) + if delay == 0: + self._execute(actionname, repeat_text) + elif delay is None: + self._log_warning("Action'{0}: Ignored because of errors while determining the delay!", self._name) + elif delay < 0: + self._log_warning("Action'{0}: Ignored because of delay is negative!", self._name) + else: + self._log_info("Action '{0}: Add {1} second timer '{2}' for delayed execution. {3}", self._name, delay, + self._scheduler_name, repeat_text) + next_run = self.shtime.now() + datetime.timedelta(seconds=delay) + self._sh.scheduler.add(self._scheduler_name, self._execute, value={'actionname': actionname}, next=next_run) + + # set the action based on a set_(action_name) attribute + # value: Value of the set_(action_name) attribute + def update(self, value): + raise NotImplementedError("Class %s doesn't implement update()" % self.__class__.__name__) + + # Complete action + # item_state: state item to read from + def complete(self, item_state): + raise NotImplementedError("Class %s doesn't implement complete()" % self.__class__.__name__) + + # Check if execution is possible + def _can_execute(self): + return True + + # Really execute the action (needs to be implemented in derived classes) + def _execute(self, actionname: str, repeat_text: str = ""): + raise NotImplementedError("Class %s doesn't implement _execute()" % self.__class__.__name__) + + +# Class representing a single "se_set" action +class SeActionSetItem(SeActionBase): + # Initialize the action + # abitem: parent SeItem instance + # name: Name of action + def __init__(self, abitem, name: str): + super().__init__(abitem, name) + self.__item = None + self.__value = StateEngineValue.SeValue(self._abitem, "value") + self.__mindelta = StateEngineValue.SeValue(self._abitem, "mindelta") + self.__caller = StateEngineDefaults.plugin_identification + + # set the action based on a set_(action_name) attribute + # value: Value of the set_(action_name) attribute + def update(self, value): + self.__value.set(value) + + # Complete action + # item_state: state item to read from + def complete(self, item_state): + # missing item in action: Try to find it. + if self.__item is None: + item = StateEngineTools.find_attribute(self._sh, item_state, "se_item_" + self._name) + if item is not None: + self.__item = self._abitem.return_item(item) + + if self.__mindelta.is_empty(): + mindelta = StateEngineTools.find_attribute(self._sh, item_state, "se_mindelta_" + self._name) + if mindelta is not None: + self.__mindelta.set(mindelta) + + if self.__item is not None: + self.__value.set_cast(self.__item.cast) + self.__mindelta.set_cast(self.__item.cast) + self._scheduler_name = self.__item.property.name + "-SeItemDelayTimer" + if self._abitem.id == self.__item.property.name: + self.__caller += '_self' + + # Write action to logger + def write_to_logger(self): + SeActionBase.write_to_logger(self) + if self.__item is not None: + self._log_debug("item: {0}", self.__item.property.name) + self.__mindelta.write_to_logger() + self.__value.write_to_logger() + + # Check if execution is possible + def _can_execute(self): + if self.__item is None: + self._log_info("Action '{0}': No item defined. Ignoring.", self._name) + return False + + if self.__value.is_empty(): + self._log_info("Action '{0}': No value defined. Ignoring.", self._name) + return False + + return True + + # Really execute the action (needs to be implemented in derived classes) + def _execute(self, actionname: str, repeat_text: str = ""): + value = self.__value.get() + if value is None: + return + + if not self.__mindelta.is_empty(): + mindelta = self.__mindelta.get() + # noinspection PyCallingNonCallable + delta = float(abs(self.__item() - value)) + if delta < mindelta: + text = "{0}: Not setting '{1}' to '{2}' because delta '{3:.2}' is lower than mindelta '{4}'" + self._log_debug(text, actionname, self.__item.property.name, value, delta, mindelta) + return + + self._log_debug("{0}: Set '{1}' to '{2}'.{3}", actionname, self.__item.property.name, value, repeat_text) + # noinspection PyCallingNonCallable + self.__item(value, caller=self.__caller) + + +# Class representing a single "se_setbyattr" action +class SeActionSetByattr(SeActionBase): + # Initialize the action + # abitem: parent SeItem instance + # name: Name of action + def __init__(self, abitem, name: str): + super().__init__(abitem, name) + self.__byattr = None + + # set the action based on a set_(action_name) attribute + # value: Value of the set_(action_name) attribute + def update(self, value): + self.__byattr = value + + # Complete action + # item_state: state item to read from + def complete(self, item_state): + self._scheduler_name = self.__byattr + "-SeByAttrDelayTimer" + + # Write action to logger + def write_to_logger(self): + SeActionBase.write_to_logger(self) + if self.__byattr is not None: + self._log_debug("set by attriute: {0}", self.__byattr) + + # Really execute the action + def _execute(self, actionname: str, repeat_text: str = ""): + self._log_info("{0}: Setting values by attribute '{1}'.{2}", actionname, self.__byattr, repeat_text) + for item in self.items.find_items(self.__byattr): + self._log_info("\t{0} = {1}", item.property.name, item.conf[self.__byattr]) + item(item.conf[self.__byattr], caller=StateEngineDefaults.plugin_identification) + + +# Class representing a single "se_trigger" action +class SeActionTrigger(SeActionBase): + # Initialize the action + # abitem: parent SeItem instance + # name: Name of action + def __init__(self, abitem, name: str): + super().__init__(abitem, name) + self.__logic = None + self.__value = None + + # set the action based on a set_(action_name) attribute + # value: Value of the set_(action_name) attribute + def update(self, value): + logic, value = StateEngineTools.partition_strip(value, ":") + self.__logic = logic + self.__value = None if value == "" else value + + # Complete action + # item_state: state item to read from + def complete(self, item_state): + self._scheduler_name = self.__logic + "-SeLogicDelayTimer" + + # Write action to logger + def write_to_logger(self): + SeActionBase.write_to_logger(self) + if self.__logic is not None: + self._log_debug("trigger logic: {0}", self.__logic) + if self.__value is not None: + self._log_debug("value: {0}", self.__value) + + # Really execute the action + def _execute(self, actionname: str, repeat_text: str = ""): + # Trigger logic + self._log_info("{0}: Triggering logic '{1}' using value '{2}'.{3}", actionname, self.__logic, self.__value, repeat_text) + by = StateEngineDefaults.plugin_identification + add_logics = 'logics.{}'.format(self.__logic) if not self.__logic.startswith('logics.') else self.__logic + self._sh.trigger(add_logics, by=by, source=self._name, value=self.__value) + + +# Class representing a single "se_run" action +class SeActionRun(SeActionBase): + # Initialize the action + # abitem: parent SeItem instance + # name: Name of action + def __init__(self, abitem, name: str): + super().__init__(abitem, name) + self.__eval = None + + # set the action based on a set_(action_name) attribute + # value: Value of the set_(action_name) attribute + def update(self, value): + func, value = StateEngineTools.partition_strip(value, ":") + if value == "": + value = func + func = "eval" + + if func == "eval": + self.__eval = value + + # Complete action + # item_state: state item to read from + def complete(self, item_state): + self._scheduler_name = StateEngineTools.get_eval_name(self.__eval) + "-SeRunDelayTimer" + + # Write action to logger + def write_to_logger(self): + SeActionBase.write_to_logger(self) + if self.__eval is not None: + self._log_debug("eval: {0}", StateEngineTools.get_eval_name(self.__eval)) + + # Really execute the action + def _execute(self, actionname: str, repeat_text: str = ""): + if isinstance(self.__eval, str): + # noinspection PyUnusedLocal + sh = self._sh + if "stateengine_eval" in self.__eval: + # noinspection PyUnusedLocal + stateengine_eval = StateEngineEval.SeEval(self._abitem) + try: + eval(self.__eval) + except Exception as ex: + text = "{0}: Problem evaluating '{1}': {2}." + self._log_error(text.format(actionname, StateEngineTools.get_eval_name(self.__eval), str(ex))) + else: + try: + # noinspection PyCallingNonCallable + self.__eval() + except Exception as ex: + text = "{0}: Problem calling '{0}': {1}." + self._log_error(text.format(actionname, StateEngineTools.get_eval_name(self.__eval), str(ex))) + + +# Class representing a single "se_force" action +class SeActionForceItem(SeActionBase): + # Initialize the action + # abitem: parent SeItem instance + # name: Name of action + def __init__(self, abitem, name: str): + super().__init__(abitem, name) + self.__item = None + self.__value = StateEngineValue.SeValue(self._abitem, "value") + self.__mindelta = StateEngineValue.SeValue(self._abitem, "mindelta") + + # set the action based on a set_(action_name) attribute + # value: Value of the set_(action_name) attribute + def update(self, value): + self.__value.set(value) + + # Complete action + # item_state: state item to read from + def complete(self, item_state): + # missing item in action: Try to find it. + if self.__item is None: + item = StateEngineTools.find_attribute(self._sh, item_state, "se_item_" + self._name) + if item is not None: + self.__item = self._abitem.return_item(item) + + if self.__mindelta.is_empty(): + mindelta = StateEngineTools.find_attribute(self._sh, item_state, "se_mindelta_" + self._name) + if mindelta is not None: + self.__mindelta.set(mindelta) + + if self.__item is not None: + self.__value.set_cast(self.__item.cast) + self.__mindelta.set_cast(self.__item.cast) + self._scheduler_name = self.__item.property.name + "-SeItemDelayTimer" + + # Write action to logger + def write_to_logger(self): + SeActionBase.write_to_logger(self) + if self.__item is not None: + self._log_debug("item: {0}", self.__item.property.name) + self.__mindelta.write_to_logger() + self.__value.write_to_logger() + self._log_debug("force update: yes") + + # Check if execution is possible + def _can_execute(self): + if self.__item is None: + self._log_info("Action '{0}': No item defined. Ignoring.", self._name) + return False + + if self.__value.is_empty(): + self._log_info("Action '{0}': No value defined. Ignoring.", self._name) + return False + + return True + + # Really execute the action (needs to be implemented in derived classes) + # noinspection PyProtectedMember + def _execute(self, actionname: str, repeat_text: str = ""): + value = self.__value.get() + if value is None: + return + + if not self.__mindelta.is_empty(): + mindelta = self.__mindelta.get() + # noinspection PyCallingNonCallable + delta = float(abs(self.__item() - value)) + if delta < mindelta: + text = "{0}: Not setting '{1}' to '{2}' because delta '{3:.2}' is lower than mindelta '{4}'" + self._log_debug(text, actionname, self.__item.property.name, value, delta, mindelta) + return + + # Set to different value first ("force") + if self.__item() == value: + if self.__item._type == 'bool': + self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.name, not value) + self.__item(not value, caller=StateEngineDefaults.plugin_identification) + elif self.__item._type == 'str': + if value != '': + self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.name, '') + self.__item('', caller=StateEngineDefaults.plugin_identification) + else: + self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.name, '-') + self.__item('-', caller=StateEngineDefaults.plugin_identification) + elif self.__item._type == 'num': + if value != 0: + self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.name, 0) + self.__item(0, caller=StateEngineDefaults.plugin_identification) + else: + self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.name, 1) + self.__item(1, caller=StateEngineDefaults.plugin_identification) + else: + self._log_warning("{0}: Force not implemented for item type '{1}'", actionname, self.__item._type) + else: + self._log_debug("{0}: New value differs from old value, no force required.", actionname) + + self._log_debug("{0}: Set '{1}' to '{2}'.{3}", actionname, self.__item.property.name, value, repeat_text) + # noinspection PyCallingNonCallable + self.__item(value, caller=StateEngineDefaults.plugin_identification) + + +# Class representing a single "se_special" action +class SeActionSpecial(SeActionBase): + # Initialize the action + # abitem: parent SeItem instance + # name: Name of action + def __init__(self, abitem, name: str): + super().__init__(abitem, name) + self.__special = None + self.__value = None + + # set the action based on a set_(action_name) attribute + # value: Value of the set_(action_name) attribute + def update(self, value): + special, value = StateEngineTools.partition_strip(value, ":") + if special == "suspend": + self.__value = self.suspend_get_value(value) + else: + raise ValueError("Action {0}: Unknown special value '{1}'!".format(self._name, special)) + self.__special = special + + # Complete action + # item_state: state item to read from + def complete(self, item_state): + self._scheduler_name = self.__special + "-SeSpecialDelayTimer" + + # Write action to logger + def write_to_logger(self): + SeActionBase.write_to_logger(self) + self._log_debug("Special Action: {0}", self.__special) + if self.__value is not None: + self._log_debug("value: {0}", self.__value) + + # Really execute the action + def _execute(self, actionname: str, repeat_text: str = ""): + # Trigger logic + self._log_info("{0}: Executing special action '{1}' using value '{2}'.{3}", actionname, self.__special, self.__value, repeat_text) + self._log_increase_indent() + if self.__special == "suspend": + self.suspend_execute() + else: + self._log_decrease_indent() + raise ValueError("{0}: Unknown special value '{1}'!".format(actionname, self.__special)) + self._log_decrease_indent() + + def suspend_get_value(self, value): + if value is None: + raise ValueError("Action {0}: Secial action 'suspend' requires arguments!") + + suspend, manual = StateEngineTools.partition_strip(value, ",") + if suspend is None or manual is None: + raise ValueError("Action {0}: Secial action 'suspend' requires two arguments (separated by a comma)!") + + suspend_item = self._abitem.return_item(suspend) + if suspend_item is None: + raise ValueError("Action {0}: Suspend item '{1}' not found!", self._name, suspend) + + manual_item = self._abitem.return_item(manual) + if manual_item is None: + raise ValueError("Action {0}: Manual item '{1}' not found!", self._name, manual) + + return [suspend_item, manual_item.property.name] + + def suspend_execute(self): + suspend_item = self.__value[0] + if self._abitem.get_update_trigger_source() == self.__value[1]: + # triggered by manual-item: Update suspend item + if suspend_item(): + self._log_debug("Set '{0}' to '{1}' (Force)", suspend_item.property.name, False) + suspend_item(False) + self._log_debug("Set '{0}' to '{1}'.", suspend_item.property.name, True) + suspend_item(True) + else: + self._log_debug("Leaving '{0}' untouched.", suspend_item.property.name) + + # determine remaining suspend time and write to variable item.suspend_remaining + suspend_time = self._abitem.get_variable("item.suspend_time") + suspend_over = suspend_item.age() + suspend_remaining = int(suspend_time - suspend_over + 0.5) # adding 0.5 causes round up ... + self._abitem.set_variable("item.suspend_remaining", suspend_remaining) + self._log_debug("Updated variable 'item.suspend_remaining' to {0}".format(suspend_remaining)) diff --git a/stateengine/_pv_1_4_2/StateEngineActions.py b/stateengine/_pv_1_4_2/StateEngineActions.py new file mode 100755 index 000000000..073684df6 --- /dev/null +++ b/stateengine/_pv_1_4_2/StateEngineActions.py @@ -0,0 +1,250 @@ +#!/usr/bin/env python3 +# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab +######################################################################### +# Copyright 2014- Thomas Ernst offline@gmx.net +######################################################################### +# Finite state machine plugin for SmartHomeNG +# +# This plugin is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This plugin is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this plugin. If not, see . +######################################################################### +from . import StateEngineAction +from . import StateEngineTools + + +# Class representing a list of actions +class SeActions(StateEngineTools.SeItemChild): + # Initialize the set of actions + # abitem: parent SeItem instance + def __init__(self, abitem): + super().__init__(abitem) + self.__actions = {} + self.__unassigned_delays = {} + self.__unassigned_repeats = {} + self.__unassigned_orders = {} + + # Return number of actions in list + def count(self): + return len(self.__actions) + + # update action + # attribute: name of attribute that defines action + # value: value of the attribute + def update(self, attribute, value): + # Split attribute in function and action name + func, name = StateEngineTools.partition_strip(attribute, "_") + try: + if func == "se_delay": + # set delay + if name not in self.__actions: + # If we do not have the action yet (delay-attribute before action-attribute), ... + self.__unassigned_delays[name] = value + else: + self.__actions[name].update_delay(value) + return + elif func == "se_repeat": + # set repeat + if name not in self.__actions: + # If we do not have the action yet (repeat-attribute before action-attribute), ... + self.__unassigned_repeats[name] = value + else: + self.__actions[name].update_repeat(value) + return + elif func == "se_order": + # set order + if name not in self.__actions: + # If we do not have the action yet (order-attribute before action-attribute), ... + self.__unassigned_orders[name] = value + else: + self.__actions[name].update_order(value) + return + elif func == "se_action": # and name not in self.__actions: + self.__handle_combined_action_attribute(name, value) + elif self.__ensure_action_exists(func, name): + # update action + self.__actions[name].update(value) + except ValueError as ex: + if name in self.__actions: + del self.__actions[name] + self._log_warning("Ignoring action {0} because: {1} (2)".format(attribute, str(ex))) + #raise ValueError("Action {0}: {1}".format(attribute, str(ex))) + + # ensure that action exists and create if missing + # func: action function + # name: action name + def __ensure_action_exists(self, func, name): + # Check if action exists + if name in self.__actions: + return True + + # Create action depending on function + if func == "se_set": + action = StateEngineAction.SeActionSetItem(self._abitem, name) + elif func == "se_force": + action = StateEngineAction.SeActionForceItem(self._abitem, name) + elif func == "se_byattr": + action = StateEngineAction.SeActionSetByattr(self._abitem, name) + elif func == "se_trigger": + action = StateEngineAction.SeActionTrigger(self._abitem, name) + elif func == "se_run": + action = StateEngineAction.SeActionRun(self._abitem, name) + elif func == "se_special": + action = StateEngineAction.SeActionSpecial(self._abitem, name) + else: + return False + + if name in self.__unassigned_delays: + action.update_delay(self.__unassigned_delays[name]) + del self.__unassigned_delays[name] + + if name in self.__unassigned_repeats: + action.update_repeat(self.__unassigned_repeats[name]) + del self.__unassigned_repeats[name] + + if name in self.__unassigned_orders: + action.update_order(self.__unassigned_orders[name]) + del self.__unassigned_orders[name] + + self.__actions[name] = action + return True + + def __handle_combined_action_attribute(self, name, value_list): + # value_list needs to be string or list + if isinstance(value_list, str): + value_list = [value_list, ] + elif not isinstance(value_list, list): + raise ValueError("Attribute 'se_action_{0}': Value must be a string or a list!".format(name)) + + # parse parameters + parameter = {'function': None, 'force': None, 'repeat': None, 'delay': 0, 'order': None} + for entry in value_list: + key, val = StateEngineTools.partition_strip(entry, ":") + if key == "function": + parameter[key] = StateEngineTools.cast_str(val) + elif key == "force": + parameter[key] = StateEngineTools.cast_bool(val) + else: + parameter[key] = val + parameter['action'] = name + + # function given and valid? + if parameter['function'] is None: + raise ValueError("Attribute 'se_action_{0}: Parameter 'function' must be set!".format(name)) + if parameter['function'] not in ('set', 'force', 'run', 'byattr', 'trigger', 'special'): + raise ValueError("Attribute 'se_action_{0}: Invalid value '{1}' for parameter 'function'!".format(name, parameter['function'])) + + # handle force + if parameter['force'] is not None: + # Parameter force is supported only for type "set" and type "force" + if parameter['function'] != "set" and parameter['function'] != "force": + self._log_warning("Attribute 'se_action_{0}': Parameter 'force' not supported for function '{1}'".format(name, parameter['function'])) + elif parameter['force'] and parameter['function'] == "set": + # Convert type "set" with force=True to type "force" + self._log_info("Attribute 'se_action_{0}': Parameter 'function' changed from 'set' to 'force', because parameter 'force' is 'True'!".format(name)) + parameter['function'] = "force" + elif not parameter['force'] and parameter['function'] == "force": + # Convert type "force" with force=False to type "set" + self._log_info("Attribute 'se_action_{0}': Parameter 'function' changed from 'force' to 'set', because parameter 'force' is 'False'!".format(name)) + parameter['function'] = "set" + + # create action based on function + exists = False + try: + if parameter['function'] == "set": + if self.__ensure_action_exists("se_set", name): + self.__raise_missing_parameter_error(parameter, 'to') + self.__actions[name].update(parameter['to']) + exists = True + elif parameter['function'] == "force": + if self.__ensure_action_exists("se_force", name): + self.__raise_missing_parameter_error(parameter, 'to') + self.__actions[name].update(parameter['to']) + exists = True + elif parameter['function'] == "run": + if self.__ensure_action_exists("se_run", name): + self.__raise_missing_parameter_error(parameter, 'eval') + self.__actions[name].update(parameter['eval']) + exists = True + elif parameter['function'] == "byattr": + if self.__ensure_action_exists("se_byattr", name): + self.__raise_missing_parameter_error(parameter, 'attribute') + self.__actions[name].update(parameter['attribute']) + exists = True + elif parameter['function'] == "trigger": + if self.__ensure_action_exists("se_trigger", name): + self.__raise_missing_parameter_error(parameter, 'logic') + if 'value' in parameter and parameter['value'] is not None: + self.__actions[name].update(parameter['logic'] + ':' + parameter['value']) + else: + self.__actions[name].update(parameter['logic']) + exists = True + elif parameter['function'] == "special": + if self.__ensure_action_exists("se_special", name): + self.__raise_missing_parameter_error(parameter, 'value') + self.__actions[name].update(parameter['value']) + exists = True + except ValueError as ex: + exists = False + if name in self.__actions: + del self.__actions[name] + self._log_warning("Ignoring action {0} because: {1}".format(name, str(ex))) + + + # add additional parameters + if exists: + if parameter['repeat'] is not None: + self.__actions[name].update_repeat(parameter['repeat']) + if parameter['delay'] != 0: + self.__actions[name].update_delay(parameter['delay']) + if parameter['order'] is not None: + self.__actions[name].update_order(parameter['order']) + + # noinspection PyMethodMayBeStatic + def __raise_missing_parameter_error(self, parameter, param_name): + if param_name not in parameter or parameter[param_name] is None: + raise ValueError("Attribute 'se_action_{0}: Parameter '{1}' must be set for function '{2}'!".format(parameter['action'], param_name, parameter['function'])) + + # Check the actions optimize and complete them + # item_state: item to read from + def complete(self, item_state): + for name in self.__actions: + try: + self.__actions[name].complete(item_state) + except ValueError as ex: + raise ValueError("State '{0}', Action '{1}': {2}".format(item_state.property.name, name, str(ex))) + + # Execute all actions + # is_repeat: Inidicate if this is a repeated action without changing the state + # item_allow_repeat: Is repeating actions generally allowed for the item? + # additional_actions: SeActions-Instance containing actions which should be executed, too + def execute(self, is_repeat: bool, allow_item_repeat: bool, additional_actions=None): + actions = [] + for name in self.__actions: + actions.append((self.__actions[name].get_order(), self.__actions[name])) + if additional_actions is not None: + for name in additional_actions.__actions: + actions.append((additional_actions.__actions[name].get_order(), additional_actions.__actions[name])) + for order, action in sorted(actions, key=lambda x: x[0]): + action.execute(is_repeat, allow_item_repeat) + + # log all actions + def write_to_logger(self): + actions = [] + for name in self.__actions: + actions.append((self.__actions[name].get_order(), self.__actions[name])) + for order, action in sorted(actions, key=lambda x: x[0]): + # noinspection PyProtectedMember + self._log_info("Action '{0}':", action._name) + self._log_increase_indent() + action.write_to_logger() + self._log_decrease_indent() diff --git a/stateengine/_pv_1_4_2/StateEngineCliCommands.py b/stateengine/_pv_1_4_2/StateEngineCliCommands.py new file mode 100755 index 000000000..501bbf2a7 --- /dev/null +++ b/stateengine/_pv_1_4_2/StateEngineCliCommands.py @@ -0,0 +1,81 @@ +#!/usr/bin/env python3 +# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab +######################################################################### +# Copyright 2014- Thomas Ernst offline@gmx.net +######################################################################### +# Finite state machine plugin for SmartHomeNG +# +# This plugin is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This plugin is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this plugin. If not, see . +######################################################################### +import logging +# noinspection PyUnresolvedReferences +from lib.model.smartplugin import SmartPlugin +from lib.plugin import Plugins +from bin.smarthome import VERSION + + +class SeCliCommands: + def __init__(self, smarthome, items, logger): + self.__items = items + self._sh = smarthome + self.logger = logger + self.plugins = Plugins.get_instance() + + + # Add additional cli commands if cli is active (and functionality to add own cli commands is available) + try: + cli = self._get_cli_plugin() + if cli is None: + self.logger.info("StateEngine: Additional CLI commands not registered because CLI plugin is not active") + elif not isinstance(cli, SmartPlugin): + self.logger.info("StateEngine: Additional CLI commands not registered because CLI plugin is too old") + else: + cli.commands.add_command("se_list", self.cli_list, "StateEngine", "se_list: list StateEngine items") + cli.commands.add_command("se_detail", self.cli_detail, "StateEngine", "se_detail [seItem]: show details on StateEngine item [seItem]") + self.logger.info("StateEngine: Two additional CLI commands registered") + except AttributeError as err: + self.logger.error("StateEngine: Additional CLI commands not registered because error occured.") + self.logger.exception(err) + + # CLI command se_list + # noinspection PyUnusedLocal + def cli_list(self, handler, parameter, source): + handler.push("Items for StateEngine Plugin\n") + handler.push("==========================\n") + for name in sorted(self.__items): + self.__items[name].cli_list(handler) + + # CLI command se_detail + # noinspection PyUnusedLocal + def cli_detail(self, handler, parameter, source): + item = self.__cli_getitem(handler, parameter) + if item is not None: + item.cli_detail(handler) + + # get item from parameter + def __cli_getitem(self, handler, parameter): + if parameter not in self.__items: + handler.push("no StateEngine item \"{0}\" found.\n".format(parameter)) + return None + return self.__items[parameter] + + def _get_cli_plugin(self): + # noinspection PyBroadException + try: + for plugin in self.plugins.return_plugins(): + if plugin.__module__ == 'plugins.cli': + return plugin + return None + except Exception: + return None diff --git a/stateengine/_pv_1_4_2/StateEngineCondition.py b/stateengine/_pv_1_4_2/StateEngineCondition.py new file mode 100755 index 000000000..cf6e46036 --- /dev/null +++ b/stateengine/_pv_1_4_2/StateEngineCondition.py @@ -0,0 +1,357 @@ +#!/usr/bin/env python3 +# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab +######################################################################### +# Copyright 2014- Thomas Ernst offline@gmx.net +######################################################################### +# Finite state machine plugin for SmartHomeNG +# +# This plugin is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This plugin is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this plugin. If not, see . +######################################################################### +from . import StateEngineTools +from . import StateEngineCurrent +from . import StateEngineValue +from . import StateEngineEval + + +# Class representing a single condition +class SeCondition(StateEngineTools.SeItemChild): + # Name of condition + @property + def name(self): + return self.__name + + # Initialize the condition + # abitem: parent SeItem instance + # name: Name of condition + def __init__(self, abitem, name: str): + super().__init__(abitem) + self.__name = name + self.__item = None + self.__eval = None + self.__value = StateEngineValue.SeValue(self._abitem, "value", True) + self.__min = StateEngineValue.SeValue(self._abitem, "min") + self.__max = StateEngineValue.SeValue(self._abitem, "max") + self.__negate = False + self.__agemin = StateEngineValue.SeValue(self._abitem, "agemin") + self.__agemax = StateEngineValue.SeValue(self._abitem, "agemax") + self.__agenegate = None + self.__error = None + + # set a certain function to a given value + # func: Function to set ('item', 'eval', 'value', 'min', 'max', 'negate', 'agemin', 'agemax' or 'agenegate' + # value: Value for function + def set(self, func, value): + if func == "se_item": + self.__item = self._abitem.return_item(value) + elif func == "se_eval": + self.__eval = value + if func == "se_value": + self.__value.set(value, self.__name) + elif func == "se_min": + self.__min.set(value, self.__name) + elif func == "se_max": + self.__max.set(value, self.__name) + elif func == "se_agemin": + self.__agemin.set(value, self.__name) + elif func == "se_agemax": + self.__agemax.set(value, self.__name) + elif func == "se_negate": + self.__negate = value + elif func == "se_agenegate": + self.__agenegate = value + + # Complete condition (do some checks, cast value, min and max based on item or eval data types) + # item_state: item to read from + # abitem_object: Related SeItem instance for later determination of current age and current delay + def complete(self, item_state): + # check if it is possible to complete this condition + if self.__min.is_empty() and self.__max.is_empty() and self.__value.is_empty() \ + and self.__agemin.is_empty() and self.__agemax.is_empty(): + return False + + # set 'eval' for some known conditions if item and eval are not set, yet + if self.__item is None and self.__eval is None: + if self.__name == "weekday": + self.__eval = StateEngineCurrent.values.get_weekday + elif self.__name == "sun_azimut": + self.__eval = StateEngineCurrent.values.get_sun_azimut + elif self.__name == "sun_altitude": + self.__eval = StateEngineCurrent.values.get_sun_altitude + elif self.__name == "age": + self.__eval = self._abitem.get_age + elif self.__name == "time": + self.__eval = StateEngineCurrent.values.get_time + elif self.__name == "random": + self.__eval = StateEngineCurrent.values.get_random + elif self.__name == "month": + self.__eval = StateEngineCurrent.values.get_month + elif self.__name == "laststate": + self.__eval = self._abitem.get_laststate_id + elif self.__name == "trigger_item": + self.__eval = self._abitem.get_update_trigger_item + elif self.__name == "trigger_caller": + self.__eval = self._abitem.get_update_trigger_caller + elif self.__name == "trigger_source": + self.__eval = self._abitem.get_update_trigger_source + elif self.__name == "trigger_dest": + self.__eval = self._abitem.get_update_trigger_dest + elif self.__name == "original_item": + self.__eval = self._abitem.get_update_original_item + elif self.__name == "original_caller": + self.__eval = self._abitem.get_update_original_caller + elif self.__name == "original_source": + self.__eval = self._abitem.get_update_original_source + + # missing item in condition: Try to find it + if self.__item is None: + result = StateEngineTools.find_attribute(self._sh, item_state, "se_item_" + self.__name) + if result is not None: + self.__item = self._abitem.return_item(result) + + # missing eval in condition: Try to find it + if self.__eval is None: + result = StateEngineTools.find_attribute(self._sh, item_state, "se_eval_" + self.__name) + if result is not None: + self.__eval = result + + # no we should have either 'item' or 'eval' set. If not, raise ValueError + if self.__item is None and self.__eval is None: + raise ValueError("Condition {}: Neither 'item' nor 'eval' given!".format(self.__name)) + + # cast stuff + try: + if self.__item is not None: + self.__cast_all(self.__item.cast) + elif self.__name in ("weekday", "sun_azimut", "sun_altitude", "age", "delay", "random", "month"): + self.__cast_all(StateEngineTools.cast_num) + elif self.__name in ( + "laststate", "trigger_item", "trigger_caller", "trigger_source", "trigger_dest", "original_item", + "original_caller", "original_source"): + self.__cast_all(StateEngineTools.cast_str) + elif self.__name == "time": + self.__cast_all(StateEngineTools.cast_time) + except Exception as ex: + raise ValueError("Condition {0}: Error when casting: {1}".format(self.__name, str(ex))) + + # 'min' must not be greater than 'max' + if self.__min.get_type() == "value" and self.__max.get_type() == "value": + if self.__min.get() > self.__max.get(): + raise ValueError("Condition {}: 'min' must not be greater than 'max'!".format(self.__name)) + + # 'agemin' and 'agemax' can only be used for items, not for eval + if self.__item is None and not (self.__agemin.is_empty() and self.__agemax.is_empty()): + raise ValueError("Condition {}: 'agemin'/'agemax' can not be used for eval!".format(self.__name)) + + return True + + # Check if condition is matching + def check(self): + # Ignore if no current value can be determined (should not happen as we check this earlier, but to be sure ...) + if self.__item is None and self.__eval is None: + self._log_info("condition '{0}': No item or eval found! Considering condition as matching!", self.__name) + return True + + if not self.__check_value(): + return False + if not self.__check_age(): + return False + return True + + # Write condition to logger + def write_to_logger(self): + if self.__error is not None: + self._log_debug("error: {0}", self.__error) + if self.__item is not None: + self._log_debug("item: {0}", self.__item.property.name) + if self.__eval is not None: + self._log_debug("eval: {0}", StateEngineTools.get_eval_name(self.__eval)) + self.__value.write_to_logger() + self.__min.write_to_logger() + self.__max.write_to_logger() + if self.__negate is not None: + self._log_debug("negate: {0}", self.__negate) + self.__agemin.write_to_logger() + self.__agemax.write_to_logger() + if self.__agenegate is not None: + self._log_debug("age negate: {0}", self.__agenegate) + + # Cast 'value', 'min' and 'max' using given cast function + # cast_func: cast function to use + def __cast_all(self, cast_func): + self.__value.set_cast(cast_func) + self.__min.set_cast(cast_func) + self.__max.set_cast(cast_func) + if self.__negate is not None: + self.__negate = StateEngineTools.cast_bool(self.__negate) + self.__agemin.set_cast(StateEngineTools.cast_num) + self.__agemax.set_cast(StateEngineTools.cast_num) + if self.__agenegate is not None: + self.__agenegate = StateEngineTools.cast_bool(self.__agenegate) + + # Check if value conditions match + def __check_value(self): + current = self.__get_current() + try: + if not self.__value.is_empty(): + # 'value' is given. We ignore 'min' and 'max' and check only for the given value + value = self.__value.get() + + if type(value) == list: + text = "Condition '{0}': value={1} negate={2} current={3}" + self._log_debug(text, self.__name, value, self.__negate, current) + self._log_increase_indent() + + for element in value: + if type(element) != type(current): + element = str(element) + current = str(current) + if self.__negate: + if current == element: + self._log_debug("{0} found but negated -> not matching", element) + return False + else: + if current == element: + self._log_debug("{0} found -> matching", element) + return True + + if self.__negate: + self._log_debug("{0} not in list -> matching", current) + return True + else: + self._log_debug("{0} not in list -> not matching", current) + return False + + else: + # If current and value have different types, convert both to string + if type(value) != type(current): + value = str(value) + current = str(current) + text = "Condition '{0}': value={1} negate={2} current={3}" + self._log_debug(text, self.__name, value, self.__negate, current) + self._log_increase_indent() + + if self.__negate: + if current != value: + self._log_debug("not OK but negated -> matching") + return True + else: + if current == value: + self._log_debug("OK -> matching") + return True + + self._log_debug("not OK -> not matching") + return False + + else: + + min_value = self.__min.get() + max_value = self.__max.get() + + # 'value' is not given. We check 'min' and 'max' (if given) + text = "Condition '{0}': min={1} max={2} negate={3} current={4}" + self._log_debug(text, self.__name, min_value, max_value, self.__negate, current) + self._log_increase_indent() + + if min_value is None and max_value is None: + self._log_debug("no limit given -> matching") + return True + + if not self.__negate: + if min_value is not None and current < min_value: + self._log_debug("too low -> not matching") + return False + + if max_value is not None and current > max_value: + self._log_debug("too high -> not matching") + return False + else: + if min_value is not None and current > min_value and (max_value is None or current < max_value): + self._log_debug("not lower than min -> not matching") + return False + + if max_value is not None and current < max_value and (min_value is None or current > min_value): + self._log_debug("not higher than max -> not matching") + return False + + self._log_debug("given limits ok -> matching") + return True + finally: + self._log_decrease_indent() + + # Check if age conditions match + def __check_age(self): + # No limits given -> OK + if self.__agemin.is_empty() and self.__agemax.is_empty(): + self._log_info("Age of '{0}': No limits given", self.__name) + return True + + # Ignore if no current value can be determined (should not happen as we check this earlier, but to be sure ...) + if self.__item is None: + self._log_info("Age of '{0}': No item found! Considering condition as matching!", self.__name) + return True + + current = self.__item.age() + agemin = None if self.__agemin.is_empty() else self.__agemin.get() + agemax = None if self.__agemax.is_empty() else self.__agemax.get() + try: + # We check 'min' and 'max' (if given) + text = "Age of '{0}': min={1} max={2} negate={3} current={4}" + self._log_debug(text, self.__name, agemin, agemax, self.__agenegate, current) + self._log_increase_indent() + + if not self.__agenegate: + if agemin is not None and current < agemin: + self._log_debug("too young -> not matching") + return False + + if agemax is not None and current > agemax: + self._log_debug("too old -> not matching") + return False + else: + if agemin is not None and current > agemin and (agemax is None or current < agemax): + self._log_debug("not younger than min -> not matching") + return False + + if agemax is not None and current < agemax and (agemin is None or current > agemin): + self._log_debug("not older than max -> not matching") + return False + + self._log_debug("given age limits ok -> matching") + return True + finally: + self._log_decrease_indent() + + # Current value of condition (based on item or eval) + def __get_current(self): + if self.__item is not None: + # noinspection PyCallingNonCallable + return self.__item() + if self.__eval is not None: + if isinstance(self.__eval, str): + # noinspection PyUnusedLocal + sh = self._sh + if "stateengine_eval" in self.__eval: + # noinspection PyUnusedLocal + stateengine_eval = StateEngineEval.SeEval(self._abitem) + try: + value = eval(self.__eval) + except Exception as ex: + text = "Condition {}: problem evaluating {}: {}" + raise ValueError(text.format(self.__name, str(self.__eval), str(ex))) + else: + return value + else: + # noinspection PyCallingNonCallable + return self.__eval() + raise ValueError("Condition {}: Neither 'item' nor eval given!".format(self.__name)) diff --git a/stateengine/_pv_1_4_2/StateEngineConditionSet.py b/stateengine/_pv_1_4_2/StateEngineConditionSet.py new file mode 100755 index 000000000..de2364ce1 --- /dev/null +++ b/stateengine/_pv_1_4_2/StateEngineConditionSet.py @@ -0,0 +1,118 @@ +#!/usr/bin/env python3 +# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab +######################################################################### +# Copyright 2014- Thomas Ernst offline@gmx.net +######################################################################### +# Finite state machine plugin for SmartHomeNG +# +# This plugin is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This plugin is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this plugin. If not, see . +######################################################################### +from . import StateEngineCondition +from . import StateEngineTools + + +# Class representing a set of conditions +class SeConditionSet(StateEngineTools.SeItemChild): + # Name of condition set + @property + def name(self): + return self.__name + + # List of conditions that are part of this condition set + @property + def conditions(self): + return self.__conditions + + # Initialize the condition set + # abitem: parent SeItem instance + # name: Name of condition set + def __init__(self, abitem, name): + super().__init__(abitem) + self.__name = name + self.__conditions = {} + + # Update condition set + # item: item containing settings for condition set + # grandparent_item: grandparent item of item (containing the definition if items and evals) + def update(self, item, grandparent_item): + # Update conditions in condition set + if item is not None: + for attribute in item.conf: + func, name = StateEngineTools.partition_strip(attribute, "_") + if name == "": + continue + + try: + # update this condition + if name not in self.__conditions: + self.__conditions[name] = StateEngineCondition.SeCondition(self._abitem, name) + self.__conditions[name].set(func, item.conf[attribute]) + + except ValueError as ex: + raise ValueError("Condition {0}: {1}".format(name, str(ex))) + + # Update item from grandparent_item + for attribute in grandparent_item.conf: + func, name = StateEngineTools.partition_strip(attribute, "_") + if name == "": + continue + + # update item/eval in this condition + if func == "se_item" or func == "se_eval": + if name not in self.__conditions: + self.__conditions[name] = StateEngineCondition.SeCondition(self._abitem, name) + try: + self.__conditions[name].set(func, grandparent_item.conf[attribute]) + except ValueError as ex: + text = "Item '{0}', Attribute '{1}': {2}" + raise ValueError(text.format(grandparent_item.property.name, attribute, str(ex))) + + # Check the condition set, optimize and complete it + # item_state: item to read from + def complete(self, item_state): + conditions_to_remove = [] + # try to complete conditions + for name in self.conditions: + try: + if not self.__conditions[name].complete(item_state): + conditions_to_remove.append(name) + continue + except ValueError as ex: + text = "State '{0}', Condition Set '{1}', Condition '{2}': {3}" + raise ValueError(text.format(item_state.property.name, self.name, name, str(ex))) + + # Remove incomplete conditions + for name in conditions_to_remove: + del self.conditions[name] + + # Write the whole condition set to the logger + def write_to_logger(self): + for name in self.__conditions: + self._log_info("Condition '{0}':", name) + self._log_increase_indent() + self.__conditions[name].write_to_logger() + self._log_decrease_indent() + + # Check all conditions in the condition set. Return + # returns: True = all conditions in set are matching, False = at least one condition is not matching + def all_conditions_matching(self): + try: + self._log_info("Check condition set '{0}':", self.__name) + self._log_increase_indent() + for name in self.__conditions: + if not self.__conditions[name].check(): + return False + return True + finally: + self._log_decrease_indent() diff --git a/stateengine/_pv_1_4_2/StateEngineConditionSets.py b/stateengine/_pv_1_4_2/StateEngineConditionSets.py new file mode 100755 index 000000000..0d05dd089 --- /dev/null +++ b/stateengine/_pv_1_4_2/StateEngineConditionSets.py @@ -0,0 +1,71 @@ +#!/usr/bin/env python3 +# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab +######################################################################### +# Copyright 2014- Thomas Ernst offline@gmx.net +######################################################################### +# Finite state machine plugin for SmartHomeNG +# +# This plugin is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This plugin is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this plugin. If not, see . +######################################################################### +from . import StateEngineConditionSet +from . import StateEngineTools +from collections import OrderedDict + +# Class representing a list of condition sets +class SeConditionSets(StateEngineTools.SeItemChild): + # Initialize the list of condition sets + # abitem: parent SeItem instance + def __init__(self, abitem): + super().__init__(abitem) + self.__condition_sets = OrderedDict() + + # Return number of condition sets in list + def count(self): + return len(self.__condition_sets) + + # Add/update a condition set + # name: Name of condition set + # item: item containing settings for condition set + # grandparent_item: grandparent item of item (containing the definition if items and evals) + def update(self, name, item, grandparent_item): + # Add condition set if not yet existing + if name not in self.__condition_sets: + self.__condition_sets[name] = StateEngineConditionSet.SeConditionSet(self._abitem, name) + # Update this condition set + self.__condition_sets[name].update(item, grandparent_item) + + # Check the condition sets, optimize and complete them + # item_state: item to read from + def complete(self, item_state): + for name in self.__condition_sets: + self.__condition_sets[name].complete(item_state) + + # Write all condition sets to logger + def write_to_logger(self): + for name in self.__condition_sets: + self._log_info("Condition Set '{0}':", name) + self._log_increase_indent() + self.__condition_sets[name].write_to_logger() + self._log_decrease_indent() + + # check if one of the conditions sets in the list is matching. + # returns: True = one condition set is matching or no condition sets are defined, False: no condition set matching + def one_conditionset_matching(self): + if self.count() == 0: + self._log_debug("No condition sets defined -> matching") + return True + for name in self.__condition_sets: + if self.__condition_sets[name].all_conditions_matching(): + return True + return False diff --git a/stateengine/_pv_1_4_2/StateEngineCurrent.py b/stateengine/_pv_1_4_2/StateEngineCurrent.py new file mode 100755 index 000000000..a797e2f15 --- /dev/null +++ b/stateengine/_pv_1_4_2/StateEngineCurrent.py @@ -0,0 +1,88 @@ +#!/usr/bin/env python3 +# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab +######################################################################### +# Copyright 2014- Thomas Ernst offline@gmx.net +######################################################################### +# Finite state machine plugin for SmartHomeNG +# +# This plugin is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This plugin is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this plugin. If not, see . +######################################################################### +import time +import math +import datetime +from random import randint + +# Static current conditions object +values = None +""":type : SeCurrent""" + + +# Init current conditions +def init(smarthome): + global values + values = SeCurrent(smarthome) + + +# Update current conditions +def update(): + values.update() + + +# Class representing the current conditions to check against +class SeCurrent: + # Initialize + # smarthome: Instance of smarthome.py-class + def __init__(self, smarthome): + self.__sh = smarthome + self.__weekday = None + self.__time = None + self.__sun_azimut = None + self.__sun_altitude = None + self.__month = None + self.update() + + # Return current weekday + def get_weekday(self): + return self.__weekday + + # Return current time + def get_time(self): + return self.__time + + # Return current sun_azimut + def get_sun_azimut(self): + return self.__sun_azimut + + # Return current sun_altitude + def get_sun_altitude(self): + return self.__sun_altitude + + # Return current month + def get_month(self): + return self.__month + + # Return random number between 0 and 100 + # noinspection PyMethodMayBeStatic + def get_random(self): + return randint(0, 100) + + # Update current values + def update(self): + now = time.localtime() + self.__weekday = now.tm_wday + self.__time = datetime.datetime.time(datetime.datetime.now()) + self.__month = now.tm_mon + azimut, altitude = self.__sh.sun.pos() + self.__sun_azimut = math.degrees(float(azimut)) + self.__sun_altitude = math.degrees(float(altitude)) diff --git a/stateengine/_pv_1_4_2/StateEngineDefaults.py b/stateengine/_pv_1_4_2/StateEngineDefaults.py new file mode 100755 index 000000000..df1c7ff23 --- /dev/null +++ b/stateengine/_pv_1_4_2/StateEngineDefaults.py @@ -0,0 +1,33 @@ +#!/usr/bin/env python3 +# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab +######################################################################### +# Copyright 2014- Thomas Ernst offline@gmx.net +######################################################################### +# Finite state machine plugin for SmartHomeNG +# +# This plugin is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This plugin is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this plugin. If not, see . +######################################################################### +import logging + + +startup_delay = 10 + +suspend_time = 3600 + +plugin_identification = "StateEngine Plugin" + + +def write_to_log(logger): + logger.info("StateEngine default startup delay = {0}".format(startup_delay)) + logger.info("StateEngine default suspension time = {0}".format(suspend_time)) diff --git a/stateengine/_pv_1_4_2/StateEngineEval.py b/stateengine/_pv_1_4_2/StateEngineEval.py new file mode 100755 index 000000000..363c66d5d --- /dev/null +++ b/stateengine/_pv_1_4_2/StateEngineEval.py @@ -0,0 +1,128 @@ +#!/usr/bin/env python3 +# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab +######################################################################### +# Copyright 2014- Thomas Ernst offline@gmx.net +######################################################################### +# Finite state machine plugin for SmartHomeNG +# +# This plugin is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This plugin is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this plugin. If not, see . +######################################################################### +from . import StateEngineTools +from . import StateEngineCurrent +from random import randint +import subprocess +import datetime +from lib.shtime import Shtime + + +class SeEval(StateEngineTools.SeItemChild): + # Initialize + # abitem: parent SeItem instance + def __init__(self, abitem): + super().__init__(abitem) + self.shtime = Shtime.get_instance() + + # Get lamella angle based on sun_altitute for sun tracking + def sun_tracking(self): + self._log_debug("Executing method 'SunTracking()'") + self._log_increase_indent() + + altitude = StateEngineCurrent.values.get_sun_altitude() + self._log_debug("Current sun altitude is {0}°", altitude) + + value = 90 - altitude + self._log_debug("Blinds at right angle to the sun at {0}°", value) + + self._log_decrease_indent() + return value + + # Return random integer + # min_value: minimum value for random integer (default 0) + # max_value: maximum value for random integer (default 255) + def get_random_int(self, min_value=0, max_value=255): + self._log_debug("Executing method 'GetRandomInt({0},{1})'", min_value, max_value) + return randint(min_value, max_value) + + # Execute a command + # command: command to execute + def execute(self, command): + self._log_debug("Executing method 'execute({0})'", command) + try: + return subprocess.call(command, shell=True) + except Exception as ex: + self._log_exception(ex) + + # Return a variable + # varname: name of variable to return + def get_variable(self, varname): + self._log_debug("Executing method 'get_variable({0})'", varname) + try: + return self._abitem.get_variable(varname) + except Exception as ex: + self._log_exception(ex) + + # Return the absolute id of an item related to the StateEngine Object Item + # item_id: Relative id of item whose absolute id should be returned + # + # See describtion if StateEngineItem.SeItem.return_item for details + def get_relative_itemid(self, subitem_id): + self._log_debug("Executing method 'get_relative_itemid({0})'", subitem_id) + try: + item = self._abitem.return_item(subitem_id) + return item.property.name + except Exception as ex: + self._log_exception(ex) + + # Return the value of an item related to the StateEngine Object Item + # item_id: Relative id of item whose value should be returned + # + # See describtion if StateEngineItem.SeItem.return_item for details + def get_relative_itemvalue(self, subitem_id): + self._log_debug("Executing method 'get_relative_itemvalue({0})'", subitem_id) + try: + item = self._abitem.return_item(subitem_id) + return item() + except Exception as ex: + self._log_exception(ex) + + # Insert end time of suspension into text + # suspend_item_id: Item whose age is used to determine how much of the suspend time is already over + # suspend_text: Text to insert end time of suspension into. Use strftime/strptime format codes for the end time + # (see https://docs.python.org/3/library/datetime.html#strftime-strptime-behavior) + def insert_suspend_time(self, suspend_item_id, suspend_text="Ausgesetzt bis %X"): + self._log_debug("Executing method 'insert_suspend_time({0}, {1})'", suspend_item_id, suspend_text) + self._log_increase_indent() + try: + suspend_time = self._abitem.get_variable("item.suspend_time") + self._log_debug("Suspend time is {0}", suspend_time) + suspend_item = self._abitem.return_item(suspend_item_id) + if suspend_item is None: + text = "Eval-Method 'insert_suspend_time': Suspend Item {0} not found!" + raise ValueError(text.format(suspend_item_id)) + self._log_debug("Suspend item is {0}", suspend_item.property.name) + suspend_over = suspend_item.age() + self._log_debug("Current suspend age: {0}", suspend_over) + suspend_remaining = suspend_time - suspend_over + self._log_debug("Remaining suspend time: {0}", suspend_remaining) + if suspend_remaining < 0: + self._log_debug("Eval-Method 'insert_suspend_time': Suspend should alredy be finished!") + return "Suspend already over." + suspend_until = self._abitem.shtime.now() + datetime.timedelta(seconds=suspend_remaining) + self._log_debug("Suspend finished at {0}", suspend_until) + return suspend_until.strftime(suspend_text) + except Exception as ex: + self._log_exception(ex) + return "(Error while determining text. Check log)" + finally: + self._log_decrease_indent() diff --git a/stateengine/_pv_1_4_2/StateEngineFunctions.py b/stateengine/_pv_1_4_2/StateEngineFunctions.py new file mode 100755 index 000000000..e0dc7aeec --- /dev/null +++ b/stateengine/_pv_1_4_2/StateEngineFunctions.py @@ -0,0 +1,189 @@ +#!/usr/bin/env python3 +# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab +######################################################################### +# Copyright 2014- Thomas Ernst offline@gmx.net +######################################################################### +# Finite state machine plugin for SmartHomeNG +# +# This plugin is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This plugin is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this plugin. If not, see . +######################################################################### +import logging +import threading +from . import StateEngineLogger +from lib.item import Items + + +class SeFunctions: + # return instance of smarthome.py class + @property + def ab_alive(self): + return self.__ab_alive + + @ab_alive.setter + def ab_alive(self, value): + self.__ab_alive = value + + def __init__(self, smarthome, logger): + self.logger = logger + self.__sh = smarthome + self.__locks = {} + self.__ab_alive = False + self.items = Items.get_instance() + + # get a lock object + # lock_id: Id of the lock object to return + def __get_lock(self, lock_id): + if lock_id not in self.__locks: + self.__locks[lock_id] = threading.Lock() + return self.__locks[lock_id] + + # return new item value for "manual" item + # item_id: Id of "manual" item + # caller: Caller that triggered the update + # source: Source that triggered the update + # The Method will determine the original caller/source and then check if this original caller/source is not + # contained in se_manual_exclude list (if given) and is contained in se_manual_include list (if given). + # If the original caller/source should be consiedered, the method returns the inverted value of the item. + # Otherwise, the method returns the current value of the item, so that no change will be made + def manual_item_update_eval(self, item_id, caller=None, source=None): + item = self.items.return_item(item_id) + if item is None: + self.logger.error("manual_item_update_eval: item {0} not found!".format(item_id)) + + # Leave immediately in case StateEngine Plugin is not yet fully running + if not self.__ab_alive: + return item() + + lock = self.__get_lock(item_id) + try: + lock.acquire() + + if "se_manual_logitem" in item.conf: + elog_item_id = item.conf["se_manual_logitem"] + elog_item = self.items.return_item(elog_item_id) + if elog_item is None: + self.logger.error("manual_item_update_item: se_manual_logitem {0} not found!".format(elog_item_id)) + elog = StateEngineLogger.SeLoggerDummy() + else: + elog = StateEngineLogger.SeLogger.create(elog_item) + else: + elog = StateEngineLogger.SeLoggerDummy() + elog.header("manual_item_update_eval") + elog.debug("running for item '{0}' source '{1}' caller '{2}'", item_id, caller, source) + + retval_no_trigger = item() + retval_trigger = not item() + elog.debug("Current value of item {0} is {1}", item_id, retval_no_trigger) + + original_caller, original_source = self.get_original_caller(elog, caller, source) + elog.debug("original trigger by caller '{0}' source '{1}'", original_caller, original_source) + + if "se_manual_on" in item.conf: + # get list of include entries + include = item.conf["se_manual_on"] + if isinstance(include, str): + include = [include, ] + elif not isinstance(include, list): + elog.error("Item '{0}', Attribute 'se_manual_on': Value must be a string or a list!", item_id) + return retval_no_trigger + elog.debug("checking include values: {0}", include) + elog.increase_indent() + + # If current value is in list -> Return "Trigger" + for entry in include: + entry_caller, __, entry_source = entry.partition(":") + if (entry_caller == original_caller or entry_caller == "*") and ( + entry_source == original_source or entry_source == "*"): + elog.debug("{0}: matching. Writing value {1}", entry, retval_no_trigger) + return retval_no_trigger + elog.debug("{0}: not matching", entry) + elog.decrease_indent() + + if "se_manual_exclude" in item.conf: + # get list of exclude entries + exclude = item.conf["se_manual_exclude"] + + if isinstance(exclude, str): + exclude = [exclude, ] + elif not isinstance(exclude, list): + elog.error("Item '{0}', Attribute 'se_manual_exclude': Value must be a string or a list!", item_id) + return retval_no_trigger + elog.debug("checking exclude values: {0}", exclude) + elog.increase_indent() + + # If current value is in list -> Return "NoTrigger" + for entry in exclude: + entry_caller, __, entry_source = entry.partition(":") + if (entry_caller == original_caller or entry_caller == "*") and ( + entry_source == original_source or entry_source == "*"): + elog.debug("{0}: matching. Writing value {1}", entry, retval_no_trigger) + return retval_no_trigger + elog.debug("{0}: not matching", entry) + elog.decrease_indent() + + if "se_manual_include" in item.conf: + # get list of include entries + include = item.conf["se_manual_include"] + if isinstance(include, str): + include = [include, ] + elif not isinstance(include, list): + elog.error("Item '{0}', Attribute 'se_manual_include': Value must be a string or a list!", item_id) + return retval_no_trigger + elog.debug("checking include values: {0}", include) + elog.increase_indent() + + # If current value is in list -> Return "Trigger" + for entry in include: + entry_caller, __, entry_source = entry.partition(":") + if (entry_caller == original_caller or entry_caller == "*") and ( + entry_source == original_source or entry_source == "*"): + elog.debug("{0}: matching. Writing value {1}", entry, retval_trigger) + return retval_trigger + elog.debug("{0}: not matching", entry) + elog.decrease_indent() + + # Current value not in list -> Return "No Trigger + elog.debug("No include values matching. Writing value {0}", retval_no_trigger) + return retval_no_trigger + else: + # No include-entries -> return "Trigger" + elog.debug("No include limitation. Writing value {0}", retval_trigger) + return retval_trigger + finally: + lock.release() + + # determine original caller/source + # elog: instance of logging class + # caller: caller + # source: source + def get_original_caller(self, elog, caller, source): + original_caller = caller + original_source = source + while original_caller == "Eval": + original_item = self.items.return_item(original_source) + if original_item is None: + elog.debug("get_original_caller({0}, {1}): original item not found", original_caller, original_source) + break + original_changed_by = original_item.changed_by() + if ":" not in original_changed_by: + text = "get_original_caller({0}, {1}): changed by {2} -> separator missing" + elog.debug(text, original_caller, original_source, original_changed_by) + break + oc = original_caller + os = original_source + original_caller, __, original_source = original_changed_by.partition(":") + elog.debug("get_original_caller({0}, {1}): changed by {2}, {3} at {4}", oc, os, original_caller, original_source, original_item.last_change()) + + elog.debug("get_original_caller: returning {0}, {1}", original_caller, original_source) + return original_caller, original_source diff --git a/stateengine/_pv_1_4_2/StateEngineItem.py b/stateengine/_pv_1_4_2/StateEngineItem.py new file mode 100755 index 000000000..4e6031d68 --- /dev/null +++ b/stateengine/_pv_1_4_2/StateEngineItem.py @@ -0,0 +1,489 @@ +#!/usr/bin/env python3 +# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab +######################################################################### +# Copyright 2014- Thomas Ernst offline@gmx.net +######################################################################### +# Finite state machine plugin for SmartHomeNG +# +# This plugin is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This plugin is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this plugin. If not, see . +######################################################################### +import datetime +from . import StateEngineTools +from .StateEngineLogger import SeLogger +from . import StateEngineState +from . import StateEngineDefaults +from . import StateEngineCurrent +from . import StateEngineValue +from lib.item import Items +from lib.shtime import Shtime + + +# Class representing a blind item +# noinspection PyCallingNonCallable +class SeItem: + # return item id + @property + def id(self): + return self.__id + + # return instance of smarthome.py class + @property + def sh(self): + return self.__sh + + # return instance of logger class + @property + def logger(self): + return self.__logger + + # Constructor + # smarthome: instance of smarthome.py + # item: item to use + def __init__(self, smarthome, item): + self.items = Items.get_instance() + self.shtime = Shtime.get_instance() + self.__sh = smarthome + self.__item = item + self.__id = self.__item.property.name + self.__name = str(self.__item) + # initialize logging + self.__logger = SeLogger.create(self.__item) + self.__logger.header("Initialize Item {0}".format(self.id)) + + # get startup delay + self.__startup_delay = StateEngineValue.SeValue(self, "Startup Delay", False, "num") + self.__startup_delay.set_from_attr(self.__item, "se_startup_delay", StateEngineDefaults.startup_delay) + self.__startup_delay_over = False + + # Init suspend settings + self.__suspend_time = StateEngineValue.SeValue(self, "Suspension time on manual changes", False, "num") + self.__suspend_time.set_from_attr(self.__item, "se_suspend_time", StateEngineDefaults.suspend_time) + + # Init laststate items/values + self.__laststate_item_id = self.return_item_by_attribute("se_laststate_item_id") + self.__laststate_internal_id = "" if self.__laststate_item_id is None else self.__laststate_item_id() + self.__laststate_item_name = self.return_item_by_attribute("se_laststate_item_name") + self.__laststate_internal_name = "" if self.__laststate_item_name is None else self.__laststate_item_name() + + self.__states = [] + self.__repeat_actions = StateEngineValue.SeValue(self, "Repeat actions if state is not changed", False, "bool") + self.__repeat_actions.set_from_attr(self.__item, "se_repeat_actions", True) + + self.__update_trigger_item = None + self.__update_trigger_caller = None + self.__update_trigger_source = None + self.__update_trigger_dest = None + self.__update_in_progress = False + self.__update_original_item = None + self.__update_original_caller = None + self.__update_original_source = None + + # Check item configuration + self.__check_item_config() + + # Init variables + self.__variables = { + "item.suspend_time": self.__suspend_time.get(), + "item.suspend_remaining": 0, + "current.state_id": "", + "current.state_name": "" + } + + # initialize states + for item_state in self.__item.return_children(): + try: + self.__states.append(StateEngineState.SeState(self, item_state)) + except ValueError as ex: + self.__logger.error("Ignoring state {0} because: {1}".format(item_state.property.name, str(ex))) + + if len(self.__states) == 0: + raise ValueError("{0}: No states defined!".format(self.id)) + + # Write settings to log + self.__write_to_log() + + # start timer with startup-delay + startup_delay = 0 if self.__startup_delay.is_empty() else self.__startup_delay.get() + if startup_delay > 0: + first_run = self.shtime.now() + datetime.timedelta(seconds=startup_delay) + scheduler_name = self.__id + "-Startup Delay" + value = {"item": self.__item, "caller": "Init"} + self.__sh.scheduler.add(scheduler_name, self.__startup_delay_callback, value=value, next=first_run) + elif startup_delay == -1: + self.__startup_delay_over = True + self.__add_triggers() + else: + self.__startup_delay_callback(self.__item, "Init", None, None) + + # Find the state, matching the current conditions and perform the actions of this state + # caller: Caller that triggered the update + # noinspection PyCallingNonCallable,PyUnusedLocal + def update_state(self, item, caller=None, source=None, dest=None): + if self.__update_in_progress or not self.__startup_delay_over: + return + + self.__update_in_progress = True + + self.__logger.update_logfile() + self.__logger.header("Update state of item {0}".format(self.__name)) + if caller: + item_id = item.property.name if item is not None else "(no item)" + self.__logger.debug("Update triggered by {0} (item={1} source={2} dest={3})", caller, item_id, source, dest) + + # Find out what initially caused the update to trigger if the caller is "Eval" + orig_caller, orig_source, orig_item = StateEngineTools.get_original_caller(self.sh, caller, source, item) + if orig_caller != caller: + text = "Eval initially triggered by {0} (item={1} source={2})" + self.__logger.debug(text, orig_caller, orig_item.property.name, orig_source) + + if orig_caller == StateEngineDefaults.plugin_identification or caller == StateEngineDefaults.plugin_identification: + self.__logger.debug("Ignoring changes from {0}", StateEngineDefaults.plugin_identification) + self.__update_in_progress = False + return + + self.__update_trigger_item = item.property.name + self.__update_trigger_caller = caller + self.__update_trigger_source = source + self.__update_trigger_dest = dest + self.__update_original_item = orig_item.property.name + self.__update_original_caller = orig_caller + self.__update_original_source = orig_source + + # Update current values + StateEngineCurrent.update() + self.__variables["item.suspend_time"] = self.__suspend_time.get() + self.__variables["item.suspend_remaining"] = -1 + + # get last state + last_state = self.__laststate_get() + if last_state is not None: + self.__logger.info("Last state: {0} ('{1}')", last_state.id, last_state.name) + + # find new state + new_state = None + for state in self.__states: + if self.__update_check_can_enter(state): + new_state = state + break + + # no new state -> stay + if new_state is None: + if last_state is None: + self.__logger.info("No matching state found, no previous state available. Doing nothing.") + else: + text = "No matching state found, staying at {0} ('{1}')" + self.__logger.info(text, last_state.id, last_state.name) + last_state.run_stay(self.__repeat_actions.get()) + self.__update_in_progress = False + return + + # get data for new state + if last_state is not None and new_state.id == last_state.id: + self.__logger.info("Staying at {0} ('{1}')", new_state.id, new_state.name) + new_state.run_stay(self.__repeat_actions.get()) + + # New state is last state + if self.__laststate_internal_name != new_state.name: + self.__laststate_set(new_state) + + else: + # New state is different from last state + if last_state is not None: + self.__logger.info("Leaving {0} ('{1}')", last_state.id, last_state.name) + last_state.run_leave(self.__repeat_actions.get()) + + self.__logger.info("Entering {0} ('{1}')", new_state.id, new_state.name) + new_state.run_enter(self.__repeat_actions.get()) + + self.__laststate_set(new_state) + + self.__update_in_progress = False + + # check if state can be entered after setting state-specific variables + # state: state to check + def __update_check_can_enter(self, state): + try: + self.__variables["current.state_id"] = state.id + self.__variables["current.state_name"] = state.name + return state.can_enter() + finally: + self.__variables["current.state_id"] = "" + self.__variables["current.state_name"] = "" + + # region Laststate ************************************************************************************************* + # Set laststate + # new_state: new state to be used as laststate + def __laststate_set(self, new_state): + self.__laststate_internal_id = new_state.id + if self.__laststate_item_id is not None: + # noinspection PyCallingNonCallable + self.__laststate_item_id(self.__laststate_internal_id) + + self.__laststate_internal_name = new_state.text + if self.__laststate_item_name is not None: + # noinspection PyCallingNonCallable + self.__laststate_item_name(self.__laststate_internal_name) + + # get last state object based on laststate_id + # returns: SeState instance of last state or "None" if no last state could be found + def __laststate_get(self): + for state in self.__states: + if state.id == self.__laststate_internal_id: + return state + return None + + # endregion + + # region Helper methods ******************************************************************************************** + # add all required triggers + def __add_triggers(self): + # add item trigger + self.__item.add_method_trigger(self.update_state) + + # Check item settings and update if required + # noinspection PyProtectedMember + def __check_item_config(self): + # set "enforce updates" for item + self.__item._enforce_updates = True + + # set "eval" for item if initial + if self.__item._trigger and self.__item._eval is None: + self.__item._eval = "1" + + # Check scheduler settings and update if requred + job = self.__sh.scheduler._scheduler.get(self.id) + if job is None: + # We do not have an scheduler job so there is nothing to check and update + return + + changed = False + + # inject value into cycle if required + if "cycle" in job and job["cycle"] is not None: + cycle = list(job["cycle"].keys())[0] + value = job["cycle"][cycle] + if value is None: + value = "1" + changed = True + new_cycle = {cycle: value} + else: + new_cycle = None + + # inject value into cron if required + if "cron" in job and job["cron"] is not None: + new_cron = {} + for entry, value in job['cron'].items(): + if value is None: + value = 1 + changed = True + new_cron[entry] = value + else: + new_cron = None + + # change scheduler settings if cycle or cron have been changed + if changed: + self.__sh.scheduler.change(self.id, cycle=new_cycle, cron=new_cron) + + # get triggers in readable format + def __verbose_triggers(self): + # noinspection PyProtectedMember + if not self.__item._trigger: + return "Inactive" + + triggers = "" + # noinspection PyProtectedMember + for trigger in self.__item._trigger: + if triggers != "": + triggers += ", " + triggers += trigger + return triggers + + # get crons and cycles in readable format + def __verbose_crons_and_cycles(self): + # get crons and cycles + cycles = "" + crons = "" + + # noinspection PyProtectedMember + job = self.__sh.scheduler._scheduler.get(self.__item.id) + if job is not None: + if "cycle" in job and job["cycle"] is not None: + cycle = list(job["cycle"].keys())[0] + cycles = "every {0} seconds".format(cycle) + + # inject value into cron if required + if "cron" in job and job["cron"] is not None: + for entry in job['cron']: + if crons != "": + crons += ", " + crons += entry + + if cycles == "": + cycles = "Inactive" + if crons == "": + crons = "Inactive" + return crons, cycles + + # log item data + def __write_to_log(self): + # get crons and cycles + crons, cycles = self.__verbose_crons_and_cycles() + triggers = self.__verbose_triggers() + + # log general config + self.__logger.header("Configuration of item {0}".format(self.__name)) + self.__startup_delay.write_to_logger() + self.__logger.info("Cycle: {0}", cycles) + self.__logger.info("Cron: {0}", crons) + self.__logger.info("Trigger: {0}".format(triggers)) + self.__repeat_actions.write_to_logger() + + # log laststate settings + if self.__laststate_item_id is not None: + self.__logger.info("Item 'Laststate Id': {0}", self.__laststate_item_id.property.name) + if self.__laststate_item_name is not None: + self.__logger.info("Item 'Laststate Name': {0}", self.__laststate_item_name.property.name) + + # log states + for state in self.__states: + state.write_to_log() + + # endregion + + # region Methods for CLI commands ********************************************************************************** + def cli_list(self, handler): + handler.push("{0}: {1}\n".format(self.id, self.__laststate_internal_name)) + + def cli_detail(self, handler): + # get data + crons, cycles = self.__verbose_crons_and_cycles() + triggers = self.__verbose_triggers() + handler.push("AutoState Item {0}:\n".format(self.id)) + handler.push("\tCurrent state: {0}\n".format(self.__laststate_internal_name)) + handler.push(self.__startup_delay.get_text("\t", "\n")) + handler.push("\tCycle: {0}\n".format(cycles)) + handler.push("\tCron: {0}\n".format(crons)) + handler.push("\tTrigger: {0}\n".format(triggers)) + handler.push(self.__repeat_actions.get_text("\t", "\n")) + + # endregion + + # region Getter methods for "special" conditions ******************************************************************* + # return age of item + def get_age(self): + if self.__laststate_item_id is not None: + return self.__laststate_item_id.age() + else: + self.__logger.warning('No item for last state id given. Can not determine age!') + return 0 + + # return id of last state + def get_laststate_id(self): + return self.__laststate_internal_id + + # return update trigger item + def get_update_trigger_item(self): + return self.__update_trigger_item + + # return update trigger caller + def get_update_trigger_caller(self): + return self.__update_trigger_caller + + # return update trigger source + def get_update_trigger_source(self): + return self.__update_trigger_source + + # return update trigger dest + def get_update_trigger_dest(self): + return self.__update_trigger_dest + + # return update original item + def get_update_original_item(self): + return self.__update_original_item + + # return update original caller + def get_update_original_caller(self): + return self.__update_original_caller + + # return update original source + def get_update_original_source(self): + return self.__update_original_source + + # return value of variable + def get_variable(self, varname): + return self.__variables[varname] if varname in self.__variables else "(Unknown variable '{0}'!)".format(varname) + + # set value of variable + def set_variable(self, varname, value): + if varname not in self.__variables: + raise ValueError("Unknown variable '{0}!".format(varname)) + self.__variables[varname] = value + + # endregion + + # callback function that is called after the startup delay + # noinspection PyUnusedLocal + def __startup_delay_callback(self, item, caller=None, source=None, dest=None): + self.__startup_delay_over = True + self.update_state(item, "Startup Delay", source, dest) + self.__add_triggers() + + # Return an item related to the StateEngine Object Item + # item_id: Id of item to return + # + # With this function it is possible to provide items relative to the current StateEngine object item. + # If an item_id starts with one or more ".", the item is relative to the StateEngine object item. One "." means + # that the given item Id is relative to the current level of the StateEngine object item. Every additional "." + # removes one level of the StateEngine object item before adding the item_id. + # Examples (based on StateEngine object item "my.stateengine.objectitem": + # - item_id = "not.prefixed.with.dots" will return item "not.prefixed.with.dots" + # - item_id = ".onedot" will return item "my.stateengine.objectitem.onedot" + # - item_id = "..twodots" will return item "my.stateengine.twodots" + # - item_id = "..threedots" will return item "my.threedots" + # - item_id = "..threedots.further.down" will return item "my.threedots.further.down" + def return_item(self, item_id: str): + if not item_id.startswith("."): + item = self.items.return_item(item_id) + if item is None: + self.__logger.warning("Item '{0}' not found!".format(item_id)) + return item + + parent_level = 0 + for c in item_id: + if c != '.': + break + parent_level += 1 + + levels = self.id.split(".") + use_num_levels = len(levels) - parent_level + 1 + if use_num_levels < 0: + text = "Item '{0}' can not be determined. Parent item '{1}' has only {2} levels!" + raise ValueError(text.format(item_id, self.id, len(levels))) + result = "" + for level in levels[0:use_num_levels]: + result += level if result == "" else "." + level + rel_item_id = item_id[parent_level:] + if rel_item_id != "": + result += "." + rel_item_id + item = self.items.return_item(result) + if item is None: + self.__logger.warning("Determined item '{0}' does not exist.".format(result)) + return item + + # Return an item related to the StateEngine object item + # attribute: Name of the attribute of the StateEngine object item, which contains the item_id to read + def return_item_by_attribute(self, attribute): + if attribute not in self.__item.conf: + return None + return self.return_item(self.__item.conf[attribute]) diff --git a/stateengine/_pv_1_4_2/StateEngineLogger.py b/stateengine/_pv_1_4_2/StateEngineLogger.py new file mode 100755 index 000000000..ab3e77b9a --- /dev/null +++ b/stateengine/_pv_1_4_2/StateEngineLogger.py @@ -0,0 +1,245 @@ +#!/usr/bin/env python3 +# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab +######################################################################### +# Copyright 2014- Thomas Ernst offline@gmx.net +######################################################################### +# Finite state machine plugin for SmartHomeNG +# +# This plugin is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This plugin is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this plugin. If not, see . +######################################################################### +import logging +import datetime +import os + + +class SeLogger: + # Log-Level: (0=off 1=Info, 2=Debug) + __loglevel = 2 + + # Target directory for log files + __logdirectory = "/usr/local/smarthome/var/log/StateEngine/" + + # Max age for log files (days) + __logmaxage = 0 + + # Set log level + # loglevel: current loglevel + @staticmethod + def set_loglevel(loglevel): + try: + SeLogger.__loglevel = int(loglevel) + except ValueError: + SeLogger.__loglevel = 2 + logger = logging.getLogger('plugins.stateengine.StateEngineLogger') + logger.error("Das Log-Level muss numerisch angegeben werden.") + + # Set log directory + # logdirectory: Target directory for StateEngine log files + @staticmethod + def set_logdirectory(logdirectory): + SeLogger.__logdirectory = logdirectory + + # Set max age for log files + # logmaxage: Maximum age for log files (days) + @staticmethod + def set_logmaxage(logmaxage): + try: + SeLogger.__logmaxage = int(logmaxage) + except ValueError: + SeLogger.__logmaxage = 0 + logger = logging.getLogger('plugins.stateengine.StateEngineLogger') + logger.error("Das maximale Alter der Logdateien muss numerisch angegeben werden.") + + @staticmethod + def remove_old_logfiles(): + if SeLogger.__logmaxage == 0: + return + logger = logging.getLogger('plugins.stateengine.StateEngineLogger') + logger.info("Removing logfiles older than {0} days".format(SeLogger.__logmaxage)) + count_success = 0 + count_error = 0 + now = datetime.datetime.now() + for file in os.listdir(SeLogger.__logdirectory): + if file.endswith(".log"): + try: + abs_file = os.path.join(SeLogger.__logdirectory, file) + stat = os.stat(abs_file) + mtime = datetime.datetime.fromtimestamp(stat.st_mtime) + age_in_days = (now - mtime).total_seconds() / 86400.0 + if age_in_days > SeLogger.__logmaxage: + os.unlink(abs_file) + count_success += 1 + except Exception as ex: + logger.error(str(ex)) + count_error += 1 + logger.info("{0} files removed, {1} errors occured".format(count_success, count_error)) + + # Return SeLogger instance for given item + # item: item for which the detailed log is + @staticmethod + def create(item): + return SeLogger(item) + + # Constructor + # item: item for which the detailed log is (used as part of file name) + def __init__(self, item): + self.logger = logging.getLogger(__name__) + self.__section = item.property.name.replace(".", "_").replace("/", "") + self.__indentlevel = 0 + self.__date = None + self.__filename = "" + self.update_logfile() + + # Update name logfile if required + def update_logfile(self): + if self.__date == datetime.datetime.today() and self.__filename is not None: + return + self.__date = str(datetime.date.today()) + self.__filename = str(SeLogger.__logdirectory + self.__date + '-' + self.__section + ".log") + + # Increase indentation level + # by: number of levels to increase + def increase_indent(self, by=1): + self.__indentlevel += by + + # Decrease indentation level + # by: number of levels to decrease + def decrease_indent(self, by=1): + if self.__indentlevel > by: + self.__indentlevel -= by + else: + self.__indentlevel = 0 + + # log text something + # level: required loglevel + # text: text to log + def log(self, level, text, *args): + # Section givn: Check level + if level <= SeLogger.__loglevel: + indent = "\t" * self.__indentlevel + text = text.format(*args) + logtext = "{0}{1} {2}\r\n".format(datetime.datetime.now(), indent, text) + with open(self.__filename, mode="a", encoding="utf-8") as f: + f.write(logtext) + + # log header line (as info) + # text: header text + def header(self, text): + self.__indentlevel = 0 + text += " " + self.log(1, text.ljust(80, "=")) + + # log with level=info + # @param text text to log + # @param *args parameters for text + def info(self, text, *args): + self.log(1, text, *args) + + # log with lebel=debug + # text: text to log + # *args: parameters for text + def debug(self, text, *args): + self.log(2, text, *args) + + # log warning (always to main smarthome.py log) + # text: text to log + # *args: parameters for text + # noinspection PyMethodMayBeStatic + def warning(self, text, *args): + self.log(1, "WARNING: " + text, *args) + self.logger.warning(text.format(*args)) + + # log error (always to main smarthome.py log) + # text: text to log + # *args: parameters for text + # noinspection PyMethodMayBeStatic + def error(self, text, *args): + self.log(1, "ERROR: " + text, *args) + self.logger.error(text.format(*args)) + + # log exception (always to main smarthome.py log' + # msg: message to log + # *args: arguments for message + # **kwargs: known arguments for message + # noinspection PyMethodMayBeStatic + def exception(self, msg, *args, **kwargs): + self.log(1, "EXCEPTION: " + str(msg), *args) + self.logger.exception(msg, *args, **kwargs) + + +class SeLoggerDummy: + # Constructor + # item: item for which the detailed log is (used as part of file name) + # noinspection PyUnusedLocal + def __init__(self, item=None): + self.logger = logging.getLogger(__name__) + + # Update name logfile if required + def update_logfile(self): + pass + + # Increase indentation level + # by: number of levels to increase + def increase_indent(self, by=1): + pass + + # Decrease indentation level + # by: number of levels to decrease + def decrease_indent(self, by=1): + pass + + # log text something + # level: required loglevel + # text: text to log + def log(self, level, text, *args): + pass + + # log header line (as info) + # text: header text + def header(self, text): + pass + + # log with level=info + # @param text text to log + # @param *args parameters for text + def info(self, text, *args): + pass + + # log with lebel=debug + # text: text to log + # *args: parameters for text + def debug(self, text, *args): + pass + + # log warning (always to main smarthome.py log) + # text: text to log + # *args: parameters for text + # noinspection PyMethodMayBeStatic + def warning(self, text, *args): + self.logger.warning(text.format(*args)) + + # log error (always to main smarthome.py log) + # text: text to log + # *args: parameters for text + # noinspection PyMethodMayBeStatic + def error(self, text, *args): + self.logger.error(text.format(*args)) + + # log exception (always to main smarthome.py log' + # msg: message to log + # *args: arguments for message + # **kwargs: known arguments for message + # noinspection PyMethodMayBeStatic + def exception(self, msg, *args, **kwargs): + self.logger.exception(msg, *args, **kwargs) diff --git a/stateengine/_pv_1_4_2/StateEngineState.py b/stateengine/_pv_1_4_2/StateEngineState.py new file mode 100755 index 000000000..d372c064a --- /dev/null +++ b/stateengine/_pv_1_4_2/StateEngineState.py @@ -0,0 +1,193 @@ +#!/usr/bin/env python3 +# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab +######################################################################### +# Copyright 2014- Thomas Ernst offline@gmx.net +######################################################################### +# Finite state machine plugin for SmartHomeNG +# +# This plugin is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This plugin is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this plugin. If not, see . +######################################################################### +from . import StateEngineTools +from . import StateEngineConditionSets +from . import StateEngineActions +from . import StateEngineValue + + +# Class representing an object state, consisting of name, conditions to be met and configured actions for state +class SeState(StateEngineTools.SeItemChild): + # Return id of state (= id of defining item) + @property + def id(self): + return self.__id + + # Return name of state + @property + def name(self): + return self.__name + + # Return text of state + @property + def text(self): + return self.__text.get(self.__name) + + # Constructor + # abitem: parent SeItem instance + # item_state: item containing configuration of state + def __init__(self, abitem, item_state): + super().__init__(abitem) + self.__item = item_state + self.__id = self.__item.property.name + self.__name = "" + self.__text = StateEngineValue.SeValue(self._abitem, "State Name", False, "str") + self.__conditions = StateEngineConditionSets.SeConditionSets(self._abitem) + self.__actions_enter_or_stay = StateEngineActions.SeActions(self._abitem) + self.__actions_enter = StateEngineActions.SeActions(self._abitem) + self.__actions_stay = StateEngineActions.SeActions(self._abitem) + self.__actions_leave = StateEngineActions.SeActions(self._abitem) + self._log_info("Init state {}", item_state.property.name) + self._log_increase_indent() + try: + self.__fill(self.__item, 0) + finally: + self._log_decrease_indent() + + # Check conditions if state can be entered + # returns: True = At least one enter condition set is fulfulled, False = No enter condition set is fulfilled + def can_enter(self): + self._log_info("Check if state '{0}' ('{1}') can be entered:", self.id, self.name) + self._log_increase_indent() + result = self.__conditions.one_conditionset_matching() + self._log_decrease_indent() + if result: + self._log_info("State can be entered") + else: + self._log_info("State can not be entered") + return result + + # log state data + def write_to_log(self): + self._log_info("State {0}:", self.id) + self._log_increase_indent() + self._log_info("Name: {0}", self.name) + self.__text.write_to_logger() + if self.__conditions.count() > 0: + self._log_info("Condition sets to enter state:") + self._log_increase_indent() + self.__conditions.write_to_logger() + self._log_decrease_indent() + if self.__actions_enter.count() > 0: + self._log_info("Actions to perform on enter:") + self._log_increase_indent() + self.__actions_enter.write_to_logger() + self._log_decrease_indent() + if self.__actions_stay.count() > 0: + self._log_info("Actions to perform on stay:") + self._log_increase_indent() + self.__actions_stay.write_to_logger() + self._log_decrease_indent() + if self.__actions_enter_or_stay.count() > 0: + self._log_info("Actions to perform on enter or stay:") + self._log_increase_indent() + self.__actions_enter_or_stay.write_to_logger() + self._log_decrease_indent() + if self.__actions_leave.count() > 0: + self._log_info("Actions to perform on leave:") + self._log_increase_indent() + self.__actions_leave.write_to_logger() + self._log_decrease_indent() + self._log_decrease_indent() + + # run actions when entering the state + # item_allow_repeat: Is repeating actions generally allowed for the item? + def run_enter(self, allow_item_repeat: bool): + self._log_increase_indent() + self.__actions_enter.execute(False, allow_item_repeat, self.__actions_enter_or_stay) + self._log_decrease_indent() + + # run actions when staying at the state + # item_allow_repeat: Is repeating actions generally allowed for the item? + def run_stay(self, allow_item_repeat: bool): + self._log_increase_indent() + self.__actions_stay.execute(True, allow_item_repeat, self.__actions_enter_or_stay) + self._log_decrease_indent() + + # run actions when leaving the state + # item_allow_repeat: Is repeating actions generally allowed for the item? + def run_leave(self, allow_item_repeat: bool): + self._log_increase_indent() + self.__actions_leave.execute(False, allow_item_repeat) + self._log_decrease_indent() + + # Read configuration from item and populate data in class + # item_state: item to read from + # recursion_depth: current recursion_depth (recursion is canceled after five levels) + # item_stateengine: StateEngine-Item defining items for conditions + # abitem_object: Related SeItem instance for later determination of current age and current delay + def __fill(self, item_state, recursion_depth): + if recursion_depth > 5: + self._log_error("{0}/{1}: too many levels of 'use'", self.id, item_state.property.name) + return + + # Import data from other item if attribute "use" is found + if "se_use" in item_state.conf: + item_state.expand_relativepathes('se_use', '', '') + use_item = self._abitem.return_item(item_state.conf["se_use"]) + if use_item is not None: + self.__fill(use_item, recursion_depth + 1) + else: + self._log_error("{0}: Referenced item '{1}' not found!", item_state.property.name, item_state.conf["se_use"]) + + # Get action sets and condition sets + parent_item = item_state.return_parent() + child_items = item_state.return_children() + for child_item in child_items: + child_name = StateEngineTools.get_last_part_of_item_id(child_item) + try: + if child_name == "on_enter": + for attribute in child_item.conf: + self.__actions_enter.update(attribute, child_item.conf[attribute]) + elif child_name == "on_stay": + for attribute in child_item.conf: + self.__actions_stay.update(attribute, child_item.conf[attribute]) + elif child_name == "on_enter_or_stay": + for attribute in child_item.conf: + self.__actions_enter_or_stay.update(attribute, child_item.conf[attribute]) + elif child_name == "on_leave": + for attribute in child_item.conf: + self.__actions_leave.update(attribute, child_item.conf[attribute]) + elif child_name == "enter" or child_name.startswith("enter_"): + self.__conditions.update(child_name, child_item, parent_item) + except ValueError as ex: + raise ValueError("Condition {0}: {1}".format(child_name, str(ex))) + + # Actions defined directly in the item go to "enter_or_stay" + for attribute in item_state.conf: + self.__actions_enter_or_stay.update(attribute, item_state.conf[attribute]) + + # if an item name is given, or if we do not have a name after returning from all recursions, + # use item name as state name + if str(item_state) != item_state.property.name or (self.__name == "" and recursion_depth == 0): + self.__name = str(item_state) + if "se_name" in item_state.conf: + self.__text.set_from_attr(item_state, "se_name", self.__text.get(None)) + elif self.__text.is_empty() and recursion_depth == 0: + self.__text.set("value:" + self.__name) + + # Complete condition sets and actions at the end + if recursion_depth == 0: + self.__conditions.complete(item_state) + self.__actions_enter.complete(item_state) + self.__actions_stay.complete(item_state) + self.__actions_enter_or_stay.complete(item_state) + self.__actions_leave.complete(item_state) diff --git a/stateengine/_pv_1_4_2/StateEngineTools.py b/stateengine/_pv_1_4_2/StateEngineTools.py new file mode 100755 index 000000000..21cebd1dd --- /dev/null +++ b/stateengine/_pv_1_4_2/StateEngineTools.py @@ -0,0 +1,234 @@ +#!/usr/bin/env python3 +# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab +######################################################################### +# Copyright 2014- Thomas Ernst offline@gmx.net +######################################################################### +# Finite state machine plugin for SmartHomeNG +# +# This plugin is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This plugin is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this plugin. If not, see . +######################################################################### +import datetime + +# +# Some general tool functions +# + + +# Find a certain item below a given item. +# item: Item to search below +# child_id: Id of child item to search (without prefixed id of "item") +# returns: child item if found, otherwise None +def get_child_item(item, child_id): + search_id = item.property.name + "." + child_id + for child in item.return_children(): + if child.property.name == search_id: + return child + return None + + +# Returns the last part of the id of an item (everythig behind last .) +# item: Item for which the last part of the id should be returned +# returns: last part of item id +def get_last_part_of_item_id(item): + return item.property.name.rsplit(".", 1)[1] + + +# cast a value as numeric. Throws ValueError if cast not possible +# Taken from smarthome.py/lib/item.py +# value: value to cast +# returns: value as num or float +# noinspection PyBroadException +def cast_num(value): + if isinstance(value, float): + return value + try: + return int(value) + except: + pass + try: + return float(value) + except: + pass + raise ValueError("Can't cast {0} to int!".format(str(value))) + + +# cast a value as boolean. Throws ValueError or TypeError if cast is not possible +# Taken from smarthome.py/lib/item.py +# value: value to cast +# returs: value as boolean +def cast_bool(value): + if type(value) in [bool, int, float]: + if value in [False, 0]: + return False + elif value in [True, 1]: + return True + else: + raise ValueError("Can't cast {0} to bool!".format(str(value))) + elif type(value) in [str, str]: + if value.lower() in ['0', 'false', 'no', 'off']: + return False + elif value.lower() in ['1', 'true', 'yes', 'on']: + return True + else: + raise ValueError("Can't cast {0} to bool!".format(str(value))) + else: + raise ValueError("Can't cast {0} to bool!".format(str(value))) + + +# cast a value as string. Throws ValueError if cast is not possible +# Taken from smarthome.py/lib/item.py +# value: value to cast +# returns: value as string +def cast_str(value): + if isinstance(value, str): + return value + else: + raise ValueError("Can't cast {0} to str!".format(str(value))) + + +# cast value as datetime.time. Throws ValueError if cast is not possible +# value: value to cast +# returns: value as datetime.time +def cast_time(value): + if isinstance(value, datetime.time): + return value + + orig_value = value + value = value.replace(",", ":") + value_parts = value.split(":") + if len(value_parts) != 2: + raise ValueError("Can not cast '{0}' to data type 'time' due to incorrect format!".format(orig_value)) + else: + try: + hour = int(value_parts[0]) + minute = int(value_parts[1]) + except ValueError: + raise ValueError("Can not cast '{0}' to data type 'time' due to non-numeric parts!".format(orig_value)) + if hour == 24 and minute == 0: + return datetime.time(23, 59, 59) + else: + return datetime.time(hour, minute) + + +# find a certain attribute for a generic condition. If an "use"-attribute is found, the "use"-item is searched +# recursively +# smarthome: instance of smarthome.py base class +# base_item: base item to search in +# attribute: name of attribute to find +def find_attribute(smarthome, base_item, attribute, recursion_depth=0): + # 1: parent of given item could have attribute + parent_item = base_item.return_parent() + if parent_item is not None and attribute in parent_item.conf: + return parent_item.conf[attribute] + + # 2: if item has attribute "se_use", get the item to use and search this item for required attribute + if "se_use" in base_item.conf: + if recursion_depth > 5: + return None + use_item = smarthome.return_item(base_item.conf["se_use"]) + if use_item is not None: + result = find_attribute(smarthome, use_item, attribute, recursion_depth + 1) + if result is not None: + return result + + # 3: nothing found + return None + + +# partition value at splitchar and strip resulting parts +# value: what to split +# splitchar: where to split +# returns: Parts before and after split, whitespaces stripped +def partition_strip(value, splitchar): + if value.startswith("se_") and splitchar == "_": + part1, __, part2 = value[3:].partition(splitchar) + return "se_" + part1.strip(), part2.strip() + else: + part1, __, part2 = value.partition(splitchar) + return part1.strip(), part2.strip() + + +# return string representation of eval function +# eval_func: eval function +# returns: string representation +def get_eval_name(eval_func): + if eval_func is None: + return None + if eval_func is not None: + if isinstance(eval_func, str): + return eval_func + else: + return eval_func.__module__ + "." + eval_func.__name__ + + +# determine original caller/source +# smarthome: instance of smarthome.py +# caller: caller +# source: source +def get_original_caller(smarthome, caller, source, item=None): + original_caller = caller + original_source = source + original_item = item + while original_caller == "Eval": + original_item = smarthome.return_item(original_source) + if original_item is None: + break + original_changed_by = original_item.changed_by() + if ":" not in original_changed_by: + break + original_caller, __, original_source = original_changed_by.partition(":") + if item is None: + return original_caller, original_source + else: + return original_caller, original_source, original_item + + +# General class for everything that is below the SeItem Class +# This class provides some general stuff: +# - Protected wrapper-methods for logging +# - abitem and smarthome Instances +class SeItemChild: + # Constructor + # abitem: parent SeItem instance + def __init__(self, abitem): + self._abitem = abitem + self._sh = abitem.sh + + # wrapper method for logger.info + def _log_info(self, text, *args): + self._abitem.logger.info(text, *args) + + # wrapper method for logger.debug + def _log_debug(self, text, *args): + self._abitem.logger.debug(text, *args) + + # wrapper method for logger.warning + def _log_warning(self, text, *args): + self._abitem.logger.warning(text, *args) + + # wrapper method for logger.error + def _log_error(self, text, *args): + self._abitem.logger.error(text, *args) + + # wrapper method for logger.exception + def _log_exception(self, msg, *args, **kwargs): + self._abitem.logger.exception(msg, *args, **kwargs) + + # wrapper method for logger.increase_indent + def _log_increase_indent(self, by=1): + self._abitem.logger.increase_indent(by) + + # wrapper method for logger.decrease_indent + def _log_decrease_indent(self, by=1): + self._abitem.logger.decrease_indent(by) diff --git a/stateengine/_pv_1_4_2/StateEngineValue.py b/stateengine/_pv_1_4_2/StateEngineValue.py new file mode 100755 index 000000000..d23fcb7e6 --- /dev/null +++ b/stateengine/_pv_1_4_2/StateEngineValue.py @@ -0,0 +1,219 @@ +#!/usr/bin/env python3 +# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab +######################################################################### +# Copyright 2014- Thomas Ernst offline@gmx.net +######################################################################### +# Finite state machine plugin for SmartHomeNG +# +# This plugin is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This plugin is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this plugin. If not, see . +######################################################################### +from . import StateEngineTools +from . import StateEngineEval + + +# Class representing a value for a condition (either value or via item/eval) +class SeValue(StateEngineTools.SeItemChild): + # Constructor + # abitem: parent SeItem instance + # name: Name of value + # allow_value_list: Flag: list of values allowed + # value_type: Type of value to preset the cast function (allowed: str, num, bool, time) + def __init__(self, abitem, name, allow_value_list=False, value_type=None): + super().__init__(abitem) + self.__name = name + self.__allow_value_list = allow_value_list + self.__value = None + self.__item = None + self.__eval = None + self.__varname = None + + if value_type == "str": + self.__cast_func = StateEngineTools.cast_str + elif value_type == "num": + self.__cast_func = StateEngineTools.cast_num + elif value_type == "bool": + self.__cast_func = StateEngineTools.cast_bool + elif value_type == "time": + self.__cast_func = StateEngineTools.cast_time + else: + self.__cast_func = None + + # Indicate of object is empty (neither value nor item nor eval set) + def is_empty(self): + return self.__value is None and self.__item is None and self.__eval is None and self.__varname is None + + # Set value directly from attribute + # item: item containing the attribute + # attribute_name: name of attribute to use + # value_type: type of value for casting (allowed: str, num ,bool, time) + # default_value: default value to be used if item contains no such attribute + def set_from_attr(self, item, attribute_name, default_value=None): + value = item.conf[attribute_name] if attribute_name in item.conf else default_value + self.set(value) + + # Set value + # value: string indicating value or source of value + # name: name of object ("time" is being handeled different) + def set(self, value, name=""): + if isinstance(value, list): + source, field_value = StateEngineTools.partition_strip(value[0], ":") + if field_value == "": + source = "value" + field_value = value + else: + value[0] = field_value + field_value = value + elif isinstance(value, str): + source, field_value = StateEngineTools.partition_strip(value, ":") + if name == "time" and source.isdigit() and field_value.isdigit(): + field_value = value + source = "value" + elif field_value == "": + field_value = source + source = "value" + else: + source = "value" + field_value = value + + if source == "value": + if isinstance(field_value, list) and not self.__allow_value_list: + raise ValueError("{0}: value_in is not allowed".format(self.__name)) + self.__value = self.__do_cast(field_value) + else: + self.__value = None + self.__item = None if source != "item" else self._abitem.return_item(field_value) + self.__eval = None if source != "eval" else field_value + self.__varname = None if source != "var" else field_value + + # Set cast function + # cast_func: cast function + def set_cast(self, cast_func): + self.__cast_func = cast_func + self.__value = self.__do_cast(self.__value) + + # determine and return value + def get(self, default=None): + if self.__value is not None: + return self.__value + elif self.__eval is not None: + return self.__get_eval() + elif self.__item is not None: + return self.__get_from_item() + elif self.__varname is not None: + return self.__get_from_variable() + else: + return default + + def get_type(self): + if self.__value is not None: + return "value" + elif self.__item is not None: + return "item" + elif self.__eval is not None: + return "eval" + elif self.__varname is not None: + return "var" + else: + return None + + # Write condition to logger + def write_to_logger(self): + if self.__value is not None: + self._log_debug("{0}: {1}", self.__name, self.__value) + elif self.__item is not None: + self._log_debug("{0} from item: {1}", self.__name, self.__item.property.name) + elif self.__eval is not None: + self._log_debug("{0} from eval: {1}", self.__name, self.__eval) + elif self.__varname is not None: + self._log_debug("{0} from variable: {1}", self.__name, self.__varname) + + # Get Text (similar to logger text) + # prefix: Prefix for text + # suffix: Suffix for text + def get_text(self, prefix=None, suffix=None): + if self.__value is not None: + value = "{0}: {1}".format(self.__name, self.__value, prefix, suffix) + elif self.__item is not None: + value = "{0} from item: {1}".format(self.__name, self.__item.property.name) + elif self.__eval is not None: + value = "{0} from eval: {1}".format(self.__name, self.__eval) + elif self.__varname is not None: + value = "{0} from variable: {1}".format(self.__name, self.__varname) + else: + value = "{0}: (undefined)".format(self.__name) + + value = value if prefix is None else prefix + value + value = value if suffix is None else value + suffix + return value + + # Cast given value, if cast-function is set + # value: value to cast + def __do_cast(self, value): + if value is not None and self.__cast_func is not None: + try: + if type(value) == list: + # noinspection PyCallingNonCallable + value = [self.__cast_func(element) for element in value] + else: + # noinspection PyCallingNonCallable + value = self.__cast_func(value) + except Exception as ex: + self._log_info("Problem casting value '{0}': {1}.", value, str(ex)) + return None + + return value + + # Determine value by executing eval-function + def __get_eval(self): + if isinstance(self.__eval, str): + # noinspection PyUnusedLocal + sh = self._sh + if "stateengine_eval" in self.__eval: + # noinspection PyUnusedLocal + stateengine_eval = StateEngineEval.SeEval(self._abitem) + try: + value = eval(self.__eval) + except Exception as ex: + self._log_info("Problem evaluating '{0}': {1}.", StateEngineTools.get_eval_name(self.__eval), str(ex)) + return None + else: + try: + # noinspection PyCallingNonCallable + value = self.__eval() + except Exception as ex: + self._log_info("Problem calling '{0}': {1}.", StateEngineTools.get_eval_name(self.__eval), str(ex)) + return None + + return self.__do_cast(value) + + # Determine value from item + def __get_from_item(self): + try: + # noinspection PyCallingNonCallable + value = self.__item() + except Exception as ex: + self._log_info("Problem while reading item '{0}': {1}.", self.__item.property.name, str(ex)) + return None + + return self.__do_cast(value) + + # Fetermine value from variable + def __get_from_variable(self): + try: + value = self._abitem.get_variable(self.__varname) + except Exception as ex: + self._log_info("Problem while reading variable '{0}': {1}.", self.__varname, str(ex)) + return None + + return self.__do_cast(value) diff --git a/stateengine/_pv_1_4_2/__init__.py b/stateengine/_pv_1_4_2/__init__.py new file mode 100755 index 000000000..cc7708084 --- /dev/null +++ b/stateengine/_pv_1_4_2/__init__.py @@ -0,0 +1,226 @@ +#!/usr/bin/env python3 +# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab +######################################################################### +# Copyright 2014- Thomas Ernst offline@gmx.net +######################################################################### +# Finite state machine plugin for SmartHomeNG +# +# This plugin is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This plugin is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this plugin. If not, see . +######################################################################### +from .StateEngineLogger import SeLogger +from . import StateEngineItem +from . import StateEngineCurrent +from . import StateEngineDefaults +from . import StateEngineTools +from . import StateEngineCliCommands +from . import StateEngineFunctions +import logging +import os +from lib.model.smartplugin import * +from bin.smarthome import VERSION +from lib.item import Items + + +class StateEngine(SmartPlugin): + PLUGIN_VERSION = '1.4.2' + + # Constructor + # noinspection PyUnusedLocal,PyMissingConstructor + def __init__(self, sh): + + if '.'.join(VERSION.split('.', 2)[:2]) <= '1.5': + self.logger = logging.getLogger(__name__) + self.items = Items.get_instance() + self.__items = {} + self.alive = False + self.__cli = None + self.init_webinterface() + try: + log_level = self.get_parameter_value("log_level") + log_directory = self.get_parameter_value("log_directory") + self.logger.info("Init StateEngine (log_level={0}, log_directory={1})".format(log_level, log_directory)) + + StateEngineDefaults.startup_delay = self.get_parameter_value("startup_delay_default") + StateEngineDefaults.suspend_time = self.get_parameter_value("suspend_time_default") + StateEngineDefaults.write_to_log(self.logger) + + StateEngineCurrent.init(self.get_sh()) + + if log_level > 0: + if log_directory[0] != "/": + base = self.get_sh().get_basedir() + if base[-1] != "/": + base += "/" + log_directory = base + log_directory + if not os.path.exists(log_directory): + os.makedirs(log_directory) + SeLogger.set_loglevel(log_level) + SeLogger.set_logdirectory(log_directory) + text = "StateEngine extended logging is active. Logging to '{0}' with loglevel {1}." + self.logger.info(text.format(log_directory, log_level)) + log_maxage = self.get_parameter_value("log_maxage") + if log_level > 0 and log_maxage > 0: + self.logger.info("StateEngine extended log files will be deleted after {0} days.".format(log_maxage)) + SeLogger.set_logmaxage(log_maxage) + cron = ['init', '30 0 * *'] + self.scheduler_add('StateEngine: Remove old logfiles', SeLogger.remove_old_logfiles, cron=cron, offset=0) + + self.get_sh().stateengine_plugin_functions = StateEngineFunctions.SeFunctions(self.get_sh(), self.logger) + except Exception: + self._init_complete = False + return + + # Parse an item + # noinspection PyMethodMayBeStatic + def parse_item(self, item): + if "se_manual_include" in item.conf or "se_manual_exclude" in item.conf: + item._eval = "sh.stateengine_plugin_functions.manual_item_update_eval('" + item.property.name + "', caller, source)" + elif "se_manual_invert" in item.conf: + item._eval = "not sh." + item.property.name + "()" + + return None + + # Initialization of plugin + def run(self): + # Initialize + self.logger.info("Init StateEngine items") + for item in self.items.find_items("se_plugin"): + if item.conf["se_plugin"] == "active": + try: + ab_item = StateEngineItem.SeItem(self.get_sh(), item) + self.__items[ab_item.id] = ab_item + except ValueError as ex: + self.logger.error("Item: {0}: {1}".format(item.property.name, str(ex))) + + if len(self.__items) > 0: + self.logger.info("Using StateEngine for {} items".format(len(self.__items))) + else: + self.logger.info("StateEngine deactivated because no items have been found.") + + self.__cli = StateEngineCliCommands.SeCliCommands(self.get_sh(), self.__items, self.logger) + + self.alive = True + self.get_sh().stateengine_plugin_functions.ab_alive = True + + # Stopping of plugin + def stop(self): + self.alive = False + + # Determine if caller/source are contained in changed_by list + # caller: Caller to check + # source: Source to check + # changed_by: List of callers/source (element format :) to check against + def is_changed_by(self, caller, source, changed_by): + original_caller, original_source = StateEngineTools.get_original_caller(self.get_sh(), caller, source) + for entry in changed_by: + entry_caller, __, entry_source = entry.partition(":") + if (entry_caller == original_caller or entry_caller == "*") and ( + entry_source == original_source or entry_source == "*"): + return True + return False + + # Determine if caller/source are not contained in changed_by list + # caller: Caller to check + # source: Source to check + # changed_by: List of callers/source (element format :) to check against + def not_changed_by(self, caller, source, changed_by): + original_caller, original_source = StateEngineTools.get_original_caller(self.get_sh(), caller, source) + for entry in changed_by: + entry_caller, __, entry_source = entry.partition(":") + if (entry_caller == original_caller or entry_caller == "*") and ( + entry_source == original_source or entry_source == "*"): + return False + return True + + def init_webinterface(self): + """" + Initialize the web interface for this plugin + + This method is only needed if the plugin is implementing a web interface + """ + try: + self.mod_http = Modules.get_instance().get_module('http') # try/except to handle running in a core version that does not support modules + except: + self.mod_http = None + if self.mod_http == None: + self.logger.error("Plugin '{}': Not initializing the web interface".format(self.get_shortname())) + return False + + import sys + if not "SmartPluginWebIf" in list(sys.modules['lib.model.smartplugin'].__dict__): + self.logger.warning("Plugin '{}': Web interface needs SmartHomeNG v1.5 and up. Not initializing the web interface".format(self.get_shortname())) + return False + + # set application configuration for cherrypy + webif_dir = self.path_join(self.get_plugin_dir(), 'webif') + config = { + '/': { + 'tools.staticdir.root': webif_dir, + }, + '/static': { + 'tools.staticdir.on': True, + 'tools.staticdir.dir': 'static' + } + } + + # Register the web interface as a cherrypy app + self.mod_http.register_webif(WebInterface(webif_dir, self), + self.get_shortname(), + config, + self.get_classname(), self.get_instance_name(), + description='') + + return True + + +# ------------------------------------------ +# Webinterface of the plugin +# ------------------------------------------ + +import cherrypy +from jinja2 import Environment, FileSystemLoader + +class WebInterface(SmartPluginWebIf): + + + def __init__(self, webif_dir, plugin): + """ + Initialization of instance of class WebInterface + + :param webif_dir: directory where the webinterface of the plugin resides + :param plugin: instance of the plugin + :type webif_dir: str + :type plugin: object + """ + self.logger = logging.getLogger(__name__) + self.webif_dir = webif_dir + self.plugin = plugin + self.tplenv = self.init_template_environment() + + + @cherrypy.expose + def index(self, action=None, item_id=None, item_path=None, reload=None, page='index'): + """ + Build index.html for cherrypy + + Render the template and return the html file to be delivered to the browser + + :return: contents of the template after beeing rendered + """ + item = self.plugin.items.return_item(item_path) + + tmpl = self.tplenv.get_template('{}.html'.format(page)) + # add values to be passed to the Jinja2 template eg: tmpl.render(p=self.plugin, interface=interface, ...) + return tmpl.render(p=self.plugin, + language=self.plugin._sh.get_defaultlanguage(), now=self.plugin.shtime.now()) diff --git a/stateengine/_pv_1_4_2/autblind_update.sh b/stateengine/_pv_1_4_2/autblind_update.sh new file mode 100755 index 000000000..8a8d70248 --- /dev/null +++ b/stateengine/_pv_1_4_2/autblind_update.sh @@ -0,0 +1,72 @@ +#!/bin/bash +DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )" +SCRIPTSYSTEM=$(uname -a) +stringContain() { [ -z "${2##*$1*}" ] && { [ -z "$1" ] || [ -n "$2" ] ;} ; } +items_mac () { +echo "Updating item yaml on Mac OS X" +sudo sed -i {} 's/as_/se_/g' ../../items/*.yaml 2>&1 +sudo sed -i {} 's/autostate_/stateengine_/g' ../../items/*.yaml 2>&1 +sudo sed -i {} 's/autoblind/stateengine/g' ../../items/*.yaml 2>&1 +} + +items_linux () { +echo "Updating item yaml on Linux" +sudo sed -i 's/as_/se_/g' ../../items/*.yaml 2>&1 +sudo sed -i 's/autostate_/stateengine_/g' ../../items/*.yaml 2>&1 +sudo sed -i 's/autoblind/stateengine/g' ../../items/*.yaml 2>&1 +} + +update_items () { + if stringContain 'Darwin' $SCRIPTSYSTEM; then items_mac; else items_linux; fi +} + +logics_mac () { +echo "Updating logics on Mac OS X" +sudo sed -i {} 's/autostate_/stateengine_/g' ../../logics/*.py 2>&1 +sudo sed -i {} 's/autoblind/stateengine/g' ../../logics/*.py 2>&1 +} + +logics_linux () { +echo "Updating logics on Linux" +sudo sed -i 's/autostate_/stateengine_/g' ../../logics/*.py 2>&1 +sudo sed -i 's/autoblind/stateengine/g' ../../logics/*.py 2>&1 +} + +update_logics () { + if stringContain 'Darwin' $SCRIPTSYSTEM; then logics_mac; else logics_linux; fi +} + +rename_files () { +find ../../var/cache/ -type f -name '*autoblind*' -exec bash -c 'mv "$0" "${0/\autoblind/stateengine}"' {} \; +find ../../var/cache/ -type f -name '*autostate*' -exec bash -c 'mv "$0" "${0/\autostate/stateengine}"' {} \; +} + +cd $DIR +echo "Changed to directory: $DIR. Running on $SCRIPTSYSTEM" +echo "This script replaces as_* entries by se_* entries, autostate and autoblind entries by stateengine." + echo "Do you want to update all item yaml files?" + select rerun in "Update" "Skip"; do + case $rerun in + "Update" ) update_items;break;; + "Skip" ) echo "Skipping"; break;; + *) echo "Skipping"; break;; + esac + done + echo "Do you want to update your logics files and replace autostate/autoblind entries by stateengine?" + select rerun in "Update" "Skip"; do + case $rerun in + "Update" ) update_logics;break;; + "Skip" ) echo "Skipping"; break;; + *) echo "Skipping"; break;; + esac + done +echo "" +echo "This script renames all cache files including autoblind or autostate to stateengine" + echo "Do you want to rename cache files?" + select rerun in "Rename" "Skip"; do + case $rerun in + "Rename" ) rename_files;break;; + "Skip" ) echo "Skipping"; break;; + *) echo "Skipping"; break;; + esac + done diff --git a/stateengine/_pv_1_4_2/plugin.yaml b/stateengine/_pv_1_4_2/plugin.yaml new file mode 100755 index 000000000..8becead9c --- /dev/null +++ b/stateengine/_pv_1_4_2/plugin.yaml @@ -0,0 +1,523 @@ +# Metadata for the StateEngine plugin +plugin: + # Global plugin attributes + type: system + description: + de: 'Zustandsautomat für SmarthomeNG, ehemals AutoBlind' + en: 'Finite state machine for SmarthomeNG, previously known as AutoBlind' + description_long: + de: 'Der ursprüngliche Zweck dieses Plugins war es, Jalousien zu + steuern. Mit den steigenden Anforderungen hat es sich jedoch zu + einem flexiblen Zustandsautomaten entwickelt, mit dem nahezu alles + gesteuert werden kann. Im Prinzip ist es ein `endlicher + Automat `_. + Dabei arbeitet das Plugin nicht mit Events, die zu konkreten Zuständen + führen, sondern mit einer hierarchischen Evaluierung der Zustände. + ' + en: 'Initially this plugin was used to automatically control blinds. + Meanwhile it is a flexible fully featured `finite state machine + `_. It does not + work with typical events to define which state is evaluated next but + with hierarchical states. + ' + maintainer: i-am-offline, onkelandy + tester: '?' + state: ready + documentation: https://www.smarthomeng.de/user/plugins/stateengine/user_doc.html + support: https://knx-user-forum.de/forum/supportforen/smarthome-py/1303071-stateengine-plugin-support + + version: 1.4.2 + sh_minversion: 1.5d + multi_instance: False + classname: StateEngine + restartable: unknown + attribute_prefix: se + +parameters: + # Definition of parameters to be configured in etc/plugin.yaml + startup_delay_default: + type: int + default: 10 + valid_min: -1 + valid_max: 600 + description: + de: 'Vorgabe für Verzögerung der ersten Zustandsermittlung beim Start' + en: 'Default delay for first state determination at startup' + description_long: + de: '**Vorgabewert für die Startverzögerung der ersten Zustandsermittlung beim Start von smarthomeNG:**\n + Beim Starten von smarthomeNG dauert es üblicherweise einige + Sekunden, bis alle Items initialisiert sind. Um zu verhindern, + dass die erste Zustandsermittlung stattfindet, bevor alle Items + ihren Initialwert haben, wird die erste Zustandsermittlung + verzögert. Die Dauer der Verzögerung kann bei den Objekt-Items + angegeben werden. Wenn bei einem Objekt-Item kein Wert angegeben + ist, wird der hier angegebene Standardwert verwendet.\n + \n + - Zahl größer 0: + Angabe der Startverzögerung in Sekunden. Während der + Startverzögerung sind die Auslöser der Zustandsermittlung + inaktiv.\n + - 0: + Keine Startverzögerung. Die erste Zustandsermittlung wird direkt + nach der Initialisierung des Objekt-Items durchgeführt.\n + - -1: + Es wird keine erste Zustandsermittlung durchgeführt.\n + \n + Ohne Angabe dieses Parameters wird der Standardwert von 10 Sekunden angenommen. + ' + en: '**Default delay for first state determination at startup:**\n + At smarthome startup some items might not be initialized correctly. + To avoid a wrong state evaluation the evaluation can be postponed by the + given amount of seconds. + \n + - digit higher than 0: start delay in seconds\n + - 0: no start delay, immediate init\n + - -1: no init\n + \n + ' + + suspend_time_default: + type: int + default: 3600 + valid_min: 1 + valid_max: 86400 + description: + de: 'Vorgabezeit zur Unterbrechung der automatischen Steuerung nach manuellen Aktionen' + en: 'Default suspend duration after manual actions' + description_long: + de: '**Vorgabezeit zur Unterbrechung der automatischen Steuerung nach manuellen Aktionen:**\n + Nach manuellen Aktionen kann die Automatik für eine bestimmte Zeit + Unterbrochen werden. Die Dauer dieser Unterbrechungen kann bei den + Objekt-Items angegeben werden. Die Einheit für den Wert sind + Sekunden. Wenn bei einem Objekt-Item kein Wert angegeben ist, wird + der hier angegebene Standardwert verwendet. Wenn kein abweichender + Standardwert in der Plugin-Konfiguration angegeben ist, ist der + Vorgabewert 3600 Sekunden (1 Stunde) + ' + en: '**Default suspend duration after manual actions**: + After a manual change of the item the automatic evaluation is paused. + This value defines the duration of the pause in seconds if the + value is not defined in the object item itself. + ' + + log_level: + type: int + default: 0 + valid_list: + - 0 + - 1 + - 2 + valid_list_description: + de: ['deaktiviert', 'Info', 'Debug'] + en: ['deactivated', 'Info', 'Debug'] + description: + de: 'Erweiterte Protokollierung: Loglevel (0: aus, 1: Info, 2: Debug)' + en: 'Extended Logging: Loglevel (0: off, 1: Info, 2: Debug)' + description_long: + de: '**Erweiterte Protokollierung:**\n + Bei einem Wert von 1 oder 2 wird pro Item eine eigene Logdatei im unter log_directory + angegebenen Verzeichnis angelegt. + Wenn der Parameter nicht angegeben oder auf 0 gestellt ist, + ist die erweiterte Protokollierung deaktiviert. + ' + en: '**Extended Logging**:\n + If 1 or 2 is given there will be a seperate log file for each item in the folder + defined as log_directory. + If the parameter is absent or set to 0 no extended logging is active + ' + + log_directory: + type: str + default: 'var/log/StateEngine/' + description: + de: 'Erweiterte Protokollierung: Verzeichnis für die Protokolldateien' + en: 'Extended Logging: Directory for log files' + description_long: + de: '**Verzeichnis für die Protokolldateien:**\n + Die Logdateien der erweiterten Protokollierung werden in das + hier angegebene Verzeichnis geschrieben. + Wenn der angegebene Verzeichnisname mit "/" beginnt wird er als + absoluter Verzeichnisname behandelt. Alle anderen + Verzeichnisnamen werden als Unterverzeichnisse des smarthomeNG + Basisverzeichnisses behandelt. Das angegebene Verzeichnis wird + angelegt, wenn es nicht existiert. + Wenn hier kein abweichendes Verzeichnis angegeben ist, wird das + Verzeichnis ``/var/log/AutoState/`` + verwendet. + ' + en: '**Directory for log files**:\n + If the parameter is absent the log files will be saved to + ``/var/log/AutoState/`` + ' + log_maxage: + type: int + default: 0 + description: + de: 'Erweiterte Protokollierung: Anzahl der Tage, nach der die Dateien im Verzeichnis für die Protokolldateien wieder gelöscht werden sollen' + en: 'Extended Logging: Number of days after which the files in the directory for log files should be deleted' + description_long: + de: '**Log Rotation für erweiterte Protokollierung:**\n + Alte Protokolldateien können nach einer bestimmten Zeit + automatisch gelöscht werden. Durch diesen Parameter wird die Anzahl + der Tage festgelegt, nach der die Dateien gelöscht werden sollen. + Das Löschen ist ausgesetzt, solange der Parameter den Wert 0 hat. + Wenn der Parameter auf einen anderen Wert gesetzt wird, wird das + Alter der Dateien im Protokollverzeichnis ``log_directory`` + täglich geprüft und überalterte Dateien werden gelöscht.\n + \n + **Achtung:**\n + Die Löschfunktionalität prüft und löscht alle + Dateien im Protokollverzeichnis, ob sie Protokolldateien sind + oder nicht. Daher sollten keine anderen Dateien in diesem + Verzeichnis abgelegt werden! + ' + en: '**Log rotation for extended logging:**\n + If this parameter is not set to 0 older log files get deleted after + the given amount of days from the ``log_directory``.\n + \n + **Warning:**\n + Everything gets deleted from the given directory, not just log files! + ' + +item_attributes: + # Definition of item attributes defined by this plugin + type: + type: str + valid_list: + - 'bool' + valid_list_description: + de: ['Der Item Typ muss auf bool gestellt werden!'] + en: ['The item type has to be set to bool'] + description: + de: 'Datentyp des Objekt-Items. Muss "bool" sein.' + en: 'Data type of the object item. Has to be "bool"' + + se_plugin: + type: str + mandatory: True + valid_list: + - 'active' + - 'inactive' + valid_list_description: + de: ['Aktiviert die State Machine', 'Jeder andere Wert deaktiviert die State Machine'] + en: ['Activates the state machine', 'Any other value deactivates the state machine'] + description: + de: 'Kennzeichnet das Item als Objekt-Item des StateEngine-Plugins. Ist der Wert nicht "active", werden keine Zustände evaluiert.' + en: 'Makes the StateEngine-Plugin aware of this item as an object item. If the value is not "active", the state are not evaluated.' + + se_startup_delay: + type: int + valid_min: -1 + valid_max: 600 + description: + de: 'Vorgabe für Verzögerung der ersten Zustandsermittlung beim Start' + en: 'Default delay for first state determination at startup' + description_long: + de: '**Startverzögerung der ersten Zustandsermittlung beim Start von smarthomeNG:**\n + Beim Starten von smarthomeNG dauert es üblicherweise einige + Sekunden, bis alle Items initialisiert sind. Um zu verhindern, + dass die erste Zustandsermittlung stattfindet, bevor alle Items + ihren Initialwert haben, wird die erste Zustandsermittlung + verzögert. Zustandsermittlungen, die durch Items oder Timer vor Ablauf der + Startverzögerung ausgelöst werden, werden nicht durchgeführt. + Die zulässigen Werte für ``se_startup_delay`` sind identisch + mit den zulässigen Werten für den Plugin-Parameter + ``startup_delay_default``. + ' + en: '**Delay for first state determination at startup:**\n + All evaluations are suspended until the startup delay has passed. + The values for ``se_startup_delay`` are the same as for the plugin + parameter ``startup_delay_default``. + ' + + se_laststate_item_name: + type: str + description: + de: 'Id des Items, in dem der Name des aktuellen Zustands abgelegt wird' + en: 'Id of the item that saves the name of the current state' + description_long: + de: '**Id des Items, in dem der Name des aktuellen Zustands abgelegt wird:**\n + In das hier verknüpfte Item wird der Name des aktuellen Zustands + abgelegt. Das Item kann für Displayzwecke verwendet werden. Wenn + das Item ``se_laststate_item_name`` nicht angegeben ist, steht + der Name des aktuellen Zustands nicht zur Verfügung. + ' + en: '**Id of the item that saves the name of the current state:**\n + The item defined here saves the name of the current state for + visualization purposes. If ``se_laststate_item_name`` is not defined + you cannot access the name of the current state. + ' + + se_laststate_item_id: + type: str + description: + de: 'Id des Items, in dem die ID des aktuellen Zustands abgelegt wird' + en: 'Id of the item that saves the ID of the current state' + description_long: + de: '**Id des Items, in dem der aktuelle Zustand abgelegt wird:**\n + In das hier verknüpfte Item wird die Id des aktuellen Zustands + abgelegt. Das Item kann mit dem Attribut ``cache: yes`` + versehen werden, dann bleibt der vorherige Zustand bei einem + Neustart von smarthomeNG erhalten. Wenn das Item nicht angegeben ist, + wird der aktuelle Zustand nur im Plugin gespeichert und geht mit + einem Neustart von smarthomeNG verloren. + ' + en: '**Id of the item that saves the id of the current state:**\n + In combination with the attribute ``cache: yes`` the defined item + can be used to load the last state after the plugin start. Otherwise + it does not know the last valid state before a system restart. + ' + + se_repeat_actions: + type: bool + description: + de: 'Wiederholen der Aktionen bei unverändertem Zustand' + en: 'Repeat actions on eval even if the state stays the same' + description_long: + de: '**Wiederholen der Aktionen bei unverändertem Zustand:**\n + Im Normalfall werden Aktionen jedesmal ausgeführt wenn der + aktuelle Zustand neu ermittelt wurde. Dies ist unabhängig davon, + ob sich der Zustand bei der Neuermittlung geändert hat oder nicht. + Durch die Angabe von ``se_repeat_actions: false`` werden die Aktionen + nur beim erstmaligen Aktivieren des Zustands ausgeführt. Diese Option + ist auch für jede Aktion separat verfügbar, um vom hier angegebenen + Wert abzuweichen. + ' + en: '**Repeat actions on eval even if the state stays the same:**\n + Generally actions are executed every time a state is entered, even if + the state does not change. By setting ``se_repeat_actions: false`` + the actions are exclusively when entering the first state the first time. + This option is also available for every action seperately to overrule this setting. + ' + + se_suspend_time: + type: int + valid_min: 1 + valid_max: 86400 + description: + de: 'Dauer der Unterbrechung der automatischen Steuerung nach manuellen Aktionen' + en: 'Suspend duration after manual actions' + description_long: + de: '**Unterbrechung der automatischen Steuerung nach manuellen Aktionen:**\n + Nach manuellen Aktionen kann die Automatik für eine bestimmte Zeit + Unterbrochen werden. Wird die Dauer nicht im Objekt-Item definiert, + wird die Standarddauer aus der Plugin Konfiguration oder der Standardwert + von 3600 Sekunden (1 Stunde) angenommen. + ' + en: '**Suspend duration after manual actions**: + After a manual change of the item the automatic evaluation is paused. + If this value is not defined in the object item, the default value + from the plugin configuration or the default value of 3600 seconds (1 hour) + is used. + ' + + se_item_suspend_end: + type: str + description: + de: 'Id des Items, in dem das Ende der Suspendzeit abgelegt werden soll' + en: 'Id of the item that saves the suspend end time' + description_long: + de: '**Id des Items, in dem das Ende der Suspendzeit abgelegt werden soll:**\n + Für Visualisierungszwecke kann der Inhalt des hier verknüpften Items + angezeigt werden. Dadurch ist ersichtlich, bis wann die Statusevaluierung + noch ausgesetzt wird. + ' + en: '**Id of the item that saves the suspend end time:**\n + To visualize the end time of the suspend state. + ' + +item_structs: + general: + name: Vorlage-Struktur für einen Zustandsautomaten + + state_id: + remark: The id/path of the actual state is assigned to this item by the stateengine + type: str + visu_acl: r + cache: True + + state_name: + remark: The name of the actual state is assigned to this item by the stateengine + type: str + visu_acl: r + cache: True + + rules: + name: Regeln und Item Verweise für den Zustandsautomaten + remark: configure your se_item_* and eval_triggers here + type: bool + se_plugin: active + eval: True + + # se_startup_delay: 30 + # se_repeat_actions: true + # se_suspend_time: 7200 + + se_laststate_item_id: ..state_id + se_laststate_item_name: ..state_name + + state_lock: + name: Zustandsvorlage zum Sperren der Evaluierung + + lock: + type: bool + knx_dpt: 1 + visu_acl: rw + cache: 'on' + + rules: + se_item_lock: ..lock + eval_trigger: ..lock + + lock: + name: gesperrt + + on_leave: + se_action_lock: + - 'function: set' + - 'to: False' + + enter: + se_value_lock: True + + state_suspend: + name: Zustandsvorlage für manuelles Aussetzen + + suspend: + type: bool + knx_dpt: 1 + visu_acl: rw + cache: True + + suspend_end: + type: str + visu_acl: ro + cache: True + + manuell: + type: bool + name: manuell + se_manual_invert: True + remark: Adapt the se_manual_exclude the way you need it + #se_manual_include: KNX:* Force manual mode based on source + se_manual_exclude: + - database:* + + settings: + remark: Use these settings for your condition values + + suspendduration: + remark: duration of suspend mode + type: num + visu_acl: rw + cache: True + initial_value: 60 + + suspend_active: + remark: Use this to (de)activate suspend mode in general + type: bool + visu_acl: rw + cache: True + initial_value: True + + + rules: + se_item_suspend: ..suspend + se_item_retrigger: ..rules + se_item_suspend_end: ..suspend_end + se_item_suspend_active: ..settings.suspend_active + se_suspend_time: eval:stateengine_eval.get_relative_itemvalue('..settings.suspendduration') * 60 + eval_trigger: ..manuell + + suspend: + name: ausgesetzt + + on_enter_or_stay: + se_action_suspend: + - 'function: special' + - 'value: suspend:..suspend, ..manuell' + - 'repeat: True' + - 'order: 1' + se_action_suspend_end: + - 'function: set' + - "to: eval:stateengine_eval.insert_suspend_time('..suspend', suspend_text='%X')" + - 'repeat: True' + - 'order: 2' + se_action_retrigger: + - 'function: set' + - 'to: True' + - 'delay: var:item.suspend_remaining' + - 'repeat: True' + - 'order: 3' + + on_leave: + se_action_suspend: + - 'function: set' + - 'to: False' + se_action_suspend_end: + - 'function: set' + - 'to: ' + + enter_manuell: + se_value_trigger_source: eval:stateengine_eval.get_relative_itemid('..manuell') + se_value_suspend_active: True + + enter_stay: + se_value_laststate: var:current.state_id + se_agemax_suspend: var:item.suspend_time + se_value_suspend: True + se_value_suspend_active: True + + state_release: + name: Zustandsvorlage für Deaktivieren von Suspend und Lock und erneutes Evaluieren der Regeln + + release: + type: bool + knx_dpt: 1 + visu_acl: rw + enforce_updates: True + + rules: + se_item_lock: ..lock + se_item_suspend: ..suspend + se_item_retrigger: ..rules + se_item_release: ..release + se_item_suspend_end: ..suspend_end + eval_trigger: ..release + + release: + name: release + + on_enter_or_stay: + se_action_suspend: + - 'function: set' + - 'to: False' + - 'order: 1' + se_action_lock: + - 'function: set' + - 'to: False' + - 'order: 2' + se_action_release: + - 'function: set' + - 'to: False' + - 'order: 3' + se_action_suspend_end: + - 'function: set' + - 'to: ' + - 'order: 4' + se_action_retrigger: + - 'function: set' + - 'to: True' + - 'order: 5' + - 'repeat: True' + - 'delay: 1' + + enter: + se_value_release: True + +plugin_functions: NONE +# Definition of plugin functions defined by this plugin + +logic_parameters: NONE +# Definition of logic parameters defined by this plugin + diff --git a/stateengine/_pv_1_4_2/sv_widgets/stateengine.example.html b/stateengine/_pv_1_4_2/sv_widgets/stateengine.example.html new file mode 100755 index 000000000..eeb10fb33 --- /dev/null +++ b/stateengine/_pv_1_4_2/sv_widgets/stateengine.example.html @@ -0,0 +1,52 @@ +/** +* ----------------------------------------------------------------------------- +* @package smartVISU +* @author Martin Gleiß +* @copyright 2012 - 2015 +* @license GPL [http://www.gnu.de] +* ----------------------------------------------------------------------------- +*/ +{% extends "base.html" %} + + +{% import "widgets/stateengine.html" as stateengine %} +{% import "basic.html" as basic %} + +{% block content %} +
Here you could define any basic widget you want
+
+

Changing the state via menu changes the icon of the stateengine widget. This demo is limited but in a real world scenario the widget would work like followed. Of course you can set either the locked item or the release item to empty to change the behaviour of the widget.

+ Short click/tap:
+ If the item is in any state but locked, the stateengine item would change to locked mode
+ If the item is in locked state, the stateengine would leave locked mode and retrigger evaluation (not working in this demo)
+ If the item is in suspended mode the release state would be triggered instead of the locked (not working in this demo)
+

+ Long click/tap:
+ Open a popup window with further widgets (limited function in this demo)
+ For this demo this is achieved by using javascript, but in a real world example you can use the approach mentioned in the README. + +

+ + +
Example:
+ {% filter trim|escape|nl2br %}{% verbatim %} + {{ stateengine.state('updatestuff', 'stateengine_item', 'lockitem', 'releaseitem', 'icons/ws/secur_locked.svg, icons/ws/time_manual_mode.svg, icons/ws/time_automatic.svg', 'locked,suspended,standard', 'popupstuff') }} + {% endverbatim %}{% endfilter %} +
+
+ {{ basic.select('', 'stateengine_item', '', ['locked', 'suspended', 'standard'], '', ['locked', 'suspended', 'standard']) }} + {{ stateengine.state('updatestuff', 'stateengine_item', 'lockitem', 'releaseitem', 'icons/ws/secur_locked.svg, icons/ws/time_manual_mode.svg, icons/ws/time_automatic.svg', 'locked,suspended,standard', 'popupstuff') }} +
+ +
+ +{% endblock %} diff --git a/stateengine/_pv_1_4_2/sv_widgets/stateengine.js b/stateengine/_pv_1_4_2/sv_widgets/stateengine.js new file mode 100755 index 000000000..115a012af --- /dev/null +++ b/stateengine/_pv_1_4_2/sv_widgets/stateengine.js @@ -0,0 +1,55 @@ +// ----- stateenginestatus ------------------------------------------------------ + +$.widget("sv.stateengine", $.sv.widget, { + + initSelector: '[data-widget="stateengine.state"]', + + options: { + + }, + _update: function (response) { + // get list of values and images + list_val = this.element.attr('data-vals').explode(); + list_img = this.element.attr('data-img').explode(); + + // get the index of the value received + idx = list_val.indexOf(response.toString()); + + // update the image + $('#' + this.element.attr("id") + ' img').attr('src', list_img[idx]); + + $('#' + this.element.attr("id")).show(); + console.log('ID '+this.element.attr('id')+' image '+list_img[idx]); + // memorise the index for next use + this.element.val(idx); + }, + + _events: { + 'taphold': function (event, response) { + event.preventDefault(); + event.stopPropagation(); + console.log('Long press '+this.element.attr('rel')); + + $("#"+this.element.attr('rel')).popup( "open" ); + return false; + }, + 'tap': function (event, response) { + if (this.element.attr('lock-item') == '' && this.element.attr('release-item') == '') { + $("#"+this.element.attr('rel')).popup( "open" ); + } + else if (list_val[idx] == 'locked' && this.element.attr('lock-item') != ''){ + io.write(this.element.attr('lock-item'), (this.element.val() == this.element.attr('data-val-on') ? this.element.attr('data-val-off') : this.element.attr('data-val-on')) ); + console.log('Short press lock '+this.element.attr('rel')); + } + else if (list_val[idx] == 'suspended' && this.element.attr('release-item') != ''){ + io.write(this.element.attr('release-item'), true ); + console.log('Short press release '+this.element.attr('rel')); + } + else { + io.write(this.element.attr('lock-item'), (this.element.val() == this.element.attr('data-val-on') ? this.element.attr('data-val-off') : this.element.attr('data-val-on')) ); + console.log('Short press else '+this.element.val()+', setting lock item '+ this.element.attr('lock-item')); + } + } + } + +}); diff --git a/stateengine/_pv_1_4_2/sv_widgets/widget_stateengine.html b/stateengine/_pv_1_4_2/sv_widgets/widget_stateengine.html new file mode 100755 index 000000000..1f469293d --- /dev/null +++ b/stateengine/_pv_1_4_2/sv_widgets/widget_stateengine.html @@ -0,0 +1,19 @@ +/** +* Extended Autostate widget: showing an icon depending on the state an item is in (using autoblind plugin). Popup on longpress. +* +* @param {id=} unique id for this widget (optional) +* @param {item} an item the state should be shown for +* @param {item=} lock state item for your item (optional) +* @param {release=} release state item for your item. If available this state is activated when you click on the icon (optional) +* @param {image[]} array of icons to be shown corresponding to the values stated in the next attribute +* @param {text[]} array of values corresponding to the icons stated in the previous attribute +* @param {text} id of the popup widget to open on longpress +*/ +{% macro state(id, item, lock, release, pic, val, popup) %} + {% import "basic.html" as basic %} + + {{ basic.icon(pic[0]|deficon('time_automatic'), 'icon0') }} + +{% endmacro %} diff --git a/stateengine/_pv_1_4_2/user_doc.rst b/stateengine/_pv_1_4_2/user_doc.rst new file mode 100755 index 000000000..ef4f78d81 --- /dev/null +++ b/stateengine/_pv_1_4_2/user_doc.rst @@ -0,0 +1,23 @@ +.. index:: Plugins; stateengine +.. index:: stateengine + +stateengine +########### + +Dokumentation +============= + +.. toctree:: + :titlesonly: + + user_doc/user_doc1.rst + user_doc/user_doc2.rst + user_doc/user_doc3.rst + user_doc/user_doc4.rst + user_doc/user_doc5.rst + user_doc/user_doc6.rst + user_doc/user_doc7.rst + user_doc/user_doc8.rst + user_doc/user_doc9.rst + user_doc/user_doc10.rst + user_doc/user_doc11.rst diff --git a/stateengine/_pv_1_4_2/user_doc/user_doc1.rst b/stateengine/_pv_1_4_2/user_doc/user_doc1.rst new file mode 100755 index 000000000..f8221e82c --- /dev/null +++ b/stateengine/_pv_1_4_2/user_doc/user_doc1.rst @@ -0,0 +1,53 @@ +.. index:: Plugins; Stateengine +.. index:: Stateengine; Allgemein + +Allgemein +######### + +.. important:: + + Es ist nicht empfehlenswert, das stateengine Plugin + für sicherheitsrelevante Zustände, wie zum Beispiel das Hochfahren + von Jalousien bei zu viel Wind, zu verwenden. Sicherheitsrelevante + Funktionen müssen so einfach wie möglich aufgebaut sein. Es wird + daher dringend dazu geraten, solche Funktionen unabhängig von + smarthomeNG und dem stateengine Plugin zu realisieren. Für das + Hochfahren von Jalousien bei Windalarm beispielsweise sollte die + Sperrfunktionalität verwendet werden, über die alle aktuellen + Jalousieaktoren verfügen! + +.. rubric:: Einführung + :name: einfuehrungstateengine + +Als Einstieg in das Plugin empfiehlt es sich, den `Blogeintrag `_ +auf der SmarthomeNG Seite zu lesen! + +.. rubric:: Funktionalität + :name: funktionalitaet + +Über zusätzliche Items in den items/\*.yaml Dateien können für beliebige Items +Zustandsautomaten implementiert werden. Jeder Zustand kann Sets von Einstiegsbedingungen haben +und diverse Aktionen auslösen, wenn der Zustand aktiv wird. + +In regelmäßigen Intervallen werden die Zustände für jedes Objekt der angegebenen +Reihe nach geprüft. Der erste Zustand, bei dem eine Gruppe Einstiegsbedingungen +vollständig erfüllt ist, wird zum aktuellen Zustand. Die +Aktionen, die für diesen Zustand definiert sind, werden ausgeführt. + +Wenn kein passender Zustand gefunden wird, passiert nichts, das Objekt verbleibt im vorherigen Zustand. +Dies kann in manchen Fällen Sinn machen, meist bietet es sich aber an, +einen Standardzustand ohne Eingangsbedingungen ganz am Ende der Hierarchie festzulegen. + +Die folgenden Bedingungen können Teil der Bedingungsgruppen sein: + +- Tageszeit (Minimum, Maximum, Wert) +- Wochentag (Minimum, Maximum, Wert) +- Azimut der Sonne (Minimum, Maximum, Wert) +- Altitude der Sonne (Minimum, Maximum, Wert) +- Alter des aktuellen Zustands (Minimum, Maximum, Wert) +- Zufallszahl (Minimum, Maximum, Wert) +- Vorheriger Zustand (Wert) +- Trigger-Objekt, das die Zustandsermittlung ausgelöst hat + +Zusätzlich können beliebige Items (z.B. Temperatur) als Bedingungen geprüft werden +(Minimum, Maximum oder Wert) diff --git a/stateengine/_pv_1_4_2/user_doc/user_doc10.rst b/stateengine/_pv_1_4_2/user_doc/user_doc10.rst new file mode 100755 index 000000000..59ccfc260 --- /dev/null +++ b/stateengine/_pv_1_4_2/user_doc/user_doc10.rst @@ -0,0 +1,376 @@ +.. index:: Plugins; Stateengine +.. index:: Stateengine; Advanced +.. _Advanced: + +Advanced +======== + +Vordefinierte Funktionen +------------------------ + +Das stateengine Plugin stellt verschiedene vordefinierte +Funktionen zur Verfügung, die einfach für +``se_set_`` und ``se_run_`` Aktionen +verwendet werden können: + + +**Sonnenstandsabhängige Lamellenausrichtung** +*Die Neigung der Lamellen wird automatisch von der Höhe der Sonne bestimmt.* + +.. code-block:: yaml + + stateengine_eval.sun_tracking() + +**Zufallszahl** +*Über min und max kann die kleinste/größte Nummer, die zurückgegeben werden soll, festgelegt werden.* + +.. code-block:: yaml + + stateengine_eval.get_random_int(min,max) + +``min`` und ``max`` können weggelassen werden, in diesem Fall sind die +Vorgabewerte 0 für ``min`` und 255 für ``max``. + +**Shell-Kommando ausführen** +*Führt ein Shell-Kommando aus* + +.. code-block:: yaml + + stateengine_eval.execute(command) + +**Wert einer Variable ermitteln** +*Liefert den Wert der Variablen * + +.. code-block:: yaml + + stateengine_eval.get_variable(varname) + +**Item-Id relativ zum Regelwerk-Item ermitteln** +*Eine Item-Id relativ zur Item-Id des Regelwerk-Items wird ermittelt.* + +.. code-block:: yaml + + stateengine_eval.get_relative_itemid(subitem_id) + +**Item-Wert relativ zum Regelwerk-Item ermitteln** +*Der Wert eines Items relativ zur Item-Id des Regelwerk-Items wird ermittelt.* + +.. code-block:: yaml + + stateengine_eval.get_relative_itemvalue(subitem_id) + +**Suspend-Ende in einen Text einsetzen** +*Das Ende der Suspend-Zeit wird in den Text suspend_text eingesetzt.* + +.. code-block:: yaml + + stateengine_eval.insert_suspend_time(suspend_item_id, suspend_text="Ausgesetzt bis %X") + +Im Text sind entsprechende Platzhalter +vorzusehen (Siehe `strftime() and strptime() +Behavior `_). +Wird kein ``suspend_text`` angegeben, so wird als Vorgabewert +"Ausgesetzt bis %X" verwendet. + +Zur Ermittlung des Endes der Suspend-Zeit muss über +``suspend_item_id`` ein Item angegeben werden, dessen Wert bei +Eintritt in den Suspend-Status geändert wird. Über das Alter des +Werts in diesem Item wird die bereits abgelaufene Suspend-Zeit +bestimmt. Dies könnte auch über ein relatives Item angegeben werden, +wobei dieses unbedingt in Anführungszeichen gesetzt werden muss, z.B. ``'..suspend'`` + + +Variablen +--------- + +Im Plugin stehen folgende Variablen zur Verfügung: + +**item.suspend_time:** +*Die Suspend-Time des Items* + +**item.suspend_remaining:** +*Die übrige Dauer des Suspend Zustands* + +**current.state_id:** +*Die Id des Status, der gerade geprüft wird* + +**current.state_name:** +*Der Name des Status, der gerade geprüft wird* + + +Zustandsnamen +------------- + +**name (optional):** +*Name des Zustands* + +Der Name des Zustands wird im Protokoll sowie als Wert für das +über ``se_laststate_item_name`` angegebene Item verwendet. Wenn +kein Name angegeben ist, wird hier die Id des +Zustands-Items verwendet. + +**se_name:** +*Überschreiben des Namens des Zustands* + +Über das Attribut ``se_name`` kann der im Attribut ``name`` angegebene Wert +überschrieben werden, beispielsweise mittels ``eval:sh.eine_funktion()``. +Dies wirkt sich jedoch nur auf den Wert aus, der in das über +``se_laststate_item_name`` angegebene Item geschrieben wird. Dies kann +beispielsweise nützlich sein, um den Namen abhängig von einer Bedingungsgruppe +zu ändern. Ist also z.B. der Zustand auf Grund der Temperatur eingenommen worden, +könnte der Name auf "Zustand (Temp)" geändert werden. Ist der Zustand aufgrund +der Helligkeitsbedingung aktiv, könnte der Name auf "Zustand (Hell)" geändert werden. +Im Protokoll wird immer der über das Attribut ``name`` angegebene Wert verwendet. + + +CLI +--- + +Sofern die eingesetzte smarthomeNG-Version dies unterstützt, +registriert das stateengine-Plugin zwei eigene Kommandos beim +CLI-Plugin. + +**se_list** +*Zeigt eine Liste der Regelwerk-Items, für die das stateengine-Plugin aktiv ist* + +**se_detail ** +*Zeigt Details zum Objekt Item* + + +Sperren +------- + +Für das Sperren der automatischen Zustandsermittlung führt man ein +Sperr-Item ein, das beispielsweise über einen Taster oder die Visu änderbar +ist. Sperr-Item und Zustand können durch ``struct: stateengine.state_lock`` +auf Höhe des Regelwerk-Items automatisch implementiert werden. + +.. rubric:: Das "Sperr"-Item + :name: dassperritem + +Die Sperre soll aktiv sein, wenn das Sperr-Item den Wert ``True`` hat. +Das Sperritem definiert man wie folgt: + +.. code-block:: yaml + + #items/item.yaml + beispiel: + lock: + item: + type: bool + name: Sperr-Item + visu_acl: rw + cache: on + +.. rubric:: Der Sperr-Zustand + :name: dersperrzustand + +Der zugehörige Zustand könnte so aussehen und sollte als erster Zustand definiert +werden, da er anderen Zuständen gegenüber priorisiert werden soll. + +.. code-block:: yaml + + #items/item.yaml + beispiel: + jalousie1: + rules: + # Sperr-Item zu eval_trigger: + eval_trigger: + - + - beispiel.lock.item + + # Items für Bedingungen und Aktionen + se_item_lock: beispiel.lock.item #Siehe Beispiel oben + + locked: + type: foo + name: Manuell gesperrt + + enter: + se_value_lock: true + + +Aussetzen +--------- + +Eine besondere Anforderung: Nach bestimmten manuellen Aktionen (z. +B. über einen Taster, die Visu, o. ä.) soll die automatische +Zustandsermittlung für eine gewisse Zeit ausgesetzt werden. Nach +Ablauf dieser Zeit soll die Automatik wieder aktiv werden. + +Für dieses Verhalten sind zunächst einige weitere Steueritems +erforderlich, dann kann das Verhalten in einem Zustand abgebildet +werden. Suspend-Item und Zustand können durch ``struct: stateengine.state_suspend`` +auf Höhe des Regelwerk-Items automatisch implementiert werden. + +.. rubric:: Das "Suspend"-Item + :name: dassuspenditem + +Zunächst wird ein "Suspend"-Item benötigt. Dieses Item zeigt zum +einen die zeitweise Deaktivierung an, zum, anderen kann die +Deaktivierung über dieses Item vorzeitig beendet werden: + +.. code-block:: yaml + + #items/item.yaml + beispiel: + raffstore1: + automatik: + + suspend: + type: bool + knx_dpt: 1 + visu_acl: rw + cache: 'True' + +.. rubric:: Das "Manuell"-Item + :name: dasmanuellitem + +Ein weiteres Item wird benötigt, um alle Aktionen, die den +Suspend-Zustand auslösen sollen, zu kapseln. Dieses Item ist das +"Manuell"-Item. Es wird so angelegt, dass der Wert dieses Items +bei jeder manuellen Betätigung invertiert wird: + +.. code-block:: yaml + + #items/item.yaml + beispiel: + raffstore1: + automatik: + + manuell: + type: bool + se_manual_invert: 'True' + se_manual_logitem: beispiel.raffstore1.automatik.manuell + se_manual_exclude: + - database:* + - KNX:1.1.4 + eval_trigger: + - taster1 + - taster2 + +In das Attribut ``eval_trigger`` werden alle Items eingetragen, +deren Änderung als manuelle Betätigung gewertet werden soll. + +Das Attribut ``se_manual_invert: true`` veranlasst das +stateengine-Plugin dabei, den Wert des Items bei Änderungen zu +invertieren, wie es für das Auslösen des Suspend-Zustands +erforderlich ist. + +In bestimmten Fällen ist es erforderlich, dass Item-Änderungen, die +durch bestimmte Aufrufe ausgelöst werden, nicht als manuelle +Betätigung gewertet werden. Hierzu zählt zum Beispiel die +Rückmeldung der Raffstore-Position nach dem Verfahren durch den +Jalousieaktor. Hierfür stehen zwei weitere Attribute bereit: + +**as_manual_include** +*Liste der Aufrufe, die als "manuelle Betätigung" gewertet werden sollen* + +**as_manual_exclude** +*Liste der Aufrufe, die nicht als "manuelle Betätigung" gewertet werden sollen* + +Bei beiden Attributen wird eine Liste von Elementen angegeben. Die +einzelnen Elemente bestehen dabei aus dem Aufrufenden +(``Caller``) einem Doppelpunkt und der Quelle (``Source``). Ohne Leerzeichen! +Mehrere Elemente werden durch "|" getrennt bzw. im yaml als Liste deklariert. +Für ``Caller`` und ``Source`` kann dabei jeweils auch ``"*"`` angegeben werden, dies +bedeutet, dass der jeweilige Teil nicht berücksichtigt werd. + +Wenn bei der Prüfung festgestellt wird, dass ein Wert über eine +Eval-Funktionalität geändert wurde, so wird die Änderung +zurückverfolgt bis zur ursprünglichen Änderung, die die Eval-Kette +ausgelöst hat. Diese ursprüngliche Änderung wird dann geprüft. + +Der Wert von ``Caller`` zeigt an, welche Funktionalität das Item +geändert hat. Der Wert von ``Source`` ist Abhängig vom Caller. +Häufig verwendete ``Caller`` sind: + +- ``Init``: Initialisierung von smarthomeNG. ``Source`` ist in der Regel leer +- ``Visu``: Änderung über die Visualisierung (Visu-Plugin). ``Source`` beinhaltet die IP und den Port der Gegenstelle +- ``KNX``: Änderung über das KNX-Plugin. ``Source`` ist die physische Adresse des sendenden Geräts + + +Wenn ``se_manual_include`` oder ``se_manual_exclude`` angegeben +sind, muss ``se_manual_invert`` nicht angegeben werden. + +Um etwaige Probleme mit den exclude und include Funktionen einfacher erkennen zu können, +kann ein spezielles Logging aktiviert werden: ``se_manual_logitem: `` + +.. rubric:: Der Suspend-Zustand + :name: dersuspendzustand + +Mit diesen beiden Items kann nun ein einfacher Suspend-Zustand +definiert werden. Als Aktion im Suspend-Zustand wird dabei die +Sonderaktion "suspend" verwendet. Diese hat zwei Parameter: + +.. code-block:: yaml + + se_special_suspend: suspend:, + + +Der Suspend-Zustand sieht damit wie folgt aus: + +.. code-block:: yaml + + #items/item.yaml + beispiel: + raffstore1: + automatik: + rules: + suspend: + type: foo + name: Ausgesetzt + + on_enter_or_stay: + type: foo + name: Ausführen immer wenn ein Zustand aktiv ist + + # Suspend-Item setzen + se_special_suspend: suspend:beispiel.raffstore1.automatik.suspend,beispiel.raffstore1.automatik.manuell + + on_leave: + type: foo + name: Ausführen beim Verlassen des Zustands + + # Suspend-Item zurücksetzen + se_set_suspend: False + + enter_manuell: + type: foo + name: Bedingung: Suspend beginnen + + #Bedingung: Manuelle Aktion wurde durchgeführt + se_value_trigger_source: beispiel.raffstore1.automatik.manuell + + enter_stay: + type: foo + name: Bedingung: Im Suspend verbleiben + + #Bedingung: Suspend ist aktiv + se_value_laststate: var:current.state_id + + #Bedingung: Suspendzeit ist noch nicht abgelaufen + se_agemax_manuell: var:item.suspend_time + + #Bedingung: Suspend-Item wurde nicht extern geändert + se_value_suspend: True + +Da der Suspend-Zustand anderen Zuständen +vorgehen sollte, steht er üblicherweise sehr weit vorrne in der +Reihenfolge. In der Regel wird der Suspend-Zustand in der +Definition der zweite Zustand nach dem Lock-Zustand sein. + +.. rubric:: Dauer der zeitweisen Deaktivierung + :name: dauerderzeitweisendeaktivierung + +Die Dauer der zeitweisen Deaktivierung wird in der +Plugin-Konfiguration über die Einstellung ``suspend_time_default`` +angegeben. Vorgabewert sind 3600 Sekunden (1 Stunde). Wenn die +Dauer der zeitweisen Deaktivierung für ein einzelnes Regelwerk-Item +abweichend sein soll, kann dort das Attribut + +.. code-block:: yaml + + se_suspend_time: + +angegeben werden. Der Parameter kann auch durch ein Item festgelegt werden. diff --git a/stateengine/_pv_1_4_2/user_doc/user_doc11.rst b/stateengine/_pv_1_4_2/user_doc/user_doc11.rst new file mode 100755 index 000000000..b98aedc70 --- /dev/null +++ b/stateengine/_pv_1_4_2/user_doc/user_doc11.rst @@ -0,0 +1,217 @@ +.. index:: Plugins; Stateengine +.. index:: Stateengine; Aktionen - einzeln +.. _Aktionen - einzeln: + +Aktionen - einzeln +################## + +Es gibt zwei Möglichkeiten, Aktionen zu definieren. + +Bei der Einzelvariante werden alle +Parameter einer Aktion in separaten Attributen definiert. Über den +gemeinsamen Aktionsnamen gehören die Attribute einer Aktion +zusammen. + +Ähnlich wie Bedingungen benötigen auch Aktionen einen Namen. Der +Name ist auch hier beliebig und wird lediglich in der Benennung +der Attribute verwendet. Die Namen aller Attribute, die zu einer +Bedingung gehören, folgen dem Muster ``se__``. + +.. rubric:: Aktion: Item auf einen Wert setzen + :name: aktionitemaufeinenwertsetzen + +.. code-block:: yaml + + se_set_ + +Das Item, das verändert werden soll, muss auf Ebene des +Regelwerk-Items über das Attribut ``se_item_`` +angegeben werden. + +Der Wert, auf den das Item gesezt wird, kann als statischer Wert, als Wert eines +Items oder als Ergebnis der Ausführung einer Funktion festgelegt +werden. + +.. rubric:: Aktion: Ausführen einer Funktion + :name: aktionausfuehreneinerfunktion + +.. code-block:: yaml + + se_run_: eval:(Funktion) + +Die Angabe ist vergleichbar mit dem Ausführen einer Funktion zur +Ermittlung des Werts für ein Item, hier wird jedoch kein Item +benötigt. Außerdem wird der Rückgabewert der Funktion ignoriert. + +.. rubric:: Aktion: Auslösen einer Logikausführung + :name: aktionauslseneinerlogikausfhrung + +.. code-block:: yaml + + se_trigger_: meineLogik:Zu übergebender Wert + +Um beim Auslösen einen Wert an die Logik zu übergeben, kann dieser +Wert im Attribut über die Angabe von ``: `` hinter dem +Logiknamen angegeben werden. + +.. rubric:: Aktion: Alle Items, die ein bestimmtes Attribut haben, + auf den Wert dieses Attributs setzen + :name: aktionalleitemsdieeinbestimmtesattributhabenaufdenwertdiesesattributssetzen + +.. code-block:: yaml + + se_byattr_: mein_eigenes_Attribut + +Mit diesem Attribut wird der Name eines anderen (beliebigen) +Attributs angegeben. Beim Ausführen werden alle Items +herausgesucht, die das angegebene Attribut enthalten. Diese Items +werden auf den Wert gesetzt, der dem genannten Attribut in den +Items jeweils zugewiesen ist. + +.. code-block:: yaml + + dummy: + type: num + mein_eigenes_Attribut: 42 + +wird dann auf ``42`` gesetzt. +Ein anderes Item + +.. code-block:: yaml + + dummy2: + type: str + mein_eigenes_Attribut: Rums + +wird gleichzeitig auf ``Rums`` gesetzt. + +.. rubric:: Aktion: Sondervorgänge + :name: aktionsondervorgnge + +.. code-block:: yaml + + se_special_: (Sondervorgang) + +Für bestimmte Sondervorgänge sind besondere Aktionen im Plugin +definiert (z. B. für das Suspend). Diese werden jedoch nicht hier +erläutert, sondern an den Stellen, an denen Sie verwendet werden. + +.. rubric:: Verzögertes Ausführen einer Aktion + :name: verzgertesausfhreneineraktion + +.. code-block:: yaml + + se_delay_: 30 (Sekunden)|30m (Minuten) + +Über das Attribut wird die Verzögerung angegeben, nach der die +Aktion ausgeführt werden soll. Die Angabe erfolgt in Sekunden oder +mit dem Suffix "m" in Minuten. + +Der Timer zur Ausführung der Aktion nach der angegebenen +Verzögerung wird entfernt, wenn eine gleichartike Aktion +ausgeführt werden soll (egal ob verzögert oder nicht). Wenn also +die Verzögerung größer als der ``cycle`` ist, wird die Aktion +nie durchgeführt werden, es sei denn die Aktion soll nur +einmalig ausgeführt werden. + +.. rubric:: Wiederholen einer Aktion + :name: wiederholeneineraktion + +.. code-block:: yaml + + se_repeat_: True|False + +Über das Attribut wird unabhängig vom globalen Setting für das +stateengine Item festgelegt, ob eine Aktion auch beim erneuten +Eintritt in den Status ausgeführt wird oder nicht. + +.. rubric:: Festlegen der Ausführungsreihenfolge von Aktionen + :name: festlegenderausfhrungsreihenfolgevonaktionen + +.. code-block:: yaml + + se_order_ + se_order_aktion1: 3 + se_order_aktion2: 2 + se_order_aktion3: 1 + se_order_aktion4: 2 + +Die Reihenfolge, in der die Aktionen ausgeführt werden, ist nicht +zwingend die Reihenfolge in der die Attribute definiert sind. In +den meisten Fällen ist dies kein Problem, da die Aktionen +voneinander unabhängig sind und daher in beliebiger Reihenfolge +ausgeführt werden können. In Einzelfällen kann es jedoch +erforderlich sein, mehrere Aktionen in einer bestimmten +Reihenfolge auszuführen. + +Es ist möglich, zwei Aktionen die gleiche Zahl zuzuweisen, die +Reihenfolge der beiden Aktionen untereinander ist dann wieder +zufällig. Innerhalb der gesamten Aktionen werden die beiden +Aktionen jedoch an der angegebenen Position ausgeführt. + +.. rubric:: Aktion: Minimumabweichung + :name: minimumabweichung + +Es ist möglich, eine Minimumabweichung für +Änderungen zu definieren. Wenn die Differenz zwischen dem +aktuellen Wert des Items und dem ermittelten neuen Wert kleiner +ist als die festgelegte Minimumabweichung wird keine Änderung +vorgenommen. Die Minimumabweichung wird über das Attribut +``se_mindelta_`` auf der Ebene des Regelwerk-Items +festgelegt. + +.. rubric:: Aktion: Item zwangsweise auf einen Wert setzen + :name: aktionitemzwangsweiseaufeinenwertsetzen + +.. code-block:: yaml + + se_force_ + +Diese Aktion funktioniert analog zu ``se_set_``. +Einziger Unterschied ist, dass die Wertänderung erzwungen wird: +Wenn das Item bereits den zu setzenden Wert hat, dann ändert +smarthomeNG das Item nicht. Selbst wenn beim Item das Attribut +``enforce_updates: yes`` gesetzt ist, wird zwar der Wert neu +gesetzt, der von smarthomeNG die Änderungszeit nicht neu gesetzt. Mit +dem Attribut ``se_force_`` wird das Plugin den Wert +des Items bei Bedarf zuerst auf einen anderen Wert ändern und dann +auf dem Zielwert setzen. Damit erfolgt auf jeden Fall eine +Wertänderung (ggf. sogar zwei) mit allen damit in Zusammenhang +stehenden Änderungen (eval's, Aktualisierung der Änderungszeiten, +etc). + +.. rubric:: Beispiel zu Aktionen + :name: beispielzuaktioneneinzeln + +.. code-block:: yaml + + beispiel: + raffstore: + automatik: + rules: + <...> + se_item_height: beispiel.raffstore1.hoehe + se_mindelta_height: 10 + se_item_lamella: beispiel.raffstore1.lamelle + se_mindelta_lamella: 5 + + Daemmerung: + <...> + se_set_height: value:100 + se_set_lamella: value:25 + <...> + Nacht: + <...> + se_set_height: value:100 + se_set_lamella: value:0 + <...> + Sonnenstand: + <...> + se_set_height: value:100 + se_set_lamella: eval:stateengine_eval.sun_tracking() + <...> + Sonder: + <...> + se_trigger_logic1: myLogic:42 + se_delay_logic1: 10 + <...> diff --git a/stateengine/_pv_1_4_2/user_doc/user_doc2.rst b/stateengine/_pv_1_4_2/user_doc/user_doc2.rst new file mode 100755 index 000000000..b5a909f08 --- /dev/null +++ b/stateengine/_pv_1_4_2/user_doc/user_doc2.rst @@ -0,0 +1,23 @@ +.. index:: Plugins; Stateengine +.. index:: Stateengine; Konfiguration + +Konfiguration +############# + +.. important:: + + Detaillierte Informationen zur Konfiguration des Plugins sind unter :doc:`/plugins_doc/config/stateengine` zu finden. + +.. rubric:: Pluginkonfiguration + :name: pluginkonfiguration + +.. code-block:: yaml + + #etc/plugin.yaml + stateengine: + plugin_name: stateengine + #startup_delay_default: 10 + #suspend_time_default: 3600 + #log_level: 0 + #log_directory: var/log/StateEngine/ + #log_maxage: 0 diff --git a/stateengine/_pv_1_4_2/user_doc/user_doc3.rst b/stateengine/_pv_1_4_2/user_doc/user_doc3.rst new file mode 100755 index 000000000..cd6bfe74f --- /dev/null +++ b/stateengine/_pv_1_4_2/user_doc/user_doc3.rst @@ -0,0 +1,65 @@ +.. index:: Plugins; Stateengine +.. index:: Stateengine; Regelwerk-Item + +Regelwerk-Item +############## + +Unter jedem Item, für das eine State Machine angelegt werden soll, muss ein "Regelwerk-Item" erstellt werden. +Es wird empfohlen, dieses mit dem Namen ``rules`` als Child-Item unter das Item, das automatisiert werden soll, zu legen. +Dieses Item benötigt einige vorgegebene Definitionen, die am einfachsten über das ``struct`` Attribut +eingebunden werden. Das Item sieht dann folgendermaßen aus: + +.. code-block:: yaml + + #items/item.yaml + raffstore1: + automatik: + struct: stateengine.general + + rules: + cycle: 60 + +Bei jedem Aufruf des Regelwerk-Items - im Beispiel auf Grund der cycle Angabe also +alle 60 Sekunden - werden die Zustände hierarchisch evaluiert. +Zuerst wird also der erste Status getestet. Kann dieser nicht aktiviert werden, +folgt der darunter angegebene, etc. Details hierzu finden sich im nächsten Teil +der Dokumentation. + +.. rubric:: Item-Definitionen + :name: itemdefinitionen + +Bedingungen und Aktionen beziehen sich überlicherweise auf Items wie beispielsweise +die Höhe einer Jalousie oder die Außenhelligkeit. +Diese Items müssen auf Ebene des Regelwerk-Items über das Attribut +``se_item_`` bekannt gemacht werden. + +.. rubric:: Beispiel + :name: beispielregelwerk + +Im Beispiel wird durch ``se_item_height`` das Item ``beispiel.raffstore1.hoehe`` +dem Plugin unter dem Namen "height" bekannt gemacht. Das Item ``beispiel.wetterstation.helligkeit`` +wird durch ``se_item_brightness`` als "brightness" referenziert. + +Auf diese Namen beziehen sich nun in weiterer Folge Bedingungen und Aktionen. Im Beispiel +wird im Zustand Nacht das Item ``beispiel.raffstore1.hoehe`` auf den Wert 100 gesetzt, sobald +``beispiel.wetterstation.helligkeit`` den Wert 25 übersteigt. Erklärungen zu Bedingungen +und Aktionen folgen auf den nächsten Seiten. + +.. code-block:: yaml + + #items/item.yaml + raffstore1: + automatik: + struct: stateengine.general + rules: + se_item_height: beispiel.raffstore1.hoehe + se_item_brightness: beispiel.wetterstation.helligkeit + + Nacht: + name: Nacht + on_enter_or_stay: + se_action_height: + - 'function: set' + - 'to: 100' + enter_toodark: + se_max_brightness: 25 diff --git a/stateengine/_pv_1_4_2/user_doc/user_doc4.rst b/stateengine/_pv_1_4_2/user_doc/user_doc4.rst new file mode 100755 index 000000000..5e44f89e5 --- /dev/null +++ b/stateengine/_pv_1_4_2/user_doc/user_doc4.rst @@ -0,0 +1,85 @@ +.. index:: Plugins; Stateengine +.. index:: Stateengine; Zustand-Item + +Zustand-Item +############ + +.. rubric:: Zustände + :name: daszustandsitem + +Alle Items unterhalb des Regelwerk-Items (``rules``) +beschreiben Zustände des Objekts ("Zustands-Item"). +Die Ids der Zustands-Items sind beliebig, im Beispiel ``day``. + +.. code-block:: yaml + + #items/item.yaml + raffstore1: + automatik: + struct: stateengine.general + rules: + day: + name: Tag # optional, wie bei allen Items + +.. rubric:: Bedingungen + :name: zustanditem_bedingungen + +Jeder Zustand kann eine beliebige Anzahl von Bedingungsgruppen +haben. Jede Bedingungsgruppe definiert ein Set an Bedingungen das +überprüft wird, wenn der aktuelle Status neu ermittelt wird. + +Jede Bedingungsgruppe wird durch ein Item +("Bedingungsgruppen-Item") unterhalb des Zustands-Items +abgebildet. Details zu den Bedingungen +werden im Abschnitt :ref:`Bedingungen` erläutert. + +.. rubric:: Aktionen + :name: aktionenintro + +Jeder Zustand kann eine beliebige Anzahl an Aktionen definieren. +Sobald ein Zustand aktueller Zustand wird, werden die Aktionen des +Zustands ausgeführt. Für die Aktionen gibt es vier Ereignisse, die +festlegen, wann eine Aktion ausgeführt wird. + +Details zu den Aktionen werden im Abschnitt +:ref:`Aktionen` erläutert. + +.. rubric:: Zustand-Templates + :name: zustandtemplates + +Da viele Items immer wieder die gleichen Zustände inklusive Aktionen und Bedingungen +nutzen, gibt es die Möglichkeit, Zustände als Vorlagen zu deklarieren und diese +dann in die entsprechenden Zustandsautomaten der jeweiligen Items zu integrieren. + +Beispielsweise wird man alle Items mit den identen Sperr- und Aussetz/Suspendfunktionen +ausstatten wollen. Außerdem werden vermutlich mehrere Jalousien auf die selbe Weise +auf den aktuellen Sonnenstand reagieren oder mehrere Lichter in der Nacht gemeinsam abgedunkelt. + +Neben der vom Plugin bereitgestellten Möglichkeit, :ref:`Zustands-Templates` zu definieren, +bietet sich ab **smarthomeNG 1.6** das ``struct`` Attribut an. Zum einen können in der Datei ``etc/struct.yaml`` +eigene Vorlagen definiert werden, zum anderen stellt das Plugin folgende Vorlagen fix fertig bereit: + +- stateengine.state_lock: Sperren der Zustandsevaluierung, sobald das Sperritem "lock" aktiv ist. +- stateengine.state_suspend: Aussetzen der Evaluierung für eine bestimmte Zeit bei manueller Betätigung (z.B. Taster) +- stateengine.state_release: Sofortiges Entsperren und Beenden des Suspend-Modus und Neuevaluierung + +Gemeinsam mit der Vorlage stateengine.general, die allgemein relevante Items automatisch erstellt, könnte +ein Item wie unten zu sehen bestückt werden. Das Einbinden der Zustandsvorlagen findet dabei auf gleicher +Hierarchieebene wie das Regelwerk-Item statt. Genauere Angaben hierzu sind unter :ref:`Zustands-Templates` zu finden. + +Zusätzlich können eigene Zustände (beispielsweise day) definiert werden. + +.. code-block:: yaml + + #items/item.yaml + raffstore1: + automatik: + struct: + - stateengine.general + - stateengine.state_lock + - stateengine.state_suspend + - stateengine.state_release + + rules: + day: + name: Tag # optional, wie bei allen Items diff --git a/stateengine/_pv_1_4_2/user_doc/user_doc5.rst b/stateengine/_pv_1_4_2/user_doc/user_doc5.rst new file mode 100755 index 000000000..7607d2c25 --- /dev/null +++ b/stateengine/_pv_1_4_2/user_doc/user_doc5.rst @@ -0,0 +1,241 @@ +.. index:: Plugins; Stateengine +.. index:: Stateengine; Bedingungen +.. _Bedingungen: + +Bedingungen +########### + +.. rubric:: Beispiel + :name: beispielbedingungen + +Im folgenden Beispiel wird der Zustand "Daemmerung" eingenommen, sobald +die Helligkeit (über se_item_brightness definiert) über 500 Lux liegt. + +.. code-block:: yaml + + #items/item.yaml + raffstore1: + automatik: + struct: stateengine.general + rules: + se_item_brightness: beispiel.wetterstation.helligkeit + Daemmerung: + name: Dämmerung + + enter: + se_min_brightness: 500 + +.. rubric:: Bedingungsgruppen + :name: bedingungsgruppen + +Unabhängig davon, ob ein Zustand von nur einer Bedingung oder mehreren Bedingungen +abhängt, werden Bedingungen immer als Attribute unter ein Item gestellt, das +``enter`` heißt. Bei mehreren Bedingungsgruppen kann noch ein beliebiger Name, +getrennt durch einen Unterstrich "_" hinzugefügt werden. Das Bedinungsgruppen-Item +könnte dann ``enter_zuhell`` heißen. Der Name ist dabei völlig beliebig und nimmt +keinen Bezug auf irgendwelche anderen Elemente. + +Die folgenden Regeln kommen zur Anwendung: + +- Zustände und Bedingungsgruppen werden in der Reihenfolge + geprüft, in der sie in der Konfigurationsdatei definiert sind. + +- Eine einzelne Bedingungsgruppe ist erfüllt, wenn alle + Bedingungen, die in der Bedingungsgruppe definiert sind, + erfüllt sind (UND-Verknüpfung). + +- Ein Zustand kann aktueller Zustand werden, wenn eine beliebige + der definierten Bedingungsgruppen des Zustands erfüllt ist. Die + Prüfung ist mit der ersten erfüllten Bedingungsgruppe beendet + (ODER-Verknüpfung). + +- Ein Zustand, der keine Bedingungsgruppen hat, kann immer + aktueller Zustand werden. Solch ein Zustand kann als + Default-Zustand am Ende der Zustände definiert werden. + +.. rubric:: Zu vergleichender Wert der Bedingung + :name: bereitstellungdesaktuellenwerts + +Der zu vergleichende Wert einer Bedingung kann auf folgende Arten definiert werden: + +- statischer Wert (also z.B. 500 Lux) +- Item (beispielsweise ein Item namens settings.helligkeitsschwellwert) +- Eval-Funktion (siehe auch `eval Ausdrücke `_) + + +.. rubric:: Name der Bedingung + :name: namederbedingung + +Der Name einer Bedingung setzt sich aus folgenden drei Teilen zusammen, +die jeweils mit einem Unterstrich "_" getrennt werden: + +- ``se``: eindeutiger Prefix, um dem Plugin zugeordnet zu werden +- ````: siehe unten. Beispiel: min = der Wert des muss mindestens dem beim Attribut angegebenen Wert entsprechen. +- ````: Hier wird entweder das im Regelwerk-Item mittels ``se_item_`` deklarierte Item oder eine besondere Bedingung (siehe unten) referenziert. + + +.. rubric:: Vergleichsfunktion + :name: vergleichsfunktion + +**Minimum** + +.. code-block:: yaml + + se_min_: [Wert] + +Die Bedingung ist erfüllt, wenn der aktuelle Wert größer als das +angegebene Minimum ist. + +**Maximum** + +.. code-block:: yaml + + se_max_: [Wert] + +Die Bedingung ist erfüllt, wenn der aktuelle Wert kleiner als das +angegebene Maximum ist. + +**Bestimmter Wert** + +.. code-block:: yaml + + se_value_: [Wert] + +Die Bedingung ist erfüllt, wenn der aktuelle Wert gleich dem +angegebenen Wert oder gleich einem der in einer Liste angegebenen Wert ist. + +.. code-block:: yaml + + se_value_: + - [Wert1] + - [Wert2] + - [WertN] + +**Negieren** + +.. code-block:: yaml + + se_negate_: True|False + +Die gesamte Bedingung (Minimum, Maximum und Wert) wird negiert +(umgekehrt). Für das Attribut wird der Datentyp Boolean verwendet, +zulässige Werte sind "true", "1", "yes", "on" bzw. "false", "0", +"no", "off" + +**Mindestalter** + +.. code-block:: yaml + + se_agemin_: [Wert] + +Die Bedingung ist erfüllt, wenn das Alter des Items, das zur +Ermittlung des Werts angegeben ist, größer als das angegebene +Mindestalter ist. + +**Höchstalter** + +.. code-block:: yaml + + se_agemax_: [Wert] + +Die Bedingung ist erfüllt, wenn das Alter des Items, das zur +Ermittlung des Werts angegeben ist, kleiner als das angegebene +Höchstalter ist. + +**Altersbedingung negieren** + +.. code-block:: yaml + + se_agenegate_: True|False + +Die Altersbedingung (Mindestalter, Höchstalter) wird negiert +(umgekehrt). Für das Attribut wird der Datentyp Boolean verwendet, +zulässige Werte sind "true", "1", "yes", "on" bzw. "false", "0", +"no", "off" + +.. rubric:: "Besondere" Bedingungen + :name: besonderebedingungen + +Das Plugin stellt die Werte für einige "besondere" Bedingungen +automatisch bereit. Für diese Bedingungen muss daher kein Item und +keine Eval-Funktion zur Ermittlung des aktuellen Werts angegeben +werden. Die "besonderen" Bedingungen werden über reservierte +Bedingungsnamen gekennzeichnet. Diese Bedingungsnamen dürfen daher +nicht für andere Bedingungen verwendet werden. + +Die folgenden "besonderen" Bedingungsnamen können verwendet werden + +**time** +*Aktuelle Uhreit* +Die Werte für ``se_value_time``, ``se_min_time`` und +``se_max_time`` müssen im Format "hh:mm" (":") angegeben werden. +Es wird ein 24 Stunden-Zeitformat verwendet. Beispiele: "08:00" +oder "13:37". Um das Ende des Tages anzugeben kann der Wert +"24:00" verwendet werden, der für die Prüfungen automatisch zu +"23:59:59" konvertiert wird. Wichtig sind die Anführungszeichen +oder Hochkommas! + +**weekday** +*Wochentag* +0 = Montag, 1 = Dienstag, 2 = Mittwoch, 3 = Donnerstag, 4 = +Freitag, 5 = Samstag, 6 = Sonntag + +**month** +*Monat* +1 = Januar, ..., 12 = Dezember + +**sun_azimut** +*Sonnenstand (Horizontalwinkel)* +Der Azimut (Horizontalwinkel) ist die Kompassrichtung, in der die +Sonne steht. Der Azimut wird von smarthomeNg auf Basis der +aktuellen Zeit sowie der konfigurierten geographischen Position +berechnet. Siehe auch `Dokumentation `_ +für Voraussetzungen zur Berechnung der Sonnenposition. +Beispielwerte: 0 → Sonne exakt im Norden, 90 → Sonne exakt im +Osten, 180 → Sonne exakt im Süden, 270 → Sonne exakt im Westen + +**sun_altitude** +*Sonnenstand (Vertikalwinkel)* +Die Altitude (Vertikalwikel) ist der Winkel, in dem die Sonne über +dem Horizont steht. Die Altitude wird von smarthomeNG auf Basis +der aktuellen Zeit sowie der konfigurierten geographischen +Position berechnet. Siehe auch `SmarthomeNG +Dokumentation `_ +für Voraussetzungen zur Berechnung der Sonnenposition. Werte: +negativ → Sonne unterhalb des Horizonts, 0 → +Sonnenaufgang/Sonnenuntergang, 90 → Sonne exakt im Zenith +(passiert nur in äquatorialen Bereichen) + +**age** +*Zeit seit der letzten Änderung des Zustands (Sekunden)* +Das Alter wird über die letzte Änderung des Items, das als +``se_laststate_item_id`` angegeben ist, ermittelt. + +**random** +*Zufallszahl zwischen 0 und 100* +Wenn etwas zufällig mit einer Wahrscheinlichkeit von 60% passieren +soll, kan beispielsweise die Bedingung ``max_random: 60`` +verwendet werden. + +**laststate** +*Id des Zustandsitems des aktuellen Status* +Wichtig: Hier muss die vollständige Item-Id angegeben werden + +**trigger_item, trigger_caller, trigger_source, trigger_dest** +*item, caller, source und dest-Werte, durch die die +Zustandsermittlung direkt ausgelöst wurde* +Über diese vier Bedingungen kann der direkte Auslöser der +Zustandsermittlung abgeprüft werden, also die Änderung, die +smarthomeNG veranlasst, die Zustandsermittlung des +stateengine-Plugins aufzurufen. + +**original_item, original_caller, original_source** +*item, caller, source und dest-Werte, durch die die +Zustandsermittlung ursprünglich ausgelöst wurde* +Über diese vier Bedingungen kann der ursprüngliche Auslöser der +Zustandsermittlung abgeprüft werden. Beim Aufruf der +Zustandsermittung über einen ``eval_trigger`` Eintrag wird über +``trigger_caller`` beispielsweise nur ``Eval`` weitergegeben. +In den drei ``original_*`` Bedingungen wird in diesem Fall der +Auslöser der Änderung zurückverfolgt und der Einstieg in die +``Eval``-Kette ermittelt. diff --git a/stateengine/_pv_1_4_2/user_doc/user_doc6.rst b/stateengine/_pv_1_4_2/user_doc/user_doc6.rst new file mode 100755 index 000000000..4393928c7 --- /dev/null +++ b/stateengine/_pv_1_4_2/user_doc/user_doc6.rst @@ -0,0 +1,226 @@ +.. index:: Plugins; Stateengine +.. index:: Stateengine; Aktionen +.. _Aktionen: + +Aktionen +######## + +Es gibt zwei Möglichkeiten, Aktionen zu definieren. Die :ref:`Aktionen - einzeln` +Variante wird am Ende der Dokumentation der Vollständigkeit halber beschrieben, +kann aber ignoriert werden. + +Bei der hier beschriebenen kombinierten Variante zur Definition von Aktionen werden +alle Parameter einer Aktion in einem Attribut definiert. Der Aktionsname ``se_action_`` +bezieht sich dabei auf das Item, das über ``se_item_`` unter dem Regelwerk-Item +definiert und benannt wurde. Die Herangehensweise ähnelt also stark der Deklaration von Bedingungen. + +.. rubric:: Beispiel zu Aktionen + :name: beispielzuaktionenkombiniert + +Das folgende Beispiel führt je nach Zustand folgende Aktionen aus: + +- Daemmerung: Höhe des Raffstores: 100(%), Lamellendrehung: 25(%) +- Nachfuehren: Höhe des Raffstores: 100(%), Lamellendrehung: je nach Sonnenausrichtung +- Sonder: Ausführen der Logic myLogic mit dem Wert 42 und einer Verzögerung von 10 Sekunden. + +.. code-block:: yaml + + #items/item.yaml + raffstore1: + automatik: + struct: stateengine.general + rules: + se_item_height: raffstore1.hoehe # Definition des zu ändernden Höhe-Items + se_item_lamella: raffstore1.lamelle # Definition des zu ändernden Lamellen-Items + Daemmerung: + <...> + se_action_height: + - 'function: set' + - 'to: value:100' + se_action_lamella: + - 'function: set' + - 'to: value:25' + <...> + Nachfuehren: + <...> + se_action_height: + - 'function: set' + - 'to: value:100' + se_action_lamella: + - 'function: set' + - 'to: eval:stateengine_eval.sun_tracking()' + <...> + Sonder: + <...> + se_action_logic1: + - 'function: trigger' + - 'logic: myLogic' + - 'value: 42' + - 'delay: 10' + <...> + +.. rubric:: Aufbau von Aktionen + :name: aufbauvonaktionen + +Bei yaml Files werden die Parameter mittels Aufzählungszeichen "-" +untereinander definiert, die Listeneinträge müssen in Anführungszeichen oder +Hochkommas gesetzt werden: + +.. code-block:: yaml + + se_action_: + - 'function: ' + - Detailparameter der Funktion, z.B. "to: .." + - 'delay: ' + - 'order: ' + - 'repeat: ' + +.. rubric:: Auszuführende Aktionsart + :name: function + +Mit dem Parameter ```` wird die auszuführende Funktion +festgelegt. In Abhängigkeit zur gewählten Funktion werden +zusätzliche Detailparameter erforderlich. +Folgende Werte sind möglich: + +**Funktion set: Item auf einen Wert setzen** + +.. code-block:: yaml + + se_action_: + - 'function: set' + - 'to: ' + - 'force: [True/False]' + +Das Item, das verändert werden soll, muss auf Ebene des +Regelwerk-Items über das Attribut ``se_item_`` +angegeben werden. + +Der Parameter ``to: `` legt fest, auf welchen Wert das Item +gesetzt werden soll. Der Wert, +auf den das Item gesezt wird, kann als statischer Wert, als +Wert eines Items oder als Ergebnis der Ausführung einer Funktion +festgelegt werden. Wichtig ist, dass bei z.B. ``to: item:`` +nach dem item: kein Leerzeichen eingesetzt werden darf! + +Über den optionalen Parameter +``force: True`` kann eine Item-Aktualisierung erzwungen werden, +auch wenn sich der Wert nicht ändert. Damit erfolgt auf jeden Fall eine +Wertänderung (ggf. sogar zwei) mit allen damit in Zusammenhang +stehenden Änderungen (evals, Aktualisierung der Änderungszeiten, +etc). + +**Funktion run: Ausführen einer Funktion** + +.. code-block:: yaml + + se_action_: + - 'function: run' + - 'eval:(Funktion)' + +Die Angabe ist vergleichbar mit dem Ausführen einer Funktion zur +Ermittlung des Werts für ein Item, hier wird jedoch kein Item +benötigt. Außerdem wird der Rückgabewert der Funktion ignoriert. + +**Funktion trigger: Auslösen einer Logikausführung** + +.. code-block:: yaml + + se_action_: + - 'function: trigger' + - 'logic: ' + - 'value: ' + +Löst die Ausführung der Logik ```` aus. Um beim +Auslösen einen Wert an die Logik zu übergeben, kann dieser Wert +über die Angabe von ``value: `` hinter dem Logiknamen +angegeben werden. Die Angabe kann aber auch entfallen. + +**Funktion byattr: Alle Items, die ein bestimmtes Attribut haben, auf den Wert dieses Attributs setzen** + +.. code-block:: yaml + + se_action_: + - 'function: byattr' + - 'attribute: ' + +Mit dieser Funktion wird der Name eines anderen (beliebigen) +Attributs angegeben. Beim Ausführen werden alle Items +herausgesucht, die das angegebene Attribut enthalten. Diese Items +werden auf den Wert gesetzt, der dem genannten Attribut in den +Items jeweils zugewiesen ist. + +.. code-block:: yaml + + dummy1: + type: num + : 42 + +dumm1 wird auf ``42`` gesetzt. +Ein anderes Item, dummy2, + +.. code-block:: yaml + + dummy2: + type: str + : Rums + +wird gleichzeitig auf ``Rums`` gesetzt. + +**Funktion special: Sondervorgänge** + +.. code-block:: yaml + + se_action_: + - function: special + - value: + +Für bestimmte Sondervorgänge sind besondere Aktionen im Plugin +definiert (z. B. für das Suspend). Diese werden jedoch nicht hier +erläutert, sondern an den Stellen, an denen sie verwendet werden. + +.. rubric:: Zusätzliche Parameter + :name: parameter + +**delay: ** + +Über den optionalen Parameter ```` wird die Verzögerung angegeben, nach der die +Aktion ausgeführt werden soll. + +Die Angabe erfolgt in Sekunden oder mit dem Suffix "m" in Minuten. + +.. code-block:: yaml + + 'delay: 30' --> 30 Sekunden + 'delay: 30m' --> 30 Minuten + +Der Timer zur Ausführung der Aktion nach der angegebenen +Verzögerung wird entfernt, wenn eine gleichartige Aktion +ausgeführt werden soll (egal ob verzögert oder nicht). + +**repeat: ** + +.. code-block:: yaml + + 'repeat: [True|False]' + +Über das Attribut wird unabhängig vom globalen Setting für das +stateengine Item festgelegt, ob eine Aktion auch beim erneuten +Eintritt in den Status ausgeführt wird oder nicht. + +**order: ** + +Die Reihenfolge, in der die Aktionen ausgeführt werden, ist nicht +zwingend die Reihenfolge in der die Attribute definiert sind. In +den meisten Fällen ist dies kein Problem, da oftmals die Aktionen +voneinander unabhängig sind und daher in beliebiger Reihenfolge +ausgeführt werden können. In Einzelfällen kann es jedoch +erforderlich sein, mehrere Aktionen in einer bestimmten +Reihenfolge auszuführen. Dies kann über den Parameter +``order: `` erfolgen. Mit diesem Attribut wird der Aktion +eine Zahl zugewiesen. Aktionen werden in aufsteigender Reihenfolge +der zugewiesenen Zahlen ausgeführt. + +.. code-block:: yaml + + 'order: [1|2|...]' diff --git a/stateengine/_pv_1_4_2/user_doc/user_doc7.rst b/stateengine/_pv_1_4_2/user_doc/user_doc7.rst new file mode 100755 index 000000000..4641b0776 --- /dev/null +++ b/stateengine/_pv_1_4_2/user_doc/user_doc7.rst @@ -0,0 +1,48 @@ +.. index:: Plugins; Stateengine +.. index:: Stateengine; Ausführungszeitpunkt + +Ausführungszeitpunkt +#################### + +.. rubric:: Beispiel + :name: ausfuehrungsbeispiel + +Im Beispiel ist ein Item im Zustand 1 namens ``on_enter_or_stay`` angelegt. +In diesem Item befinden sich diverse Aktionen, die jedes Mal ausgeführt werden, +wenn der Zustand aktiv wird oder bleibt. + +.. code-block:: yaml + + #items/item.yaml + raffstore1: + automatik: + struct: stateengine.general + rules: + state1: + name: Zustand 1 + + on_enter_or_stay: + name: Ausführen immer wenn ein Zustand aktiv ist + <... Aktionen ...> + +.. rubric:: Aktionsausführung + :name: aktionsausfuehrung + +Um festzulegen, wann die Aktionen eines Zustands ausgeführt +werden, gibt es vier Ereignisse, denen die Aktionen zugeordnet +werden können. Für jedes dieser Ereignisse wird ein Item unterhalb +des Zustands-Items angelegt, in dem die jeweiligen Aktionen +als Attribute definiert werden. + +- **on_enter**: Aktionen, die nur beim erstmaligen Aktivieren des + Zustands ausgeführt werden + +- **on_stay**: Aktionen, die nur ausgeführt werden, wenn der Zustand + zuvor bereits aktiv war und weiterhin aktiv bleibt. + +- **on_enter_or_stay**: Aktionen, die ausgeführt werden, wenn der + Zustand aktiv ist, unabhängig davon, ob er bereits zuvor aktiv + war oder nicht. + +- **on_leave**: Aktionen, die ausgeführt werden, direkt bevor ein + anderer Zustand aktiv wird. diff --git a/stateengine/_pv_1_4_2/user_doc/user_doc8.rst b/stateengine/_pv_1_4_2/user_doc/user_doc8.rst new file mode 100755 index 000000000..ec39d6f2d --- /dev/null +++ b/stateengine/_pv_1_4_2/user_doc/user_doc8.rst @@ -0,0 +1,610 @@ +.. index:: Plugins; Stateengine +.. index:: Stateengine; Beispiel + +Beispiel +######## + +Die wichtigsten Elemente und Funktionen des Plugins sind soweit +vorgestellt. Zusätzliche Features werden abschließend unter +:ref:`Advanced` zusammengefasst. + +Zusammenfassend soll in diesem Beispiel die Automatisierung eines Raffstores +gezeigt werden. Es werden Funktionen genutzt, die erst im Advanced-Teil +beschrieben werden. Folgende Zustände sollen abgedeckt werden: + +- Sperre über Sperr-Item +- Zeitweises Deaktivieren ("Suspend") bei manuellen Aktionen +- Sonnenschutz: Nachführen der Lamellen zum Sonnenstand bei großer Helligkeit +- Nacht +- Tag + +.. rubric:: Items zum Prüfen + :name: itemszumpruefen + +Zuerst benötigen wir ein paar Items, die nachher als Bedingungen +abgeprüft werden sollen. Die boolschen Items sind insofern relevant, +als dass anschließend das Alter der entsprechenden Mindesthelligkeit +abgefragt werden kann. Eine Jalousie soll also beispielsweise erst +dann schließen, wenn die Sonne min. X Minuten heraußen ist. Und erst +wieder öffnen, wenn die Sonne länger als Y Minuten verdeckt ist. + +.. code-block:: yaml + + #items/item.yaml + beispiel: + steckdosen: + type: bool + + licht: + type: bool + + wetterstation: + helligkeit: + name: Helligkeit + type: num + initial_value: 50000 #nur für Demozwecke + + gt43k: + type: bool + name: Helligkeit größer als 43 kLux + eval: sh.beispiel.wetterstation.helligkeit() > 43000 + eval_trigger: beispiel.wetterstation.helligkeit + + gt35k: + type: bool + name: Helligkeit größer als 35 kLux + eval: sh.beispiel.wetterstation.helligkeit() > 35000 + eval_trigger: beispiel.wetterstation.helligkeit + + gt25k: + type: bool + name: Helligkeit größer als 25 kLux + eval: sh.beispiel.wetterstation.helligkeit() > 25000 + eval_trigger: beispiel.wetterstation.helligkeit + + gt20k: + type: bool + name: Helligkeit größer als 20 kLux + eval: sh.beispiel.wetterstation.helligkeit() > 20000 + eval_trigger: beispiel.wetterstation.helligkeit + + temperatur: + name: Temperatur + type: num + initial_value: 24 #nur für Demozwecke + +.. rubric:: Trigger + :name: trigger + +Da wir mehrere Raffstores automatisieren wollen und alle +Raffstores gleichzeitig fahren sollen, brauchen wir einen externen +Trigger, auf den dann alle Automatiken hören: + +.. code-block:: yaml + + #items/item.yaml + beispiel: + trigger: + raffstore: + type: bool + name: Gemeinsamer Trigger für alle Raffstores + enforce_updates: yes #Wichtig! + cycle: 60 = 1 + + +In diesem Fall wird die Zustandsermittlung jede Minute ausgelöst. + +.. rubric:: Default-Konfiguration + :name: defaultkonfiguration + +Nun kommt die Default-Konfiguration. Sie ist unabhängig von +konkreten zu automatisierenden Objekten. Sie beinhaltet jedoch +umfangreiche Einstellungen, so dass die zu automatisierenden +Objekte, die die Einstellungen aus der Default-Konfiguration +verwenden, oft sehr simpel aufgebaut werden können. + +Es bietet sich an, diese Struktur unter ``etc/struct.yaml`` abzulegen und später +über ``struct: stateengine_default_raffstore`` zu importieren. Auf diese Art +können auch einfach pro Automat Einstellungen wie z.B. die Dauer, welche die +Helligkeit den Schwellwert überschritten haben muss, über ein Item (settings.mindestdauer_helligkeit) +definiert und jederzeit abgeändert werden. + +.. code-block:: yaml + + #etc/struct.yaml + stateengine_default_raffstore: + settings: + mindestdauer_helligkeit: + type: num + cache: True + initial_value: 30 #nur für Demozwecke + + rules: + # Item für Helligkeit außen + se_item_brightness: beispiel.wetterstation.helligkeit + # Item für Temperatur außen + se_item_temperature: beispiel.wetterstation.temperatur + # Item das anzeigt, ob die Helligkeit außen mehr als 25kLux beträgt + se_item_brightnessGt25k: beispiel.wetterstation.helligkeit.gt25k + # Item das anzeigt, ob die Helligkeit außen mehr als 43kLux beträgt + se_item_brightnessGt43k: beispiel.wetterstation.helligkeit.gt43k + # Item für Behanghöhe + se_item_hoehe: ...hoehe + # Keine Änderung der Behanghöhe wenn Abweichung kleiner 10 + se_mindelta_hoehe: 10 + # Item für Lamellenwinkel + se_item_lamelle: ...lamelle + # Keine Änderung des Lamellenwinkels wenn Abweichung kleiner 5 + se_mindelta_lamelle: 5 + + # Zustand "Nachführen der Lamellen zum Sonnenstand bei großer Helligkeit", Gebäudeseite 1 + Nachfuehren_Seite_Eins: + type: foo + name: Sonnenschutz + # Aktionen: + # - Behang ganz herunterfahren + se_action_hoehe: + - 'function: set' + - 'to: 100' + # - Lamellen zur Sonne ausrichten + se_action_lamelle: + - 'function: set' + - 'to: eval:stateengine_eval.sun_tracking()' + + # Einstieg in "Sonnenschutz": Wenn + enter: + # - das Flag "Helligkeit > 43kLux" seit mindestens 30 Sekunden gesetzt ist + se_value_brightnessGt43k: true + se_agemin_brightnessGt43k: item:..settings.mindestdauer_helligkeit + # - die Sonnenhöhe mindestens 1° ist + se_min_sun_altitude: 1 + # - die Sonne aus Richtung 90° bis 270° kommt + se_min_sun_azimut: 90 + se_max_sun_azimut: 270 + # - es draußen mindestens 22° hat + se_min_temperature: 22 + + # Hysterese für Helligkeit: Wenn + enter_hysterese: + # ... wir bereits in "Sonnenschutz" sind + se_value_laststate: var:current.state_id + # .... das Flag "Helligkeit > 25kLux" gesetzt ist + se_value_brightnessGt25k: true + se_min_sun_altitude: 1 + se_min_sun_azimut: 90 + se_max_sun_azimut: 270 + # Anmerkung: Hier keine erneute Prüfung der Temperatur, damit Temperaturschwankungen nicht + # zum Auf-/Abfahren der Raffstores führen + + # Verzögerter Ausstieg nach Unterschreitung der Mindesthelligkeit: Wenn + enter_delay: + # ... wir bereits in "Sonnenschutz" sind + se_value_laststate: var:current.state_id + # .... das Flag "Helligkeit > 25kLux" nicht (!) gesetzt ist, aber diese Änderung nicht mehr als 1 Minute her ist + se_value_brightnessGt25k: false + se_agemax_brightnessGt25k: 60 + se_min_sun_altitude: 1 + se_min_sun_azimut: 90 + se_max_sun_azimut: 270 + # Anmerkung: Auch hier keine erneute Prüfung der Temperatur, damit Temperaturschwankungen nicht + # zum Auf-/Abfahren der Raffstores führen + + # Zustand "Nachführen der Lamellen zum Sonnenstand bei großer Helligkeit", Gebäudeseite 2 + Nachfuehren_Seite_Zwei: + type: foo + # Einstellungen des Vorgabezustands "Nachfuehren_Seite_Eins" übernehmen + # Hier sollte eine relative Addressierung vorgenommen werden. + se_use: ..Nachfuehren_Seite_Eins + + # Sonnenwinkel in den Bedingungsgruppen anpassen + enter: + # ... die Sonne aus Richtung 220° bis 340° kommt + se_min_sun_azimut: 220 + se_max_sun_azimut: 340 + + enter_hysterese: + # ... die Sonne aus Richtung 220° bis 340° kommt + se_min_sun_azimut: 220 + se_max_sun_azimut: 340 + + enter_delay: + # ... die Sonne aus Richtung 220° bis 340° kommt + se_min_sun_azimut: 220 + se_max_sun_azimut: 340 + + # Zustand "Nacht" + Nacht: + type: foo + name: Nacht + # Aktionen: + # - Behang ganz herunterfahren + se_action_hoehe: + - 'function: set' + - 'to: 100' + # - Lamellen ganz schließen + se_action_lamelle: + - 'function: set' + - 'to: 0' + + # Einstieg in "Nacht": Wenn + enter: + # - es zwischen 16:00 und 08:00 Uhr ist + se_min_time: '08:00' + se_max_time: '16:00' + se_negate_time: True + # - die Helligkeit höchstens 90 Lux beträgt + se_max_brightness: 90 + + # Zustand "Tag" + Tag: + type: foo + name: Tag (statisch) + # Aktionen: + # - Behang ganz hochfahren + se_action_hoehe: + - 'function: set' + - 'to: 0' + + # Einstieg in "Tag": Wenn + enter: + # - es zwischen 06:30 und 21:30 Uhr ist + se_min_time: '03:30' + se_max_time: '23:30' + + +.. rubric:: Automatisierung Raffstore 1 + :name: automatisierungraffstore1 + +Jetzt wollen wir den ersten Raffstore automatisieren. Einige Items +dazu haben wir sowieso schon, da der Raffstore über diese Items +gesteuert wird. + +.. code-block:: yaml + + #items/item.yaml + beispiel: + raffstore1: + name: Raffstore Beispiel 1 + + aufab: + type: bool + name: Raffstore auf/ab fahren + enforce_updates: on + + step: + type: bool + name: Raffstore Schritt fahren/stoppen + enforce_updates: on + + hoehe: + type: num + name: Behanghöhe des Raffstores + + lamelle: + type: num + name: Lamellenwinkel des Raffstores + +Jetzt kommen noch die Items zur Automatisierung und schließlich +das stateengine Regelwerk-Item hinzu. Das Erledigen wir über das Einbinden +der :ref:`Zustands-Templates`, die das Plugin mitbringt sowie der eigenen vorhin angelegten +Vorlage. Beim ``manuell`` Item müssen Eval-Trigger und manual_exclude den +eigenen Umständen entsprechen angepasst werden. Die ``eval_trigger`` des +Regelwerk-Items "rules" sollen ebenfalls je nach Bedarf ergänzt werden. + +.. code-block:: yaml + + #items/item.yaml + beispiel: + raffstore1: + automatik: + struct: + - stateengine.general + - stateengine.state_lock + - stateengine.state_suspend + - stateengine_default_raffstore + + manuell: + # Weitere Attribute werden bereits über das Template stateengine.state_suspend geladen + eval_trigger: + - beispiel.raffstore1.aufab + - beispiel.raffstore1.step + - beispiel.raffstore1.hoehe + - beispiel.raffstore1.lamelle + se_manual_exclude: + - 'KNX:0.0.0' # Hier die Gruppenadresse des Schalt/Jalousieaktors angeben! + - 'Init:*' + - 'database:*' + + rules: + # Relevante Standard-Attribute werden durch den Import der Templates automatisch eingebunden. + # Item-Referenzen mittels se_item werden durch das oben eigens angelegte Template eingebunden. + # Erste Zustandsermittlung nach 30 Sekunden + se_startup_delay: 5 + # Über diese Items soll die Statusermittlung ausgelöst werden + eval_trigger: + - beispiel.trigger.raffstore + - beispiel.raffstore1.automatik.anwesenheit + - beispiel.raffstore1.automatik.manuell + - beispiel.raffstore1.automatik.lock + - beispiel.raffstore1.automatik.suspend + - beispiel.wetterstation.* + + # Als letzter Zustandseintrag sollte ein bedingungsloser Standardzustand deklariert werden. + # Dieser könnte natürlich auch im Template definiert sein, hier soll aber veranschaulicht werden, + # Dass Vorlagen auch durch eigene Zustände ergänzt werden können. + Default: + name: Tag + on_enter_or_stay: + # Setzen der Höhe auf 0. + se_action_hoehe: + - 'function: set' + - 'to: 0' + enter: + type: foo + # Dieser Eintrag bleibt leer, damit der Zustand ohne Bedingung aktiviert werden kann. + + +.. rubric:: Testen der State Engine + :name: testenderstateengine + +Nachdem die oben angegebenen Itemstrukturen angelegt worden sind, bietet sich ein +Test des Systems an, weshalb smarthomeNG mit aktiviertem Plugin gestartet werden sollte. +Es wird empfohlen, das Logfile unter ``var/log/stateengine`` mittels tail -f zu beobachten. + +Folgendes wird passieren: + +a) 5 Sekunden nach dem Start werden die Zustände lock, suspend, Sonnenschutz, Nacht, Tag evaluiert. + +- Beim ersten Durchlauf wird die Bedingung "Hellligkeit höher 43000" wahr sein, da die Helligkeit der Wetterstation für diesen Test auf 50000 gesetzt wurde. +- Das Alter der Helligkeit ist zu gering (muss mindestens eine Minute sein) + +Beim ersten Durchlauf wird kein Zustand eingenommen. Der Raffstore bleibt wo er ist. + +b) Nach 60 Sekunden wird auf Grund der cycle Angabe der Zustandsautomat erneut aufgerufen. Die Bedingungen werden wie folgt evaluiert: + +- Die Helligkeit ist nach wie vor höher als 43000 und diesmal auch alt genug. +- Die Sonnenposition sollte untertags innerhalb der gegebenen Grenzwerte liegen. Findet der Test in der Nacht statt, sollten die entsprechenden Wert für min_altitude und max_azimut angepasst werden. +- Die Temperatur entspricht beim Start 24 Grad, ist also über den vorgegebenen 22 Grad + +Beim zweiten Durchlauf wird somit der Zustand Sonnenschutz aktiviert. Der Raffstore fährt herunter. + +Let's play god. Ändern wir das Wetter ;) Entweder über das CLI, Visu oder Backend-Plugin oder Admin-Interface: + +c) up beispiel.wetterstation.helligkeit=35000 + +- Die erste Bedingungsgruppe des Sonnenstandzustands ist nicht mehr "wahr", da die Helligkeit zu niedrig ist. +- Es wird ``enter_hysterese`` evaluiert. Da die Helligkeit noch über 25000 und die Sonnenposition gleich wie zuvor ist, ist diese Gruppe wahr. + +Der Sonnenschutz bleibt somit aktiv, weil trotz der Helligkeitsverringerung der untere Schwellwert noch überschritten wurde. Der Raffstore bleibt unten. + +d) up beispiel.wetterstation.helligkeit=15000 + +- Die ersten beiden Bedingungsgruppen sind unwahr, da die Helligkeit zu gering ist. +- Durch den Eintrag ``se_agemax_brightnessGt25k: 60`` in der Gruppe ``enter_delay`` wird 60 Sekunden gewartet. + +Der Sonnenschutz bleibt nach wie vor, diesmal für 60 Sekunden aktiv, sofern sich sonst beim Wetter nichts mehr ändert. Der Raffstore bleibt unten. + +e) Es erfolgt eine weitere Evaluierung des Automaten durch das cycle Attribut: + +- Die Helligkeit ist nach wie vor zu gering. +- Es ist schon zu lange her, als die Helligkeit den unteren Grenzwert unterschritten hat. + +Der Zustand wird verlassen. Gibt es einen nachfolgenden Zustand, der eingenommen werden kann, ist dies der neue aktive Zustand. Gibt es keine Zustände, die aktiviert werden könnten, verbleibt die State Engine beim letzten aktiven Zustand, also beim Sonnenschutz. Im Beispiel gibt es noch einen Standard "Tag" Eintrag, wodurch der Raffstore hoch fährt. + +f) up beispiel.raffstore1.aufab =1 + +- Durch Triggern des "Manuell" Items wird die Zustandsevaluierung pausiert. + +Sämtliche Änderungen der Helligkeit, Temperatur, etc. werden für die suspend_time ignoriert. Die Dauer ist im Template auf 60 Minuten festgelegt, kann aber manuell durch Ändern des entsprechenden Items geändert werden. + +g) up beispiel.raffstore1.automatik.settings.suspendduration = 1 + +- Die Suspendzeit wird auf eine Minute verkürzt. +- Beim erneuten Durchlauf ist die Suspendzeit abgelaufen, daher dieser Zustand nicht mehr aktiv. + +Es werden wieder sämtliche Zustände evaluiert. + + +.. rubric:: Automatisierung Raffstore 2 + :name: automatisierungraffstore2 + +Der zweite Raffstore ist ein komplexeres Beispiel. Hier werden +nicht nur die Vorgabewerte übernommen, hier werden komplett neue +Bedingungsgruppen definiert, sowie vorhandene Bedingungsgruppen +abgeändert. Es wird explizit auf Template-Imports via struct verzichtet. + +.. code-block:: yaml + + #items/item.yaml + beispiel: + raffstore2: + name: Raffstore Beispiel 2 + + aufab: + type: bool + name: Raffstore auf/ab fahren + enforce_updates: on + + step: + type: bool + name: Raffstore Schritt fahren/stoppen + enforce_updates: on + + hoehe: + type: num + name: Behanghöhe des Raffstores + + lamelle: + type: num + name: Lamellenwinkel des Raffstores + + automatik: + lock: + type: bool + name: Sperr-Item + visu_acl: rw + cache: on + + suspend: + type: bool + name: Suspend-Item + visu_acl: rw + # Achtung: Beim "Suspend"-Item niemals "enforce_updates = yes" setzen! Das führt dazu dass das Setzen des + # Suspend-Items bei der Initialisierung zu einem endlosen sofortigen Wiederaufruf der Statusermittlung führt! + + state_id: + type: str + name: Id des aktuellen Zustands + visu_acl: r + cache: on + + state_name: + type: str + name: Name des aktuellen Zustands + visu_acl: r + cache: on + + manuell: + type: bool + name: Manuelle Bedienung + # Änderungen dieser Items sollen als manuelle Bedienung gewertet werden + eval_trigger: + - beispiel.raffstore2.aufab + - beispiel.raffstore2.step + - beispiel.raffstore2.hoehe + - beispiel.raffstore2.lamelle + # Änderungen, die ursprünglich von diesen Triggern (:) ausgelöst wurden, sollen nicht als manuelle Bedienung gewertet werden + se_manual_exclude: + - KNX:y.y.y + - Init:* + + anwesenheit: + type: bool + name: Anwesenheit im Raum + eval: or + eval_trigger: + - beispiel.steckdosen + - beispiel.licht + + rules: + type: bool + name: Automatik Raffstore 2 + se_plugin: active + # Erste Zustandsermittlung nach 30 Sekunden + se_startup_delay: 30 + # Über diese Items soll die Statusermittlung ausgelöst werden + eval_trigger: beispiel.trigger.raffstore | beispiel.raffstore2.automatik.anwesenheit | beispiel.raffstore2.automatik.manuell | beispiel.raffstore2.automatik.lock | beispiel.raffstore2.automatik.suspend + # In dieses Item soll die Id des aktuellen Zustands geschrieben werden + se_laststate_item_id: ..state_id + # In dieses Item soll der Name des aktuellen Zustands geschrieben werden + se_laststate_item_name: ..state_name + # Dieses Item zeigt die Anwesenheit im Raum + se_item_anwesend: ..anwesenheit + # Item das anzeigt, ob die Helligkeit außen mehr als 35kLux beträgt + se_item_brightnessGt35k: beispiel.wetterstation.helligkeit.gt35k + # Item das anzeigt, ob die Helligkeit außen mehr als 20Lux beträgt + se_item_brightnessGt20k: beispiel.wetterstation.helligkeit.gt20k + + Lock: + # Zustand "Lock": Nur die Vorgabeeinstellungen übernehmen. Diese müssten laut Vorlage unter Advanced angelegt werden! + se_use: stateengine_default_raffstore.rules.Lock + + Suspend: + # Zustand "Suspend": Nur die Vorgabeeinstellungen übernehmen. Diese müssten laut Vorlage unter Advanced angelegt werden! + se_use: stateengine_default_raffstore.rules.Suspend + + Nachfuehren: + # Zustand "Nachführen": Vorgabeeinstellungen übernehmen + se_use: stateengine_default_raffstore.rules.Nachfuehren_Seite_Eins + + # ..und jetzt verändern wir das ganze, in dem wir abhängig vom "Anwesend"-Flag andere + # Grenzwerte für die Helligkeit setzen. + + # Erst definieren wir mal zusätzliche Einstiegsbedingungen, die die neuen Grenzwerte beinhalten: + :enter_anwesend: + # Einstieg in "Nachführen" bei Anwesenheit: Wenn + # - das Flag "Anwesenheit" gesetzt ist + se_value_anwesend: true + # - das Flag "Helligkeit > 35kLux" seit mindestens 60 Sekunden gesetzt ist (also 8k Lux früher als in "enter") + se_value_brightnessGt35k: true + se_agemin_brightnessGt35k: 60 + # - die Sonnenhöhe mindestens 15° ist (also 3° früher als in "enter") + se_min_sun_altitude: 15 + # - die Sonne aus Richtung 110° bis 270° kommt (also 20° früher als in "enter" + se_min_sun_azimut: 110 + se_max_sun_azimut: 270 + + enter_anwesend_hysterese: + # Hysterese für Helligkeit bei Anwesenheit: Wenn + # - das Flag "Anwesenheit" gesetzt ist + se_value_anwesend: true + # ... wir bereits in "Nachführen" sind + se_value_laststate: var:current.state_id + # .... das Flag "Helligkeit > 20kLux" gesetzt ist (also 5 kLux früher als in "enter_hysterese") + se_value_brightnessGt20k: true + # ... die Sonnenhöhe mindestens 15° ist (Übernahme aus "enter_anwesend") + se_min_sun_altitude: 15 + # ... die Sonne aus Richtung 110° bis 270° kommt (Übernahme aus "enter_anwesend") + se_min_sun_azimut: 110 + se_max_sun_azimut: 270 + + enter_anwesend_delay: + # Verzögerter Ausstieg nach Unterschreitung der Mindesthelligkeit bei Anwesenheit: Wenn + # - das Flag "Anwesenheit" gesetzt ist + se_value_anwesend: true + # ... wir bereits in "Nachführen" sind + se_value_laststate: var:current.state_id + # .... das Flag "Helligkeit > 20kLux" nicht (!) gesetzt ist, aber diese Änderung nicht mehr als 20 Minuten her ist + se_value_brightnessGt20k: false + se_agemax_brightnessGt20k: 1200 + # ... die Sonnenhöhe mindestens 15° ist (Übernahme aus "enter_anwesend") + se_min_sun_altitude: 15 + # ... die Sonne aus Richtung 110° bis 270° kommt (Übernahme aus "enter_anwesend") + se_min_sun_azimut: 110 + se_max_sun_azimut: 270 + + # Jetzt müssen wir die vorhandenen Bedingungen noch erweitern (sie gelten ja nur noch, wenn "Anwesenheit" nicht gesetzt ist) + enter: + # Einstieg in "Nachführen": Wenn zusätzlich + # - das Flag "Anwesenheit" nicht gesetzt ist + se_value_anwesend: false + + enter_hysterese: + # Hysterese für Helligkeit: Wenn zusätzlich + # - das Flag "Anwesenheit" nicht gesetzt ist + se_value_anwesend: false + + enter_delay: + # Verzögerter Ausstieg nach Unterschreitung der Mindesthelligkeit: Wenn zusätzlich + # - das Flag "Anwesenheit" nicht gesetzt ist + se_value_anwesend: false + + Nacht: + # Zustand "Nacht": Vorgabeeinstellungen übernehmen + se_use: stateengine_default_raffstore.rules.Nacht + # .. und zwei weitere Einstiegsbedingungen definieren + + enter_schlafenszeit_woche: + # Einstieg in "Nacht": Wenn + # - es zwischen 21:00 und 07:00 Uhr ist + se_min_time: '07:00' + se_max_time: '21:00' + se_negate_time: True + # - der Wochentag zwischen Montag und Freitag liegt + se_min_weekday: 0 + se_max_weekday: 4 + + enter_schlafenszeit_wochenende: + # Einstieg in "Nacht": Wenn + # - es zwischen 21:00 und 08:30 Uhr ist + se_min_time: '08:30' + se_max_time: '21:00' + se_negate_time: True + # - der Wochentag Samstag oder Sonntag ist + se_value_weekday: + - 5 + - 6 + + Tag: + # Zustand "Tag": Vorgabeeinstellungen übernehmen + se_use: stateengine_default_raffstore.rules.Tag diff --git a/stateengine/_pv_1_4_2/user_doc/user_doc9.rst b/stateengine/_pv_1_4_2/user_doc/user_doc9.rst new file mode 100755 index 000000000..b9e63702f --- /dev/null +++ b/stateengine/_pv_1_4_2/user_doc/user_doc9.rst @@ -0,0 +1,323 @@ +.. index:: Plugins; Stateengine +.. index:: Stateengine; Zustands-Templates +.. _Zustands-Templates: + +Zustands-Templates +################## + +.. rubric:: Struktur Templates + :name: strukturtemplates + +Neben der vom Plugin bereitgestellten Möglichkeit, Templates zu definieren (siehe weiter unten), +bietet sich ab **smarthomeNG 1.6** das ``struct`` Attribut an. Zum einen können in der Datei ``etc/struct.yaml`` +eigene Vorlagen definiert werden, zum anderen stellt das Plugin einige Vorlagen fix fertig bereit. Sie +können wie folgt eingebunden werden: + +.. code-block:: yaml + + #items/item.yaml + beispiel: + raffstore1: + automatik: + struct: + - stateengine.general + - stateengine.state_lock + - stateengine.state_suspend + - stateengine_default_raffstore #beispielsweise eine in etc/struct.yaml angelegte Vorlage + + manuell: + # Weitere Attribute werden bereits über das Template stateengine.state_suspend geladen + eval_trigger: + - beispiel.raffstore1.aufab + - beispiel.raffstore1.step + - beispiel.raffstore1.hoehe + - beispiel.raffstore1.lamelle + se_manual_exclude: + - KNX:y.y.y + - Init:* + + rules: + additional_state1: + type: foo + +Die Vorlagen beinhalten dabei folgende Strukturen. + +Die ``general`` Vorlage enthält die Items, die generell für einen Zustandsautomaten +angelegt werden sollten. Das "rules" Item ist das Regelwerk-Item mit aktiviertem +se_plugin. Dieser Codeblock wird zwingend von jedem Zustandsautomaten benötigt. + +.. code-block:: yaml + + #stateengine.general + state_id: + # The id/path of the actual state is assigned to this item by the stateengine + type: str + visu_acl: r + cache: True + + state_name: + # The name of the actual state is assigned to this item by the stateengine + type: str + visu_acl: r + cache: True + + rules: + name: Regeln und Item Verweise für den Zustandsautomaten + type: bool + se_plugin: active + eval: True + + # se_startup_delay: 30 + # se_repeat_actions: true # Ist das nicht eine Doublette zu anderen Möglichkeiten das zu konfigurieren? + # se_suspend_time: 7200 + + se_laststate_item_id: ..state_id + se_laststate_item_name: ..state_name + +Die ``state_lock`` Vorlage beinhaltet zum einen den Lock Zustand mit dem Namen "gesperrt", +zum anderen ein Item mit dem Namen ``lock``. Wird dieses auf "1/True" gesetzt, wird der +Zustand eingenommen. Der Zustand sollte immer als erster Zustand eingebunden werden. + +.. code-block:: yaml + + #stateengine.state_lock + lock: + type: bool + knx_dpt: 1 + visu_acl: rw + cache: 'on' + + rules: + se_item_lock: ..lock + eval_trigger: ..lock + + lock: + name: gesperrt + + on_leave: + se_action_lock: + - 'function: set' + - 'to: False' + + enter: + se_value_lock: True + +Die ``state_suspend`` Vorlage dient dem Abfragen von manuellen Tätigkeiten, wie +z.B. das Schalten eines Lichts oder Fahren einer Jalousie mittels Taster oder Visu. +In diesem Fall soll die automatiche Evaluierung für eine gewisse Zeit pausieren. + +Beim ``manuell`` Item muss unter Umständen der Eintrag ``se_manual_exclude`` in der eigenen +Baumstruktur überschrieben und durch einen Eintrag ``- KNX:GA des Aktors`` +ergänzt werden. + +Das Item ``settings.suspendduration`` ermöglicht es, die Dauer der Pausierung bequem +über eine Visu oder das Backend zu ändern. Setzt man das Item ``settings.suspend_active`` +auf False, wird der Pause-Zustand deaktiviert und manuelle Betätigungen werden +beim nächsten Durchlauf eventuell durch andere Zustände überschrieben. + +.. code-block:: yaml + + #stateengine.state_suspend + suspend: + type: bool + knx_dpt: 1 + visu_acl: rw + cache: True + + suspend_end: + type: str + visu_acl: ro + cache: True + + manuell: + type: bool + name: manuell + se_manual_invert: True + se_manual_exclude: + - database:* + + settings: + suspendduration: + type: num + visu_acl: rw + cache: True + + suspend_active: + type: bool + visu_acl: rw + cache: True + + rules: + se_item_suspend: ..suspend + se_item_retrigger: ..rules + se_item_suspend_end: ..suspend_end + se_item_suspend_active: ..settings.suspend_active + se_suspend_time: eval:stateengine_eval.get_relative_itemvalue('..settings.suspendduration') * 60 + eval_trigger: ..manuell + + suspend: + name: ausgesetzt + + on_enter_or_stay: + se_action_suspend: + - 'function: special' + - 'value: suspend:..suspend, ..manuell' + - 'repeat: True' + - 'order: 1' + se_action_suspend_end: + - 'function: set' + - "to: eval:stateengine_eval.insert_suspend_time('..suspend', suspend_text='%X')" + - 'repeat: True' + - 'order: 2' + se_action_retrigger: + - 'function: set' + - 'to: True' + - 'delay: var:item.suspend_remaining' + - 'repeat: True' + - 'order: 3' + + on_leave: + se_action_suspend: + - 'function: set' + - 'to: False' + se_action_suspend_end: + - 'function: set' + - 'to: ' + + enter_manuell: + se_value_trigger_source: eval:stateengine_eval.get_relative_itemid('..manuell') + se_value_suspend_active: True + + enter_stay: + se_value_laststate: var:current.state_id + se_agemax_suspend: var:item.suspend_time + se_value_suspend: True + se_value_suspend_active: True + +Die ``state_release`` Vorlage ist nicht unbedingt nötig, kann aber dazu genutzt werden, +schnell den Sperr- oder Pause-Zustand zu verlassen und die erneute Evaluierung +der Zustände anzuleiern. + +.. code-block:: yaml + + #stateengine.state_release + release: #triggers the release + type: bool + knx_dpt: 1 + visu_acl: rw + enforce_updates: True + + rules: + se_item_lock: ..lock + se_item_suspend: ..suspend + se_item_retrigger: ..rules + se_item_release: ..release + se_item_suspend_end: ..suspend_end + eval_trigger: ..release + + release: + name: release + + on_enter_or_stay: + se_action_suspend: + - 'function: set' + - 'to: False' + - 'order: 1' + se_action_lock: + - 'function: set' + - 'to: False' + - 'order: 2' + se_action_release: + - 'function: set' + - 'to: False' + - 'order: 3' + se_action_suspend_end: + - 'function: set' + - 'to: ' + - 'order: 4' + se_action_retrigger: + - 'function: set' + - 'to: True' + - 'order: 5' + - 'repeat: True' + - 'delay: 1' + + enter: + se_value_release: True + + +.. rubric:: Pluginspezifische Templates + :name: pluginspezifisch + +Es ist möglich, Vorgabezustände in der Item-Konfiguration zu definieren +und diese später für konkrete Regelwerke anzuwenden. Dabei können im +konkreten Zustand auch Einstellungen des Vorgabezustands +überschrieben werden. + +Vorgabezustände werden als Item an beliebiger Stelle innerhalb der +Item-Struktur definiert. Es ist sinnvoll, die Vorgabezustände +unter einem gemeinsamen Item namens ``default`` zusammenzufassen. Innerhalb der +Vorgabezustand-Items stehen die gleichen Möglichkeiten wie in +normalen Zustands-Items zur Verfügung. Das dem +Vorgabezustands-Item übergeordnete Item darf nicht das Attribut +``se_plugin: active`` haben, da diese Items nur Vorlagen und keine +tatsächlichen State Machines darstellen. Im Item über dem +Vorgabezustands-Item können jedoch Items über +``se_item_`` angegeben werden. Diese +stehen in den Vorgabezuständen und in den von den Vorgabezuständen +abgeleiteten Zuständen zur Verfügung und müssen so nicht jedes Mal +neu definiert werden. + +Im konkreten Zustands-Item kann das Vorgabezustand-Item über das +Attribut + +.. code-block:: yaml + + se_use: + +eingebunden werden. Die Vorgabezustand-Items können geschachtelt +werden, das heißt ein Vorgabezustand kann also selbst wiederum +über ``se_use`` von einem weiteren Vorgabezustand abgeleitet +werden. Um unnötige Komplexität und Zirkelbezüge zu vermeiden, ist +die maximale Tiefe jedoch auf 5 Ebenen begrenzt. + +.. rubric:: Beispiel + :name: vorgabebeispiel + +.. code-block:: yaml + + beispiel: + default: + <...> + se_item_height: ...hoehe + Nacht: + <...> + enter: + (...) + se_set_height: value:100 + se_set_lamella: 0 + Morgens: + <...> + enter: + <...> + se_set_height: value:100 + se_set_lamella: 25 + + raffstore1: + lamelle: + type: num + hoehe: + type: num + + automatik: + rules: + <...> + se_item_lamella: beispiel.raffstore1.lamelle + Nacht: + se_use: beispiel.default.Nacht + enter_additional: + <... zusätzliche Einstiegsbedingung ...> + enter: + <... Änderungen an der Einstiegsbedingung des Vorgabezustands ...> + Morgens: + se_use: beispiel.default.Morgens diff --git a/stateengine/_pv_1_4_2/webif/static/img/plugin_logo.png b/stateengine/_pv_1_4_2/webif/static/img/plugin_logo.png new file mode 100755 index 0000000000000000000000000000000000000000..c5d78af6be2d00947930df0735fcd0aed6f211fe GIT binary patch literal 21516 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 z zMqJG0&T(uYczgL?O7M4r0NL!iGrM)(Ge9D6*6*m^mG_BaISU;;+e@q3AU16@Xc9SK zP&faOu&TY_QnG;vVx_kMO8k`nxwoJao7IV;My!^3J=BD7r#9CzC>L74Qnr4uUX8gGl#n=INBD1=3RblK<949+ zv^#S}(!09KO=rN>vJ&g}h_A% zLhL0vr)b5fTeKs;VMGX`Y~|ZsnvfUD{KkHuhK)zD0{T}eE7BsJqE$LO z^E6ZsTtrg=?Jc`?F(W%V8%`5jJ}?ao=G$As#%HZy)}_FotaOmP6xcKqIsBmOwpiwt zw=yDdixFJ^zOl}iIj(6bgzTZ~*s|)y+&jZxcmlR22q1cjz+}vU*`K(NK=oUN_fV-V z37$*SgD3e%4OL>x3e0^FB&eHn>E_i-e#=0d9EBQI58*`Lb{PD^RzH(^hLA^JZJ#HO zK&>hVc|9esu0HA*SnpO<0&)+k8PgV zcaMPO;7F1?yiRh1MNt5N#JL41rrb?M=rKWOt4Ka=lmpL>fy(_*2Ba(ttwrALS<(4) zt$*${nEten*k(!Mw+He2LVi8F7HVinEbCDIujBqf!7Zc?7p06^~69n$B-%C~H# zK+b}XHEgO@hI%>hv8Az^NxUDu-3Q-yH_7RrADO2XhJ$;fLdbaXlvOUK;>KXj4>85H zlDAP*cm#I}FTR9>RqH{Iw}F&9qhX<1^EEf>j(kL|E*tcaa63BE!eFo){)flntwK5X zr;>Y$(_rRAG9MrO4HN}tv}+{~T*#KV?>jM)7omAM`zKlQT%QA_I;yJCZs9rRXzFS( zw&&S%|7c7VI(3)^-Dnr^F-$lAV`g8iNiBuGaJB`{xFBX*UZxe$=3MoP67VR#gjL|s z70BI6R*kh^wV^t0g^a6~&QtE#Njf)zJSc3ZO-4r)py_%y~(h`KX9+z=0 zEiT{)?}YcSp=PhW)2GC`i<7mk5c8JhKpmi(omx1~`FOK(Cb-?vc6UtRO*?Bop!r=e z1DTbUJeSuS-8a}B_bIVj!?SWcmEL)a7v!j=Ol{?96 z4^)z%(#)3SUm9K!sCP9S5MOiZxaqN+ JpMU-Re*rokYViO7 literal 0 HcmV?d00001 diff --git a/stateengine/_pv_1_4_2/webif/static/img/plugin_logo.tif b/stateengine/_pv_1_4_2/webif/static/img/plugin_logo.tif new file mode 100755 index 0000000000000000000000000000000000000000..b0ec6f0f4b36a7070ad1f722450ed9c32f478b7d GIT binary patch literal 143044 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 RLd_Ltrp6f0Owl>1{|{z^Qb_;+ literal 0 HcmV?d00001 diff --git a/stateengine/_pv_1_4_2/webif/static/img/readme.txt b/stateengine/_pv_1_4_2/webif/static/img/readme.txt new file mode 100755 index 000000000..1a7c55eef --- /dev/null +++ b/stateengine/_pv_1_4_2/webif/static/img/readme.txt @@ -0,0 +1,6 @@ +This directory is for storing images that are used by the web interface. + +If you want to have your own logo on the top of the web interface, store it here and name it plugin_logo.. + +Extension can be png, svg or jpg + diff --git a/stateengine/_pv_1_4_2/webif/templates/index.html b/stateengine/_pv_1_4_2/webif/templates/index.html new file mode 100755 index 000000000..009bd8eaf --- /dev/null +++ b/stateengine/_pv_1_4_2/webif/templates/index.html @@ -0,0 +1,70 @@ +{% extends "base_plugin.html" %} +{% block scripts %} +{{ super() }} + +{% endblock scripts %} +{% set logo_frame = false %} + + +{% set item_count = p.__items|length %} +{% set tab1title = "_('Dokumentation')" %} +{% set tab2title = "Items" %} +{% set tabcount = 1 %} + +{% block headtable %} + + + + + + + + + + + + + + + + + + + + + + + + + +
Log Level{{ p.get_parameter_value_for_display('log_level') }}Log Folder{{ p.get_parameter_value_for_display('log_directory') }}
Startup Delay{{ p.get_parameter_value_for_display('startup_delay_default') }}Suspend Time{{ p.get_parameter_value_for_display('suspend_time_default') }}
Items{{ item_count }}
+{% endblock headtable %} + + +{% block bodytab1 %} + +
+{% endblock bodytab1 %} diff --git a/stateengine/plugin.yaml b/stateengine/plugin.yaml index 93e3d40bb..d3aa2a5ac 100755 --- a/stateengine/plugin.yaml +++ b/stateengine/plugin.yaml @@ -21,13 +21,16 @@ plugin: with hierarchical states. ' maintainer: i-am-offline, onkelandy + tester: '?' + state: ready documentation: https://www.smarthomeng.de/user/plugins/stateengine/user_doc.html support: https://knx-user-forum.de/forum/supportforen/smarthome-py/1303071-stateengine-plugin-support - version: 1.4.2 - sh_minversion: 1.4.1 + version: 1.5.0 + sh_minversion: 1.6 multi_instance: False classname: StateEngine + restartable: unknown attribute_prefix: se parameters: @@ -511,3 +514,9 @@ item_structs: enter: se_value_release: True + +plugin_functions: NONE +# Definition of plugin functions defined by this plugin + +logic_parameters: NONE +# Definition of logic parameters defined by this plugin diff --git a/stateengine/user_doc.rst b/stateengine/user_doc.rst index f331f92d8..ef4f78d81 100755 --- a/stateengine/user_doc.rst +++ b/stateengine/user_doc.rst @@ -10,14 +10,14 @@ Dokumentation .. toctree:: :titlesonly: - user_doc/user_doc1.rst - user_doc/user_doc2.rst - user_doc/user_doc3.rst - user_doc/user_doc4.rst - user_doc/user_doc5.rst - user_doc/user_doc6.rst - user_doc/user_doc7.rst - user_doc/user_doc8.rst - user_doc/user_doc9.rst - user_doc/user_doc10.rst - user_doc/user_doc11.rst + user_doc/user_doc1.rst + user_doc/user_doc2.rst + user_doc/user_doc3.rst + user_doc/user_doc4.rst + user_doc/user_doc5.rst + user_doc/user_doc6.rst + user_doc/user_doc7.rst + user_doc/user_doc8.rst + user_doc/user_doc9.rst + user_doc/user_doc10.rst + user_doc/user_doc11.rst diff --git a/stateengine/user_doc/user_doc10.rst b/stateengine/user_doc/user_doc10.rst old mode 100644 new mode 100755 diff --git a/stateengine/user_doc/user_doc11.rst b/stateengine/user_doc/user_doc11.rst old mode 100644 new mode 100755 diff --git a/stateengine/user_doc/user_doc2.rst b/stateengine/user_doc/user_doc2.rst old mode 100644 new mode 100755 diff --git a/stateengine/user_doc/user_doc4.rst b/stateengine/user_doc/user_doc4.rst old mode 100644 new mode 100755 diff --git a/stateengine/user_doc/user_doc5.rst b/stateengine/user_doc/user_doc5.rst old mode 100644 new mode 100755 diff --git a/stateengine/user_doc/user_doc6.rst b/stateengine/user_doc/user_doc6.rst old mode 100644 new mode 100755 diff --git a/stateengine/user_doc/user_doc7.rst b/stateengine/user_doc/user_doc7.rst old mode 100644 new mode 100755 diff --git a/stateengine/user_doc/user_doc8.rst b/stateengine/user_doc/user_doc8.rst old mode 100644 new mode 100755 diff --git a/stateengine/user_doc/user_doc9.rst b/stateengine/user_doc/user_doc9.rst old mode 100644 new mode 100755 diff --git a/stateengine/webif/static/img/plugin_logo.tif b/stateengine/webif/static/img/plugin_logo.tif old mode 100644 new mode 100755 From 6a547da0c90effc20c9ca379961c9f04e11a24fe Mon Sep 17 00:00:00 2001 From: bmxp Date: Sat, 18 May 2019 16:30:02 +0200 Subject: [PATCH 036/200] thz plugin as smartplugin --- thz/PortHandler.py | 242 ++++++ thz/README.md | 108 +++ thz/README.rst | 100 +++ thz/ThzProtocol.py | 1302 +++++++++++++++++++++++++++++++ thz/__init__.py | 513 ++++++++++++ thz/plugin.yaml | 949 ++++++++++++++++++++++ thz/requirements.txt | 1 + thz/thz.yaml | 869 +++++++++++++++++++++ thz/webif/static/img/readme.txt | 6 + thz/webif/templates/index.html | 100 +++ 10 files changed, 4190 insertions(+) create mode 100644 thz/PortHandler.py create mode 100644 thz/README.md create mode 100644 thz/README.rst create mode 100644 thz/ThzProtocol.py create mode 100644 thz/__init__.py create mode 100644 thz/plugin.yaml create mode 100644 thz/requirements.txt create mode 100644 thz/thz.yaml create mode 100644 thz/webif/static/img/readme.txt create mode 100644 thz/webif/templates/index.html diff --git a/thz/PortHandler.py b/thz/PortHandler.py new file mode 100644 index 000000000..3a3ccdcfe --- /dev/null +++ b/thz/PortHandler.py @@ -0,0 +1,242 @@ +#!/usr/bin/env python3 +# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab +######################################################################### +# Ported and Copyright 2014 toggle +######################################################################### +# This software is based on the FHEM implementation +# https://github.com/mhop/fhem-mirror/blob/master/fhem/FHEM/00_THZ.pm +# +# THZ plugin for SmartHomeNG +# +# SmartHomeNG is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# SmartHomeNG is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with SmartHomeNG. If not, see . +# +######################################################################### + +""" +This file provides the class PortHandler which +implements the low level protocol of the THZ serial port. +The serial communication with the THZ/LWZ is time critical therefor the +handling is done with a seperate worker thread. +""" + +import serial +import threading +import select +import multiprocessing +import time +import sys +import logging + +# control characters +STX = b'\x02' +ETX = b'\x03' +DLE = b'\x10' +CAN = b'\x18' +CODE_2B = b'\x2B' + +# state enumeration +IDLE = 0 +MSG_BODY = 1 +ESCAPING_DLE = 2 +ESCAPING_2B = 3 + + +class PortHandler(threading.Thread): + def __init__(self, serial_port, baudrate, logger): + threading.Thread.__init__(self, name='THZ PortHandler') + self.logger = logger + try: + self._fd = serial.Serial(serial_port, baudrate, timeout=5) + self.logger.info('thz: Connected to serial port - {}'.format(serial_port)) + except: + self._fd = None + self.logger.error('thz: Failed to open serial port - {}'.format(sys.exc_info())) + self._state = IDLE + self._rxFrm = b'' + self._alive = True + self._rxQueue = multiprocessing.Queue(maxsize = 0) + self._txQueue = multiprocessing.Queue(maxsize = 0) + self.rxFramingErrorCount = 0 + + def _processRxData(self): + """ + processRxData() implements a state machine handling the received bytes + according to the low-level protocol (message start/end, escaping of special + characters). + """ + data = b''; + while self._fd.inWaiting(): + data = self._fd.read(1); + #self.logger.debug('{}'.format(data)) + if self._state == IDLE: + self._rxFrm = b'' + if data == DLE: + # discard + #self.logger.debug("Discard DLE") + pass + elif data == STX: + # acknowledge with DLE + self._fd.write(DLE); + + # start new frame and switch state + self._state = MSG_BODY + #self.logger.debug("Ack STX") + else: + self.logger.warning("IDLE: Unexpected data {}".format(data)) + self._state = IDLE + self.rxFramingErrorCount += 1 + + elif self._state == MSG_BODY: + if data == DLE: + # escaping DLE + self._state = ESCAPING_DLE + #self.logger.debug("Escaping DLE") + elif data == CODE_2B: + # escaping 2B + self._state = ESCAPING_2B + #self.logger.debug("Escaping 2B") + self._rxFrm += data; + else: + self._rxFrm += data; + + elif self._state == ESCAPING_2B: + if data == CAN: + # discard the CAN byte + # return to collecting message bytes + self._state = MSG_BODY + else: + self.logger.warning("ESCAPING_2B: Unexpected data {}".format(data)) + self._state = IDLE + self.rxFramingErrorCount += 1 + + elif self._state == ESCAPING_DLE: + if data == DLE: + self._rxFrm += data + # return to collecting message bytes + self._state = MSG_BODY + elif data == ETX: + # message end received + self._rxQueue.put(self._rxFrm) + #self.logger.debug ('Message received') + #self.logger.debug ('Rx:' + ' '.join(format(x, '02x') for x in self._rxFrm)) + self._state = IDLE + # acknowledge with DLE + self._fd.write(DLE) + else: + self.logger.warning("ESCAPING_DLE: Unexpected data {}".format(data)) + self._rxFrm = b'' + self._state = IDLE + self.rxFramingErrorCount += 1 + + def _processTxData(self): + """implements the low-level protocol encoding (message start/end, escaping of special characters""" + while not self._txQueue.empty(): + frm = self._txQueue.get() + #self.logger.debug ('Tx:' + ' '.join(format(x, '02x') for x in frm)) + + # escape DLE bytes + prevIndex = 0 + while 1: + index = frm.find(DLE, prevIndex) + if index != -1: + # insert a DLE (insert requires an integer ?!) + frm.insert(index, ord(DLE)) + prevIndex = index + 2 + else: + break + + # escape 0x2B bytes + prevIndex = 0 + while 1: + index = frm.find(CODE_2B, prevIndex) + if index != -1: + # insert a CAN code (insert requires an integer ?!) + frm.insert(index+1, ord(CAN)) + prevIndex = index + 2 + else: + break + + # add header and trailer + frm = STX + frm + DLE + ETX + self.logger.debug ('Tx: ' + ' '.join(format(x, '02x') for x in frm)) + + # and finally send the message + self._fd.write(frm) + + def run(self): + """implements the main loop of the port handler""" + self.logger.info("PortHandler started") + while self._alive: + if not self._fd == None: + try: + # use select to implement a timeout, otherwise it is not + # possible to stop the thread + ready,_,_ = select.select([self._fd, self._txQueue._reader],[],[], 1) + try: + for event in ready: + if event is self._fd: + self._processRxData() + + if event is self._txQueue._reader: + self._processTxData() + except: + self.logger.error("Data processing failed - {}".format(sys.exc_info())) + if not self._fd == None: + self._fd.close(); + self._fd = None + + except: + self.logger.error("select failed - {}".format(sys.exc_info())) + if not self._fd == None: + self._fd.close(); + self._fd = None + else: + # discard tx messages + while not self._txQueue.empty(): + self._txQueue.get() + time.sleep(1) + + def stop(self): + """posts a request to stop the port handler thread""" + self.logger.debug("PortHandler.stop() called") + self._alive = False + + def sendData(self, data): + """puts a messages into the transmission queue to be processed in the main loop""" + self._txQueue.put(data) + + def readData(self): + """reads a received message from the message queue.""" + try: + frm = self._rxQueue.get(block = True, timeout = 1) + except multiprocessing.queues.Empty: + frm = None + return frm + + def isPortOpen(self): + """returns the state of the serial port""" + if self._fd == None: + return False + else: + return True + + def openPort(self, serial_port, baudrate): + """attempts to open the serial port""" + try: + self._fd = serial.Serial(serial_port, baudrate, timeout=5) + self.logger.info('Reconnected to serial port - {}'.format(serial_port)) + return True + except: + self._fd = None + return False diff --git a/thz/README.md b/thz/README.md new file mode 100644 index 000000000..7416ef369 --- /dev/null +++ b/thz/README.md @@ -0,0 +1,108 @@ +# THZ + +Plugin for Stiebel Eltron and Tecalor integrated heatpumps LWZ/THZ 30x/40x. + + +## Requirements + +* pySerial (sudo apt-get install python-serial) +* Serial port connected to the LWZ/THZ maintenance port. + The wiring description is provided at: + http://robert.penz.name/heat-pump-lwz + +## Supported Hardware + +Tested with: +* THZ 404 SOL, software version 5.39, software IDs 5993 & 7278 +* THZ 303i, software version 4.39 + +According to the FHEM forum (http://forum.fhem.de/index.php/topic,13132.0.html) the original Perl code also works with other heatpump models (303, 304, 403). + +## Configuration + +### plugin.yaml + +``` +thz: + class_name: THZ + class_path: plugins.thz + serial_port: /dev/ttyUSB0 + baudrate: 115200 + poll_period: 30 + min_update_period: 300 + max_update_period: 43200 +``` + +Description of the attributes: + +* __serial_port__: serial port connected to the heatpump +* __baudrate__: port speed, recent models use 115200 bps, older heatpumps may use 57600 bps or even 9600 bps +* __poll_period__: interval in seconds how often the data is read from the heatpump +* __min_update_period__: interval in seconds for updating the values changing frequently (e.g. temperature), it should be higher than the poll period +* __max_update_period__: interval in seconds for updating the values with infrequent changes (e.g. counters updated once per day) + +### items.yaml + +There are read-only parameters and read-write parameters. +Temperature values are in °C. +Heat and power values are provided in kWh. +For the description of the read-write parameters refer to the heatpump manual. +The parameter name includes the parameter number (i.e. the prefix pXX) described in the manual. + +.. literalinclude:: thz.yaml + :linenos: + :language: python + :lines: 1, 3-5 + :start-after: 3 + :end-before: 5 + +### Release history + +* Version overhauled to be a SmartPlugin to 0.2.2 + +* Version renamed to 0.2.1 + +* beta1, Dec 17, 2016 + + new status parameters + iconCooling + iconService + + new read/write parameters: + p32hystDHW + p34BoosterDHWTempAct + p35PasteurisationInterval + p35PasteurisationTemp + p76RoomThermCorrection + p77OutThermFilterTime + p89DHWeco + p99DHWmaxFlowTemp + p99startUnschedVent + pClockDay + pClockMonth + pClockYear + pClockHour + pClockMinute + - removed parameters: + p99CoolingRtDay (redundant, see p01-p03 summer mode) + p99CoolingRtNight (redundant, see p01-p03 summer mode) + +* alpha6, Aug 5, 2016 + + new read/write parameters: + p99CoolingRtDay + p99CoolingRtNight + p99CoolingSwitch + + new status parameters + inputVentSpeed + outputVentSpeed + inputAirFlow + outputAirFlow + +* alpha5, Jan 31, 2015 + +* alpha4, Jan 25, 2015 + +* alpha3, Jan 5, 2015 + +* alpha2, Dec 26, 2014 + +* alpha1, Dec 19, 2014 + diff --git a/thz/README.rst b/thz/README.rst new file mode 100644 index 000000000..fe3ebf8bd --- /dev/null +++ b/thz/README.rst @@ -0,0 +1,100 @@ +THZ +=== + +Plugin for Stiebel Eltron and Tecalor integrated heatpumps LWZ/THZ 30x/40x. + +Requirements +------------ + +- pySerial (sudo apt-get install python-serial) +- Serial port connected to the LWZ/THZ maintenance port. + The wiring description is provided at: http://robert.penz.name/heat-pump-lwz + +Supported Hardware +------------------ + +Tested with: +* THZ 404 SOL, software version 5.39, software IDs 5993 & 7278 +* THZ 303i, software version 4.39 + +According to the FHEM forum (http://forum.fhem.de/index.php/topic,13132.0.html) +the original Perl code also works with other heatpump models (303, 304, 403). + +Configuration +------------- + +plugin.yaml +~~~~~~~~~~~ + +.. code-block:: yaml + + thz: + class_name: THZ + class_path: plugins.thz + serial_port: /dev/ttyUSB0 + baudrate: 115200 + poll_period: 30 + min_update_period: 300 + max_update_period: 43200 + +Description of the attributes: + +- **serial\_port**: serial port connected to the heatpump +- **baudrate**: port speed, recent models use 115200 bps, older heatpumps may use 57600 bps or even 9600 bps +- **poll\_period**: interval in seconds how often the data is read from the heatpump +- **min\_update\_period**: interval in seconds for updating the values changing frequently (e.g. temperature), it should be higher than the poll period +- **max\_update\_period**: interval in seconds for updating the values with infrequent changes (e.g. counters updated once per day) + +items.yaml +~~~~~~~~~~ + +There are read-only parameters and read-write parameters. Temperature values are in °C. Heat and power values are provided in kWh. For the description of the read-write parameters refer to the heatpump manual. The parameter name includes the parameter number (i.e. the prefix pXX) described in the manual. + +.. literalinclude:: thz.yaml + :linenos: + :language: python + +Release history +~~~~~~~~~~~~~~~ + +- Version overhauled to be a SmartPlugin to 0.2.2 + +- Version renamed to 0.2.1 + +- beta1, Dec 17, 2016 +- new status parameters iconCooling iconService +- new read/write parameters: + * p32hystDHW + * p34BoosterDHWTempAct + * p35PasteurisationInterval + * p35PasteurisationTemp + * p76RoomThermCorrection + * p77OutThermFilterTime + * p89DHWeco + * p99DHWmaxFlowTemp + * p99startUnschedVent + * pClockDay + * pClockMonth + * pClockYear + * pClockHour + * pClockMinute +- removed parameters: + * p99CoolingRtDay (redundant, see p01-p03 summer mode) + * p99CoolingRtNight (redundant, see p01-p03 summer mode) + +- alpha6, Aug 5, 2016 +- new read/write parameters: + * p99CoolingRtDay + * p99CoolingRtNight + * p99CoolingSwitch +- new status parameters inputVentSpeed outputVentSpeed inputAirFlow outputAirFlow + +- alpha5, Jan 31, 2015 + +- alpha4, Jan 25, 2015 + +- alpha3, Jan 5, 2015 + +- alpha2, Dec 26, 2014 + +- alpha1, Dec 19, 2014 diff --git a/thz/ThzProtocol.py b/thz/ThzProtocol.py new file mode 100644 index 000000000..ad391278a --- /dev/null +++ b/thz/ThzProtocol.py @@ -0,0 +1,1302 @@ +#!/usr/bin/env python3 +# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab +######################################################################### +# Ported by toggle, 2014-2016 +######################################################################### +# This software is based on the FHEM implementation +# https://github.com/mhop/fhem-mirror/blob/master/fhem/FHEM/00_THZ.pm +# +# THZ plugin for SmartHomeNG +# +# SmartHomeNG is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# SmartHomeNG is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with SmartHomeNG. If not, see . +# +######################################################################### + +""" +This file implements message definitions and +protocol encoding and decoding function for THZ/LWZ. +""" + +import time +import sys +import logging +import threading +import datetime +import struct +from . import PortHandler + +# mode mappings to plain text +OpMode = {'00': 'emergency', '01': 'standby', '03': 'DAYmode', '04': 'setback', + '05': 'DHWmode', '11': 'automatic', '14': 'manual' } + +OpModeHC = {'01': 'normal', '02': 'setback', '03': 'standby', '04': 'restart', + '05': 'restart' } + +logger = logging.getLogger('THZ') + +""" +Decoding functions + +data contains the whole read data as bytes +offset indicates the starting point where to start the conversion +length provides the length of the data to convert +pos alternative to a length this indicates the position within a packed binary +multiplier provides a scalar to use for getting the converted data into the correct range +dummy just a dummy with no meaning, keeping 4 params to the decoding API +""" + +def decodeByte(data, offset, length, multiplier): + return data[offset] + +def decodeShort(data, offset, length, multiplier): + val = int.from_bytes(data[offset:offset+length], byteorder='big') + if val > 0x7FFF: + val -= 0x10000 + return round(val * multiplier, 3) + +def decodeLong(data, offset, length, multiplier): + val = int.from_bytes(data[offset:offset+length], byteorder='big') + if val > 0x7FFFFFFF: + val -= 0x100000000 + return round(val * multiplier, 3) + +def decodeFloat(data, offset, length, multiplier): + val = struct.unpack('!f', data[offset:offset+4])[0] + return round(val * multiplier, 3) + +def decodeString(data, offset, length, dummy): + return data[offset:offset+length].decode("utf-8") + +def decodeHex(data, offset, length, dummy): + return ''.join(format(x, '02x') for x in data[offset:offset+length]) + +def decodeBit(data, offset, pos, dummy): + mask = 1 << pos + value = 0 + if data[offset] & mask: + value = 1 + return value + +def decodeNBit(data, offset, pos, dummy): + mask = 1 << pos + value = 1 + if data[offset] & mask: + value = 0 + return value + +def decodeTime(data, offset, pos, dummy): + str = '%02d:%02d:%02d'%(data[offset], data[offset+1], data[offset+2]) + return str + +def decodeDate(data, offset, pos, dummy): + str = '%02d/%02d/%02d'%(data[offset], data[offset+1], data[offset+2]) + return str + +def decodeTime2(data, offset, pos, dummy): + (hour, min) = divmod(int.from_bytes(data[offset:offset+2], byteorder='little'), 100) + str = '%02d:%02d'%(hour, min) + return str + +def decodeDate2(data, offset, pos, dummy): + # get the current year + year = datetime.date.today().year - 2000 + + # extract the date value + val = int.from_bytes(data[offset:offset+2], byteorder='little') + (day, month) = divmod(val, 100) + + # compute the current date value + valCur = datetime.date.today().day * 100 + datetime.date.today().month + if valCur < val: + # the fault was reported last year + year -= 1 + if day == 0 and month == 0: + # date not set + year = 0 + str = '%02d/%02d/%02d'%(year, month, day) + return str + +def decodeOpMode(data, offset, pos, dummy): + try: + str = OpMode[format(data[offset], '02d')] + except: + str = 'Unknown mode: ' . format(data[offset], '02d') + return str + +def decodeOpModeHC(data, offset, pos, dummy): + try: + str = OpModeHC[format(data[offset], '02d')] + except: + str = 'Unknown HC mode: ' . format(data[offset], '02d') + return str + +""" +Message definitions + +message definitions for the version 5.39, SW ID 7278 +""" + +MsgTemplate = { + +# read-only messages + + 'sHistory': { + 'cmd1': '09', + 'params': { + 'compressorHeatingCycles': [0, 2, decodeShort, 1], + 'compressorCoolingCycles': [2, 2, decodeShort, 1], + 'compressorDHWCycles': [4, 2, decodeShort, 1], + 'boosterDHWCycles': [6, 2, decodeShort, 1], + 'boosterHeatingCycles': [8, 2, decodeShort, 1] + } + }, + 'sSol': { + 'cmd1': '16', + 'params': { + 'collectorTempSol': [ 0, 2, decodeShort, 0.1], + 'dhwTempSol': [ 2, 2, decodeShort, 0.1], + 'flowTempSol': [ 4, 2, decodeShort, 0.1], + 'ed_sol_pump_temp': [ 6, 2, decodeShort, 0.1], + #'x20': [ 8, 2, decodeHex, 1], + #'x24': [10, 2, decodeHex, 1], + #'x28': [12, 2, decodeHex, 1], + #'x32': [14, 1, decodeHex, 1] + } + }, + 'sDHW': { + 'cmd1': 'F3', + 'params': { + #'dhwTemp': [ 0, 2, decodeShort, 0.1], + #'outside_temp': [ 2, 2, decodeShort, 0.1], + 'dhwSetTemp': [ 4, 2, decodeShort, 0.1], + 'compBlockTime': [ 6, 2, decodeShort, 1], + #'x20': [ 8, 2, decodeShort, 1], + 'heatBlockTime': [10, 2, decodeShort, 1], + #'x28': [12, 2, decodeShort, 1], + #'x32': [14, 2, decodeShort, 1], + #'x36': [16, 2, decodeShort, 1] + } + }, + # 01 00 46 f4 ff fb ff 17 01 1f ff a6 01 53 01 33 01 2d 01 00 02 01 68 08 00 64 01 00 00 00 00 d2 00 00 1b 00 00 d2 02 00 00 1b 00 11 + # .. .. .. .. otemp ?? ?? rtemp integ flowT setT currT ?? ?? mo ?? bits integ md ?? ?? ?? roomT roomT ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? + 'sHC1': { + 'cmd1': 'F4', + 'params': { + #'outsideTemp': [ 0, 2, decodeShort, 0.1], + #'x08': [ 2, 2, decodeShort, 0.1], + 'returnTempHC1': [ 4, 2, decodeShort, 0.1], + 'integralHeatHC1': [ 6, 2, decodeShort, 1], + 'flowTempHC1': [ 8, 2, decodeShort, 0.1], + 'heatSetTempHC1': [10, 2, decodeShort, 0.1], + 'heatTempHC1': [12, 2, decodeShort, 0.1], + 'onHysteresisNo': [14, 1, decodeByte, 1], + 'offHysteresisNo': [15, 1, decodeByte, 1], + 'HCBoosterStage': [16, 1, decodeByte, 1], + #'seasonMode': [17, 1, decodeShort, 1], # 1: winter, 2: summer + #'x40': [18, 2, decodeShort, 1], + #'integralSwitch': [20, 2, decodeShort, 1], + 'opModeHC': [22, 1, decodeOpModeHC, 1], + #'x52': [24, 2, decodeShort, 1], + 'roomSetTempHC1': [26, 2, decodeShort, 0.1], + 'roomTempRC': [32, 2, decodeShort, 0.1] + } + }, + 'sHC2': { + 'cmd1': 'F5', + 'params': { + #'outsideTemp': [ 0, 2, decodeShort, 0.1], + 'returnTempHC2': [ 2, 2, decodeShort, 0.1], + #'flowTempHC2': [ 4, 2, decodeShort, 0.1], + 'heatSetTempHC2': [ 6, 2, decodeShort, 0.1], + 'heatTempHC2': [ 8, 2, decodeShort, 0.1], + #'stellgroesse': [10, 2, decodeShort, 0.1], + #'seasonMode': [13, 1, decodeShort, 1], + #'opMode': [16, 1, decodeOpModeHC, 1] + } + }, + 'sLast10errors': { + 'cmd1': 'D1', + 'params': { + 'numberOfFaults': [ 0, 1, decodeShort, 1], + 'fault0Code': [ 2, 1, decodeShort, 1], + 'fault0Time': [ 4, 2, decodeTime2, 1], + 'fault0Date': [ 6, 2, decodeDate2, 1], + 'fault1Code': [ 8, 1, decodeShort, 1], + 'fault1Time': [10, 2, decodeTime2, 1], + 'fault1Date': [12, 2, decodeDate2, 1], + 'fault2Code': [14, 1, decodeShort, 1], + 'fault2Time': [16, 2, decodeTime2, 1], + 'fault2Date': [18, 2, decodeDate2, 1], + 'fault3Code': [20, 1, decodeShort, 1], + 'fault3Time': [22, 2, decodeTime2, 1], + 'fault3Date': [24, 2, decodeDate2, 1] + } + }, + 'sF7': { + 'cmd1': 'F7', + 'params': { + 'f7_flowTempHC2': [ 0, 2, decodeShort, 0.1, '°C'], + 'f7_evaporatorTemp': [ 6, 2, decodeShort, 0.1, '°C'], + 'f7_returnTempHC2': [10, 2, decodeShort, 0.1, '°C'], + 'f7_outsideTemp': [12, 2, decodeShort, 0.1, '°C'], + 'f7_flowTemp': [14, 2, decodeShort, 0.1, '°C'], + } + }, + 'sGlobal': { + 'cmd1': 'FB', + 'params': { + 'collectorTemp': [ 0, 2, decodeShort, 0.1, '°C'], + 'outsideTemp': [ 2, 2, decodeShort, 0.1, '°C'], + 'flowTemp': [ 4, 2, decodeShort, 0.1, '°C'], + 'returnTemp': [ 6, 2, decodeShort, 0.1, '°C'], + 'hotGasTemp': [ 8, 2, decodeShort, 0.1, '°C'], + 'dhwTemp': [10, 2, decodeShort, 0.1, '°C'], + 'flowTempHC2': [12, 2, decodeShort, 0.1, '°C'], + 'insideTemp': [14, 2, decodeShort, 0.1, '°C'], + 'evaporatorTemp': [16, 2, decodeShort, 0.1, '°C'], + 'condenserTemp': [18, 2, decodeShort, 0.1, '°C'], + 'mixerOpen': [20, 0, decodeBit, 1], + 'mixerClosed': [20, 1, decodeBit, 1], + 'heatPipeValve': [20, 2, decodeBit, 1], + 'diverterValve': [20, 3, decodeBit, 1], + 'dhwPumpOn': [20, 4, decodeBit, 1], + 'heatingCircuitPumpOn': [20, 5, decodeBit, 1], + 'solarPumpOn': [20, 7, decodeBit, 1], + 'compressorOn': [21, 3, decodeBit, 1], + 'boosterStage3On': [21, 4, decodeBit, 1], + 'boosterStage2On': [21, 5, decodeBit, 1], + 'boosterStage1On': [21, 6, decodeBit, 1], + 'highPressureSensorOn': [22, 0, decodeNBit, 1], + 'lowPressureSensorOn': [22, 1, decodeNBit, 1], + 'evaporatorIceMonitorOn':[22, 2, decodeBit, 1], + 'signalAnodeOn': [22, 3, decodeBit, 1], + 'evuEnable': [22, 4, decodeBit, 1], + 'ovenFireplaceOn': [22, 5, decodeBit, 1], + 'STB_On': [22, 6, decodeBit, 1], + 'outputVentilatorPower': [23, 2, decodeShort, 0.1], + 'inputVentilatorPower': [25, 2, decodeShort, 0.1], + 'mainVentilatorPower': [27, 2, decodeShort, 0.1], + 'outputVentilatorSpeed': [29, 2, decodeShort, 1], + 'inputVentilatorSpeed': [31, 2, decodeShort, 1], + 'mainVentilatorSpeed': [33, 2, decodeShort, 1], + 'outside_tempFiltered': [35, 2, decodeShort, 0.1, '°C'], + 'relHumidity': [37, 2, decodeShort, 0.1, '%'], + 'dewPoint': [39, 2, decodeShort, 0.1, '°C'], + 'P_Nd': [41, 2, decodeShort, 0.01], + 'P_Hd': [43, 2, decodeShort, 0.01], + 'actualPower_Qc': [45, 4, decodeFloat, 0.001], + 'actualPower_Pel': [49, 4, decodeFloat, 1], + 'electricPower': [53, 2, decodeShort, 1], + 'temp55': [55, 2, decodeShort, 0.1, '°C'], + 'temp57': [57, 2, decodeShort, 0.1, '°C'], + 'temp61': [61, 2, decodeShort, 0.1, '°C'], + 'temp63': [63, 2, decodeShort, 0.1, '°C'], + 'temp65': [65, 2, decodeShort, 0.1, '°C'], + 'temp67': [67, 2, decodeShort, 0.1, '°C'], + 'temp69': [69, 2, decodeShort, 0.1, '°C'], + 'temp75': [75, 2, decodeShort, 0.1, '°C'] + }, + }, + 'sTimeDate': { + 'cmd1': 'FC', + 'params': { + 'time': [ 1, 3, decodeTime, 1], + 'date': [ 4, 3, decodeDate, 1], + } + }, + 'sFirmware': { + 'cmd1': 'FD', + 'params': { + 'version': [ 0, 2, decodeShort, 0.01] + } + }, + 'sProdDate': { + 'cmd1': 'FE', + 'params': { + 'prodDate': [ 16, 11, decodeString, 1] + } + }, + # 01 00 00 f3 7d 00 00 e3 c2 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 07 39 22 20 00 c8 00 c8 32 32 00 + 'sVentilation': { + 'cmd1': 'E8', + 'params': { + 'inputVentSpeed': [27, 1, decodeByte, 1], + 'outputVentSpeed': [28, 1, decodeByte, 1], + 'inputAirFlow': [29, 2, decodeShort, 1], + 'outputAirFlow': [31, 2, decodeShort, 1] + #'outputVentilatorPower': [33, 1, decodeByte, 0.1], + #'inputVentilatorPower': [34, 1, decodeByte, 0.1] + } + }, + # 01 00 3f e9 04 b0 02 5a 04 9c 02 49 02 8f 30 02 4a 11 52 60 08 11 11 fe b3 08 77 00 30 + # .. .. .. .. ?? ?? ?? ?? ?? ?? ?? ?? ?? ?? 30 02 4a 11 52 .. .. .. 11 fe b3 08 77 00 30 + 'sE9': { + 'cmd1': 'E9', + 'params': { + 'e9_mixerOpen': [15, 0, decodeBit, 1], + 'e9_mixerClosed': [15, 1, decodeBit, 1], + 'e9_heatPipeValve': [15, 2, decodeBit, 1], + 'e9_diverterValve': [15, 3, decodeBit, 1], + 'e9_dhwPumpOn': [15, 4, decodeBit, 1], + 'e9_heatingCircuitPumpOn': [15, 5, decodeBit, 1], + 'e9_solarPumpOn': [15, 7, decodeBit, 1], + 'e9_compressorOn': [16, 3, decodeBit, 1], + 'e9_boosterStage3On': [16, 4, decodeBit, 1], + 'e9_boosterStage2On': [16, 5, decodeBit, 1], + 'e9_boosterStage1On': [16, 6, decodeBit, 1], + 'e9_highPressureSensorOn': [17, 0, decodeNBit, 1], + 'e9_lowPressureSensorOn': [17, 1, decodeNBit, 1], + 'e9_evaporatorIceMonitorOn':[17, 2, decodeBit, 1], + 'e9_signalAnodeOn': [17, 3, decodeBit, 1], + 'e9_evuEnable': [17, 4, decodeBit, 1], + 'e9_ovenFireplaceOn': [17, 5, decodeBit, 1], + 'e9_STB_On': [17, 6, decodeBit, 1], + } + }, + 'sFan': { + 'cmd1': 'F6', + 'params': { + 'fanStage': [4, 1, decodeByte, 1] + } + }, + 'sIcons': { + 'cmd1': '0A0176', + 'params': { + 'iconProgram': [ 1, 0, decodeBit, 1], + 'iconCompressor': [ 1, 1, decodeBit, 1], + 'iconHeating': [ 1, 2, decodeBit, 1], + 'iconCooling': [ 1, 3, decodeBit, 1], + 'iconDHW': [ 1, 4, decodeBit, 1], + 'iconBooster': [ 1, 5, decodeBit, 1], + 'iconService': [ 1, 6, decodeBit, 1], + 'iconBothFilters': [ 0, 0, decodeBit, 1], + 'iconVentilation': [ 0, 1, decodeBit, 1], + 'iconCirculationPump': [ 0, 2, decodeBit, 1], + 'iconDeicingCondenser': [ 0, 3, decodeBit, 1], + 'iconUpperFilter': [ 0, 4, decodeBit, 1], + 'iconLowerFilter': [ 0, 5, decodeBit, 1] + } + }, + 'sFlowRateHC1': { + 'cmd1': '0A033B', + 'params': { + 'flowRateHC1': [ 0, 2, decodeShort, 0.1] + } + }, + 'sSoftwareID': { + 'cmd1': '0A024B', + 'params': { + 'softwareID': [ 0, 2, decodeShort, 1] + } + }, + 'sBoostDHWTotal': { + 'cmd1': '0A0924', 'cmd2': '0A0925', + 'params': { + 'boostDHWTotal': [ 0, 2, decodeShort, 1] + } + }, + 'sBoostHCTotal': { + 'cmd1': '0A0928', 'cmd2': '0A0929', + 'params': { + 'boostHCTotal': [ 0, 2, decodeShort, 1] + } + }, + 'sHeatRecoveredDay': { + 'cmd1': '0A03AE', 'cmd2': '0A03AF', + 'params': { + 'heatRecoveredDay': [ 0, 2, decodeShort, 0.001] + } + }, + 'sHeatRecoveredTotal': { + 'cmd1': '0A03B0', 'cmd2': '0A03B1', + 'params': { + 'heatRecoveredTotal': [ 0, 2, decodeShort, 1] + } + }, + 'sHeatDHWDay': { + 'cmd1': '0A092A', 'cmd2': '0A092B', + 'params': { + 'heatDHWDay': [ 0, 2, decodeShort, 0.001] + } + }, + 'sHeatDHWTotal': { + 'cmd1': '0A092C', 'cmd2': '0A092D', + 'params': { + 'heatDHWTotal': [ 0, 2, decodeShort, 1] + } + }, + 'sHeatHCDay': { + 'cmd1': '0A092E', 'cmd2': '0A092F', + 'params': { + 'heatHCDay': [ 0, 2, decodeShort, 0.001] + } + }, + 'sHeatHCTotal': { + 'cmd1': '0A0930', 'cmd2': '0A0931', + 'params': { + 'heatHCTotal': [ 0, 2, decodeShort, 1] + } + }, + 'sEPowerDHWDay': { + 'cmd1': '0A091A', 'cmd2': '0A091B', + 'params': { + 'ePowerDHWDay': [ 0, 2, decodeShort, 0.001] + } + }, + 'sEPowerDHWTotal': { + 'cmd1': '0A091C', 'cmd2': '0A091D', + 'params': { + 'ePowerDHWTotal': [ 0, 2, decodeShort, 1] + } + }, + 'sEPowerHCDay': { + 'cmd1': '0A091E', 'cmd2': '0A091F', + 'params': { + 'ePowerHCDay': [ 0, 2, decodeShort, 0.001] + } + }, + 'sEPowerHCTotal': { + 'cmd1': '0A0920', 'cmd2': '0A0921', + 'params': { + 'ePowerHCTotal': [ 0, 2, decodeShort, 1] + } + }, + +# read/write messages and parameters + + 'pOpMode': { + 'cmd1': '0A0112', 'rw': 1, + 'params': { + 'pOpMode': [0, 1, decodeOpMode, 1, 0, 14] + } + }, + 'p01RoomTempDayHC1': { + 'cmd1': '0B0005', 'rw': 1, + 'params': { + 'p01RoomTempDayHC1': [0, 2, decodeShort, 0.1, 10, 30] + } + }, + 'p02RoomTempNightHC1': { + 'cmd1': '0B0008', 'rw': 1, + 'params': { + 'p02RoomTempNightHC1': [0, 2, decodeShort, 0.1, 10, 30] + } + }, + 'p03RoomTempStandbyHC1': { + 'cmd1': '0B013D', 'rw': 1, + 'params': { + 'p03RoomTempStandbyHC1': [0, 2, decodeShort, 0.1, 10, 30] + } + }, + 'p01RoomTempDayHC1SummerMode': { + 'cmd1': '0B0569', 'rw': 1, + 'params': { + 'p01RoomTempDayHC1SummerMode': [0, 2, decodeShort, 0.1, 10, 30] + } + }, + 'p02RoomTempNightHC1SummerMode': { + 'cmd1': '0B056B', 'rw': 1, + 'params': { + 'p02RoomTempNightHC1SummerMode': [0, 2, decodeShort, 0.1, 10, 30] + } + }, + 'p03RoomTempStandbyHC1SummerMode': { + 'cmd1': '0B056A', 'rw': 1, + 'params': { + 'p03RoomTempStandbyHC1SummerMode': [0, 2, decodeShort, 0.1, 10, 30] + } + }, + 'p13GradientHC1': { + 'cmd1': '0B010E', 'rw': 1, + 'params': { + 'p13GradientHC1': [0, 2, decodeShort, 0.01, 0, 5] + } + }, + 'p14LowEndHC1': { + 'cmd1': '0B059E', 'rw': 1, + 'params': { + 'p14LowEndHC1': [0, 2, decodeShort, 0.1, 0, 20] + } + }, + 'p15RoomInfluenceHC1': { + 'cmd1': '0B010F', 'rw': 1, + 'params': { + 'p15RoomInfluenceHC1': [0, 2, decodeShort, 1, 0, 100] + } + }, + 'p19FlowProportionHC1': { + 'cmd1': '0B059D', 'rw': 1, + 'params': { + 'p19FlowProportionHC1': [0, 2, decodeShort, 1, 0, 100] + } + }, + 'p01RoomTempDayHC2': { + 'cmd1': '0C0005', 'rw': 1, + 'params': { + 'p01RoomTempDayHC2': [0, 2, decodeShort, 0.1, 10, 30] + } + }, + 'p02RoomTempNightHC2': { + 'cmd1': '0C0008', 'rw': 1, + 'params': { + 'p02RoomTempNightHC2': [0, 2, decodeShort, 0.1, 10, 30] + } + }, + 'p03RoomTempStandbyHC2': { + 'cmd1': '0C013D', 'rw': 1, + 'params': { + 'p03RoomTempStandbyHC2': [0, 2, decodeShort, 0.1, 10, 30] + } + }, + 'p01RoomTempDayHC2SummerMode': { + 'cmd1': '0C0569', 'rw': 1, + 'params': { + 'p01RoomTempDayHC2SummerMode': [0, 2, decodeShort, 0.1, 10, 30] + } + }, + 'p02RoomTempNightHC2SummerMode': { + 'cmd1': '0C056B', 'rw': 1, + 'params': { + 'p02RoomTempNightHC2SummerMode': [0, 2, decodeShort, 0.1, 10, 30] + } + }, + 'p03RoomTempStandbyHC2SummerMode': { + 'cmd1': '0C056A', 'rw': 1, + 'params': { + 'p03RoomTempStandbyHC2SummerMode': [0, 2, decodeShort, 0.1, 10, 30] + } + }, + 'p16GradientHC2': { + 'cmd1': '0C010E', 'rw': 1, + 'params': { + 'p16GradientHC2': [0, 2, decodeShort, 0.01, 0, 5] + } + }, + 'p17LowEndHC2': { + 'cmd1': '0C059E', 'rw': 1, + 'params': { + 'p17LowEndHC2': [0, 2, decodeShort, 0.1, 0, 20] + } + }, + 'p18RoomInfluenceHC2': { + 'cmd1': '0C010F', 'rw': 1, + 'params': { + 'p18RoomInfluenceHC2': [0, 2, decodeShort, 1, 0, 100] + } + }, + 'p04DHWsetDayTemp': { + 'cmd1': '0A0013', 'rw': 1, + 'params': { + 'p04DHWsetDayTemp': [0, 2, decodeShort, 0.1, 10, 55] + } + }, + 'p05DHWsetNightTemp': { + 'cmd1': '0A05BF', 'rw': 1, + 'params': { + 'p05DHWsetNightTemp': [0, 2, decodeShort, 0.1, 10, 55] + } + }, + 'p83DHWsetSolarTemp': { + 'cmd1': '0A05BE', 'rw': 1, + 'params': { + 'p83DHWsetSolarTemp': [0, 2, decodeShort, 0.1, 10, 65] + } + }, + 'p06DHWsetStandbyTemp': { + 'cmd1': '0A0581', 'rw': 1, + 'params': { + 'p06DHWsetStandbyTemp': [0, 2, decodeShort, 0.1, 10, 55] + } + }, + 'p11DHWsetManualTemp': { + 'cmd1': '0A0580', 'rw': 1, + 'params': { + 'p11DHWsetManualTemp': [0, 2, decodeShort, 0.1, 10, 55] + } + }, + 'p07FanStageDay': { + 'cmd1': '0A056C', 'rw': 1, + 'params': { + 'p07FanStageDay': [0, 2, decodeShort, 1, 0, 3] + } + }, + 'p08FanStageNight': { + 'cmd1': '0A056D', 'rw': 1, + 'params': { + 'p08FanStageNight': [0, 2, decodeShort, 1, 0, 3] + } + }, + 'p09FanStageStandby': { + 'cmd1': '0A056F', 'rw': 1, + 'params': { + 'p09FanStageStandby': [0, 2, decodeShort, 1, 0, 3] + } + }, + 'p99FanStageParty': { + 'cmd1': '0A0570', 'rw': 1, + 'params': { + 'p99FanStageParty': [0, 2, decodeShort, 1, 0, 3] + } + }, + 'p75passiveCooling': { + 'cmd1': '0A0575', 'rw': 1, + 'params': { + 'p75passiveCooling': [0, 2, decodeShort, 1, 0, 4] + } + }, + 'p21Hyst1': { + 'cmd1': '0A05C0', 'rw': 1, + 'params': { + 'p21Hyst1': [0, 2, decodeShort, 0.1, 0, 10] + } + }, + 'p22Hyst2': { + 'cmd1': '0A05C1', 'rw': 1, + 'params': { + 'p22Hyst2': [0, 2, decodeShort, 0.1, 0, 10] + } + }, + 'p23Hyst3': { + 'cmd1': '0A05C2', 'rw': 1, + 'params': { + 'p23Hyst3': [0, 2, decodeShort, 0.1, 0, 5] + } + }, + 'p24Hyst4': { + 'cmd1': '0A05C3', 'rw': 1, + 'params': { + 'p24Hyst4': [0, 2, decodeShort, 0.1, 0, 5] + } + }, + 'p25Hyst5': { + 'cmd1': '0A05C4', 'rw': 1, + 'params': { + 'p25Hyst5': [0, 2, decodeShort, 0.1, 0, 5] + } + }, + 'p29HystAsymmetry': { + 'cmd1': '0A05C5', 'rw': 1, + 'params': { + 'p29HystAsymmetry': [0, 2, decodeShort, 1, 1, 5] + } + }, + 'p30integralComponent': { + 'cmd1': '0A0162', 'rw': 1, + 'params': { + 'p30integralComponent': [0, 2, decodeShort, 1, 10, 999] + } + }, + 'p32hystDHW': { + 'cmd1': '0A0140', 'rw': 1, + 'params': { + 'p32hystDHW': [0, 2, decodeShort, 1, 0, 10] + } + }, + 'p33BoosterTimeoutDHW': { + 'cmd1': '0A0588', 'rw': 1, + 'params': { + 'p33BoosterTimeoutDHW': [0, 2, decodeShort, 1, 0, 200] + } + }, + 'p79BoosterTimeoutHC': { + 'cmd1': '0A05A0', 'rw': 1, + 'params': { + 'p79BoosterTimeoutHC': [0, 2, decodeShort, 1, 0, 240] + } + }, + 'p46UnschedVent0': { + 'cmd1': '0A0571', 'rw': 1, + 'params': { + 'p46UnschedVent0': [0, 2, decodeShort, 1, 0, 900] + } + }, + 'p45UnschedVent1': { + 'cmd1': '0A0572', 'rw': 1, + 'params': { + 'p45UnschedVent1': [0, 2, decodeShort, 1, 0, 900] + } + }, + 'p44UnschedVent2': { + 'cmd1': '0A0573', 'rw': 1, + 'params': { + 'p44UnschedVent2': [0, 2, decodeShort, 1, 0, 900] + } + }, + 'p43UnschedVent3': { + 'cmd1': '0A0574', 'rw': 1, + 'params': { + 'p43UnschedVent3': [0, 2, decodeShort, 1, 0, 900] + } + }, +# 'p99UnschedVentStage': { +# 'cmd1': '0A05DD', 'rw': 1, +# 'params': { +# 'p99UnschedVentStage': [0, 2, decodeShort, 1, 0, 3] +# } +# }, + 'p37FanStage1AirIn': { + 'cmd1': '0A0576', 'rw': 1, + 'params': { + 'p37FanStage1AirIn': [0, 2, decodeShort, 1, 50, 300] + } + }, + 'p38FanStage2AirIn': { + 'cmd1': '0A0577', 'rw': 1, + 'params': { + 'p38FanStage2AirIn': [0, 2, decodeShort, 1, 50, 300] + } + }, + 'p39FanStage3AirIn': { + 'cmd1': '0A0578', 'rw': 1, + 'params': { + 'p39FanStage3AirIn': [0, 2, decodeShort, 1, 50, 300] + } + }, + 'p40FanStage1AirOut': { + 'cmd1': '0A0579', 'rw': 1, + 'params': { + 'p40FanStage1AirOut': [0, 2, decodeShort, 1, 50, 300] + } + }, + 'p41FanStage2AirOut': { + 'cmd1': '0A057A', 'rw': 1, + 'params': { + 'p41FanStage2AirOut': [0, 2, decodeShort, 1, 50, 300] + } + }, + 'p42FanStage3AirOut': { + 'cmd1': '0A057B', 'rw': 1, + 'params': { + 'p42FanStage3AirOut': [0, 2, decodeShort, 1, 50, 300] + } + }, + 'p49SummerModeTemp': { + 'cmd1': '0A0116', 'rw': 1, + 'params': { + 'p49SummerModeTemp': [0, 2, decodeShort, 0.1, 10, 25] + } + }, + 'p50SummerModeHysteresis': { + 'cmd1': '0A05A2', 'rw': 1, + 'params': { + 'p50SummerModeHysteresis': [0, 2, decodeShort, 0.1, 0.5, 5] + } + }, + 'p78DualModePoint': { + 'cmd1': '0A01AC', 'rw': 1, + 'params': { + 'p78DualModePoint': [0, 2, decodeShort, 0.1, -10, 20] + } + }, + 'p54MinPumpCycles': { + 'cmd1': '0A05B8', 'rw': 1, + 'params': { + 'p54MinPumpCycles': [0, 2, decodeShort, 1, 1, 24] + } + }, + 'p55MaxPumpCycles': { + 'cmd1': '0A05B7', 'rw': 1, + 'params': { + 'p55MaxPumpCycles': [0, 2, decodeShort, 1, 25, 200] + } + }, + 'p56OutTempMaxPumpCycles': { + 'cmd1': '0A05B9', 'rw': 1, + 'params': { + 'p56OutTempMaxPumpCycles': [0, 2, decodeShort, 0.1, 0, 20] + } + }, + 'p57OutTempMinPumpCycles': { + 'cmd1': '0A05BA', 'rw': 1, + 'params': { + 'p57OutTempMinPumpCycles': [0, 2, decodeShort, 0.1, 0, 25] + } + }, + 'p76RoomThermCorrection': { + 'cmd1': '0A0109', 'rw': 1, + 'params': { + 'p76RoomThermCorrection': [0, 2, decodeShort, 0.000390625, -5, 5] + } + }, + 'p77OutThermFilterTime': { + 'cmd1': '0A010C', 'rw': 1, + 'params': { + 'p77OutThermFilterTime': [0, 2, decodeShort, 1, 1, 24] + } + }, + 'p35PasteurisationInterval': { + 'cmd1': '0A0586', 'rw': 1, + 'params': { + 'p35PasteurisationInterval': [0, 2, decodeShort, 1, 1, 30] + } + }, + 'p35PasteurisationTemp': { + 'cmd1': '0A0587', 'rw': 1, + 'params': { + 'p35PasteurisationTemp': [0, 2, decodeShort, 0.1, 10, 65] + } + }, + 'p34BoosterDHWTempAct': { + 'cmd1': '0A0589', 'rw': 1, + 'params': { + 'p34BoosterDHWTempAct': [0, 2, decodeShort, 0.1, -10, 10] + } + }, + 'p99DHWmaxFlowTemp': { + 'cmd1': '0A058C', 'rw': 1, + 'params': { + 'p99DHWmaxFlowTemp': [0, 2, decodeShort, 0.1, 10, 75] + } + }, + 'p89DHWeco': { + 'cmd1': '0A058D', 'rw': 1, + 'params': { + 'p89DHWeco': [0, 2, decodeShort, 1, 0, 1] + } + }, + 'p99startUnschedVent': { + 'cmd1': '0A05DD', 'rw': 1, + 'params': { + 'p99startUnschedVent': [0, 2, decodeShort, 1, 0, 3] + } + }, + 'p99CoolingSwitch': { + 'cmd1': '0B0287', 'rw': 1, + 'params': { + 'p99CoolingSwitch': [0, 2, decodeShort, 1, 0, 1] + } + }, + 'pClockDay': { + 'cmd1': '0A0122', 'rw': 1, + 'params': { + 'pClockDay': [0, 2, decodeShort, 1, 1, 31] + } + }, + 'pClockMonth': { + 'cmd1': '0A0123', 'rw': 1, + 'params': { + 'pClockMonth': [0, 2, decodeShort, 1, 1, 12] + } + }, + 'pClockYear': { + 'cmd1': '0A0124', 'rw': 1, + 'params': { + 'pClockYear': [0, 2, decodeShort, 1, 12, 20] + } + }, + 'pClockHour': { + 'cmd1': '0A0125', 'rw': 1, + 'params': { + 'pClockHour': [0, 2, decodeShort, 1, 0, 23] + } + }, + 'pClockMinute': { + 'cmd1': '0A0126', 'rw': 1, + 'params': { + 'pClockMinute': [0, 2, decodeShort, 1, 0, 59] + } + } +} + +# Message deltas for other heat pumps +# The key may have the following values: +# ap - add parameter (replace if already defined) +# am - add message (replace if already defined) +# dp - delete parameter +# dm - delete message + +VersionSpecificMsgData = { +# deltas for the 4.39 (303i) + '4.39': { + 'ap': + ['sGlobal', 'actualPower_Qc', [45, 4, decodeFloat, 1]] + }, +# deltas for the 5.19 (304) + '5.19': { + }, +} + + +class ThzProtocol(): + """ + THZ high-level protocol implementation + """ + def __init__(self, serial_port, baudrate, logger): + self._portHandler = PortHandler.PortHandler(serial_port, baudrate, logger) + self._serial_port = serial_port + self._baudrate = baudrate + self.logger = logger + # lookup table for command names from code + self._msgNameFromCode = {} + self._msgNameFromParam = {} + self._txCount = 0 + self._rxCount = 0 + self._rxChecksumErrorCount = 0 + self._rxNackCount = 0 + self._rxTimeoutCount = 0 + self._portErrorCount = 0 + self._lock = threading.Lock() + + # init message mappings + self._opModeInv = {v: k for k, v in OpMode.items()} + + for name in MsgTemplate: + # fill the mapping for decoding + self._msgNameFromCode[MsgTemplate[name]['cmd1']] = name + if 'cmd2' in MsgTemplate[name]: + self._msgNameFromCode[MsgTemplate[name]['cmd2']] = name + + # fill the mapping from parameter to message + for param in MsgTemplate[name]['params'].keys(): + if param in self._msgNameFromParam: + raise ValueError('thz: Ambiguous parameter name: ', param) + self._msgNameFromParam[param] = name + + self._portHandler.start() + + if self._portHandler.isPortOpen(): + # check the software version and configure messages appropriately + msg = self._sendGetRequest(MsgTemplate['sFirmware']['cmd1']) + if not msg == None: + version = msg['sFirmware']['version'] + if version in VersionSpecificMsgData: + # version-specific update available + msgUpdate = VersionSpecificMsgData[version] + for action in msgUpdate: + if action == 'ap': + # add parameters + for i in msgUpdate[action]: + msgName = msgUpdate[action][i][0] + paramName = msgUpdate[action][i][1] + MsgTemplate[msgName][paramName] = msgUpdate[action][i][2] + elif action == 'dp': + # add parameters + for i in msgUpdate[action]: + msgName = msgUpdate[action][i][0] + paramName = msgUpdate[action][i][1] + MsgTemplate[msgName].pop(paramName, None) + elif action == 'am': + # add messages + for i in msgUpdate[action]: + msgName = msgUpdate[action][i][0] + MsgTemplate[msgName] = msgUpdate[action][i][1] + elif action == 'dm': + # delete messages + for i in msgUpdate[action]: + msgName = msgUpdate[action][i][0] + MsgTemplate.pop(msgName, None) + self.logger.info('thz: Message templates adjusted to version {}'.format(version)) + else: + # no version-specific data availble + self.logger.info('thz: Using generic message templates with version {}'.format(version)) + else: + self.logger.warning('thz: The messages could not be adjusted to the heat pump version due to missing heat pump response.') + + else: + self.logger.warning('thz: The messages could not be adjusted to the heat pump version due to com port failure.') + + def __del__(self): + self._portHandler.stop() + + def _computeChecksum(self, data): + """ + _computeChecksum() computes message checksum + """ + chksum = 0 + for x in data: + chksum = chksum + x + return chksum % 256 + + def _encodeGetMsg(self, cmd): + """ + _encodeGetMsg() encodes the message header and the payload of a GET message + define the 'read' header including the checksum byte + """ + msg = bytearray.fromhex('010000') + msg += bytearray.fromhex(cmd) + # set the checksum + msg[2] = self._computeChecksum(msg) + return msg + + def _encodeSetMsg(self, cmd, value): + """_encodeSetMsg() encodes the message header and the payload of a SET message""" + # define the 'write' header including the checksum byte + msg = bytearray.fromhex('018000') + msg += bytearray.fromhex(cmd) + msg += int(value).to_bytes(2, byteorder='big') + # set the checksum + msg[2] = self._computeChecksum(msg) + return msg + + def _decodeMsg(self, data): + """_decodeMsg() decodes the message header and the payload""" + if len(data) < 5: + return None + data = bytearray(data) + + if data[3] == 0x0a or data[3] == 0x0b or data[3] == 0x0c: + reg = '%02X%02X%02X'%(data[3],data[4],data[5]) + else: + reg = '%02X'%(data[3]) + + if data[0] == 0x15: + self._rxNackCount += 1 + self.logger.warning('NACK received (reg {})'.format(reg)); + elif data[0] == 0x01 and data[1] == 0x01: + self._rxNackCount += 1 + self.logger.warning('NACK: Waiting for ACK'); + elif data[0] == 0x01 and data[1] == 0x02: + self._rxNackCount += 1 + self.logger.warning('NACK: Unknown command {}'.format(reg)); + elif data[0] == 0x01 and data[1] == 0x03: + self._rxNackCount += 1 + self.logger.warning('NACK: Invalid CRC'); + elif data[0] == 0x01 and data[1] == 0x04: + self._rxNackCount += 1 + self.logger.warning('NACK: Unknown register {}'.format(reg)); + elif data[0] == 0x01 and data[1] == 0x00: + # check the CRC + crc = data[2] + data[2] = 0x00 + if crc != self._computeChecksum(data): + self._rxChecksumErrorCount += 1 + self.logger.warning('Received message with bad CRC') + return None + if data[3] == 0x0a or data[3] == 0x0b or data[3] == 0x0c: + param = '%02X%02X%02X'%(data[3],data[4],data[5]) + payload = data[6:] + else: + param = '%02X'%(data[3]) + payload = data[4:] + if param in self._msgNameFromCode: + name = self._msgNameFromCode[param] + self.logger.debug('param = {} ({})'.format(name, param)) + else: + self.logger.warning('Rx: Unknown command - {}'.format(param)) + return None + msg = {name: {}} + for key in MsgTemplate[name]['params'].keys(): + # get the parameter definition + item = MsgTemplate[name]['params'][key] + # decode the parameter value according to the definition + try: + msg[name][key] = item[2](payload, item[0], item[1], item[3]) + except IndexError: + self.logger.warning('Message {} too short (length = {}, index = {})'.format(name, len(payload), item[0])) + return msg + return None + + def _sendGetRequest(self, cmd): + """_sendGetRequest() encodes and sends a GET message and processes the response""" + self._lock.acquire() + try: + msg = self._encodeGetMsg(cmd) + self._portHandler.sendData(msg) + self._txCount += 1 + data = self._portHandler.readData() + if not data == None: + self._rxCount += 1 + self.logger.debug('Rx: ' + ' '.join(format(x, '02x') for x in data)) + msg = self._decodeMsg(data) + else: + self._rxTimeoutCount += 1 + msg = None + except: + self.logger.error('Get request failed - {:06x}\n{}'.format(cmd, sys.exc_info())) + finally: + self._lock.release() + return msg + + def getMsgFromParameter(self, param): + """returns the message name for the given parameter name""" + if param in self._msgNameFromParam: + return self._msgNameFromParam[param] + else: + return None + + def isParameterWritable(self, param): + """returns True if the specified parameter is writable""" + if param in self._msgNameFromParam: + if 'rw' in MsgTemplate[self._msgNameFromParam[param]]: + return True + return False + + def sendSetRequest(self, param, value): + """encodes and sends a SET request and processes the response""" + # check the port status + if not self._portHandler.isPortOpen(): + self._portErrorCount += 1 + if not self._portHandler.openPort(self._serial_port, self._baudrate): + return + + if param in self._msgNameFromParam: + # it is assumed that the message is a single-parameter message + self._lock.acquire() + try: + tmpl = MsgTemplate[param] + if param == 'pOpMode': + # translate string to integer + if value in self._opModeInv: + value = int(self._opModeInv[value]) + else: + self.logger.warning('Invalid parameter value - {}:{}'.format(param, value)) + return + if (value < tmpl['params'][param][4] or + value > tmpl['params'][param][5]): + self.logger.warning('Parameter value out of range - {}={}, [{}:{}]'.format(param, value, tmpl['params'][param][4], tmpl['params'][param][5])) + else: + # value OK + value = int(value / tmpl['params'][param][3]) + if (tmpl['params'][param][1] == 1): + value *= 256 + if value < 0: + value += 0x10000 + msg = self._encodeSetMsg(tmpl['cmd1'], value) + self._portHandler.sendData(msg) + self._txCount += 1 + + # check the response + data = self._portHandler.readData() + if data == None: + self.logger.warning('Set request timed out') + self._rxTimeoutCount += 1 + else: + self.logger.debug('Rx: ' + ' '.join(format(x, '02x') for x in data)) + self._rxCount += 1 + if not (data[0] == 0x01 and data[1] == 0x80): + self.logger.warning('Set request failed - {}: {}'.format(param, ' '.join(format(x, '02x') for x in data))) + self._rxNackCount += 1 + except: + self.logger.error('Message encoding failed - {}\n{}'.format(param, sys.exc_info())) + finally: + self._lock.release() + else: + self.logger.warning('Invalid parameter name - {}'.format(param)) + + def sendRawSetRequest(self, param, value): + """encodes and sends a RAW SET request and processes the response. Param and value are hex strings.""" + # check the port status + if not self._portHandler.isPortOpen(): + self._portErrorCount += 1 + if not self._portHandler.openPort(self._serial_port, self._baudrate): + return + + self._lock.acquire() + try: + msg = self._encodeSetMsg(param, value) + self._portHandler.sendData(msg) + self._txCount += 1 + + # check the response + data = self._portHandler.readData() + if data == None: + self.logger.warning('Set request timed out') + self._rxTimeoutCount += 1 + else: + self.logger.info('Rx: ' + ' '.join(format(x, '02x') for x in data)) + self._rxCount += 1 + if not (data[0] == 0x01 and data[1] == 0x80): + self.logger.warning('Set request failed - {}: {}'.format(param, ' '.join(format(x, '02x') for x in data))) + self._rxNackCount += 1 + except: + self.logger.error('Message encoding failed - {}\n{}'.format(param, sys.exc_info())) + finally: + self._lock.release() + + def requestData(self, request): + """returns a dict with message and parameter values for the specified request""" + # check the port status + if not self._portHandler.isPortOpen(): + self._portErrorCount += 1 + if not self._portHandler.openPort(self._serial_port, self._baudrate): + return {} + + response = {} + try: + noResponseCount = 0 + for name in request: + msg1 = self._sendGetRequest(MsgTemplate[name]['cmd1']) + if not msg1 == None: + noResponseCount = 0 + if 'cmd2' in MsgTemplate[name]: + # there is a second command to retrieve the most significant part + msg2 = self._sendGetRequest(MsgTemplate[name]['cmd2']) + if not msg2 == None: + # get the name of the one and only parameter + param = list(msg1[name].keys())[0] + try: + # combine the two values (the most significant part is to + # be multiplied by 1000) + msg1[name][param] = round(msg2[name][param] * 1000 + msg1[name][param],3) + response.update(msg1[name]) + except: + self.logger.warning(sys.exc_info()) + else: + # there is only one response + response.update(msg1[name]) + else: + # no response received + noResponseCount += 1 + if noResponseCount > 10: + # missing 10 responses in a row + self.logger.error('Heat pump did not respond for 10 seconds') + self._portHandler.closePort() + break + except: + self.logger.warning(sys.exc_info()) + + return response + + def stop(self): + """passes the stop request to the port handler""" + self._portHandler.stop() + + def getStats(self): + """returns the counter values""" + val = {} + val['comPortStatus'] = self._portHandler.isPortOpen() + val['comPortReopenAttempts'] = self._portErrorCount + val['rxCount'] = self._rxCount + val['txCount'] = self._txCount + val['rxChecksumErrorCount'] = self._rxChecksumErrorCount + val['rxNackCount'] = self._rxNackCount + val['rxTimeoutCount'] = self._rxTimeoutCount + val['rxFramingErrorCount'] = self._portHandler.rxFramingErrorCount + return val + + def logRegister(self, cmd): + """logs the value of the specified register""" + self._lock.acquire() + try: + msg = self._encodeGetMsg(cmd) + self._portHandler.sendData(msg) + data = self._portHandler.readData() + if not data == None: + data = bytearray(data) + if data[0] == 0x01 and data[1] == 0x00: + self.logger.info('Rx: ' + ' '.join(format(x, '02x') for x in data)) + except: + self.logger.error('Get request failed - {:06x}\n{}'.format(cmd, sys.exc_info())) + finally: + self._lock.release() + + def logFullScan(self): + """performs a full register scan and logs the results""" + for i in range(0x0,0x100): + self.logRegister(format(i, '02x')) + for i in range(0x0a0000,0x0a0c00): + self.logRegister(format(i, '06x')) + for i in range(0x0b0000,0x0b0700): + self.logRegister(format(i, '06x')) + diff --git a/thz/__init__.py b/thz/__init__.py new file mode 100644 index 000000000..5b32b2d78 --- /dev/null +++ b/thz/__init__.py @@ -0,0 +1,513 @@ +#!/usr/bin/env python3 +# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab +######################################################################### +# Ported and Copyright 2014 toggle +######################################################################### +# This software is based on the FHEM implementation +# https://github.com/mhop/fhem-mirror/blob/master/fhem/FHEM/00_THZ.pm +# +# THZ plugin for SmartHomeNG +# +# SmartHomeNG is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# SmartHomeNG is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with SmartHomeNG. If not, see . +# +######################################################################### + +from lib.module import Modules +from lib.model.smartplugin import * +from lib.shtime import Shtime +shtime = Shtime.get_instance() + +import logging +import time +import sys +import datetime +from . import ThzProtocol +import socket as socket +from select import select +import threading + +# Module Serial is not needed in this module, but will be used later and +# SmartHomeNG core should know if serial module is present so we need to test it here +try: + import serial + REQUIRED_PACKAGE_IMPORTED = True +except: + REQUIRED_PACKAGE_IMPORTED = False + + +specialRequests = ['logFullScan', 'logRegister', 'setRegiter'] +CLIENT_TIMEOUT = 60 +POLL_INTERVAL = 10 + +class THZ(SmartPlugin): + """ + Class THZ implements main control instance + """ + PLUGIN_VERSION = "0.2.2" + + def __init__(self, sh, *args, **kwargs): + """ + old: smarthome, + serial_port='/dev/ttyUSB0', + baudrate=115200, + poll_period=300, + min_update_period=86400, + max_update_period=300 + server_host = '0.0.0.0' + server_port = 57483 + """ + from bin.smarthome import VERSION + if '.'.join(VERSION.split('.', 2)[:2]) <= '1.5': + self.logger = logging.getLogger(__name__) + + self.logger.debug("init {}".format(__name__)) + self._init_complete = False + + # Exit if the required package(s) could not be imported + if not REQUIRED_PACKAGE_IMPORTED: + self.logger.error("{}: Unable to import Python package 'pyserial'".format(self.get_fullname())) + return + + # Get Parameters + self._poll_period = self.get_parameter_value('poll_period') + + min_update_period = self.get_parameter_value('min_update_period') + self._min_update_period = datetime.timedelta(seconds=int(min_update_period)) + + max_update_period = self.get_parameter_value('max_update_period') + self._max_update_period = datetime.timedelta(seconds=int(max_update_period)) + + self._serial_port = self.get_parameter_value('serial_port') + self._baudrate = self.get_parameter_value('baudrate') + + self._server_host = self.get_parameter_value('server_host') + self._server_port = self.get_parameter_value('server_port') + + self._params = {} + + # pass the own logger on + self._thzProtocol = ThzProtocol.ThzProtocol(self._serial_port, self._baudrate, self.logger) + self._msgList = {} + self._logRegisterId = None + + # pass the own logger on + self._thzServer = ThzServer(self, self._server_host, self._server_port, self.logger) + self._curData = {} + self._extMsgList = {} + + self.init_webinterface() + + self.logger.debug("init done") + self._init_complete = True + + def _update_values(self): + """retrieves the values from the heat pump and updates the corresponding items""" + # request all messages + msgList = self._msgList.copy() + msgList.update(self._extMsgList) + newData = self._thzProtocol.requestData(msgList) + + now = datetime.datetime.now() + + # update status info + stats = self._thzProtocol.getStats() + for param in stats.keys(): + if param in self._params: + # notify smarthome.py + for item in self._params[param]['item']: + item(stats[param], source='thzRefresh') + + # parse new data and update items + for param in newData: + # make sure that the parameter exists + if param in self._params: + update = False + + # check for changes to reduce the update rate + if not self._params[param]['lastValue'] == newData[param]: + # value changed + # update discrete values on every change + if (self._params[param]['lastValue'] in (0,1,2,3) and + newData[param] in (0,1,2,3)): + update = True + self.logger.debug('Discrete value changed - {0}: {1} => {2}'.format(param, self._params[param]['lastValue'], newData[param])) + else: + # the value is not discrete, check the minimum period + if self._params[param]['lastUpdate'] + self._min_update_period < now: + update = True + self.logger.debug('minimum period expired {0}: {1} => {2}'.format(param, self._params[param]['lastValue'], newData[param])) + else: + # no change + # check the maximum update period + if self._params[param]['lastUpdate'] + self._max_update_period < now: + update = True + self.logger.debug('maximum period expired {0}: {1} => {2}'.format(param, self._params[param]['lastValue'], newData[param])) + + if update: + # update the history + self._params[param]['lastUpdate'] = now + self._params[param]['lastValue'] = newData[param] + + # notify smarthome.py + for item in self._params[param]['item']: + item(newData[param], source='thzRefresh') + + # provide the new data to the server instance + self._curData = newData.copy() + self._curData.update(stats) + self._thzServer.updateData(self._curData) + + def run(self): + """ + Run method for the plugin + """ + self.logger.debug("Run method called") + self.alive = True + try: + self.scheduler_add('THZ', self._update_values, prio=5, cycle=self._poll_period) + self._update_values() + self._thzServer.start() + self.logger.info("plugin started") + except: + self.logger.error( + "thz: plugin start failed - {}".format(sys.exc_info())) + + def _logFullScan(self): + """requests logging a full scan of the heat pump registers""" + #self.logger.info('logFullScan started') + self._thzProtocol.logFullScan() + self._params['logFullScan']['item'][0]('done', source = 'thzRefresh') + #self.logger.info('logFullScan completed') + + def _logRegister(self): + """requests logging the specified heat pump register""" + #self.logger.info('logRegister started') + self._thzProtocol.logRegister(self._logRegisterId) + self._params['logRegister']['item'][0]('done', source = 'thzRefresh') + #self.logger.info('logRegister completed') + + #def _setRegister(self): + """requests writing the hex value to the specified register""" + #self.logger.info('logFullScan started') + #self._thzProtocol.sendRawSetRequest() + #self._params['logFullScan']['item'][0]('done', source = 'thzRefresh') + #self.logger.info('logFullScan completed') + + def stop(self): + """ + Stop method for the plugin + """ + self.logger.debug("Stop method called") + self.alive = False + try: + self.scheduler_remove('THZ') + except: + self.logger.error("removing 'thz.update' from scheduler failed - {}".format(sys.exc_info())) + try: + self.scheduler_remove('ThzRegister') + except: + self.logger.error("removing 'ThzRegister' from scheduler failed - {}".format(sys.exc_info())) + try: + self.scheduler_remove('ThzScan') + except: + self.logger.error("removing 'ThzScan' from scheduler failed - {}".format(sys.exc_info())) + self._thzProtocol.stop() + self._thzServer.stop() + + def update_item(self, item, caller=None, source=None, dest=None): + """forwards a new item value to the heat pump""" + #self.logger.info('{}: caller={}, source={}'.format(item.conf['thz'], caller, source)) + # skip updates triggered by own refresh + if source == 'thzRefresh': + return + + try: + if not self._thzProtocol.getMsgFromParameter(item.conf['thz']) == None: + self._thzProtocol.sendSetRequest(item.conf['thz'], item()) + elif item.conf['thz'] == 'logFullScan': + # request logging a full register scan + # update the item status + item('processing', source = 'thzRefresh') + try: + self.scheduler_add('ThzScan', self._logFullScan, next=shtime.now() + datetime.timedelta(milliseconds=10)) + #self.logger.info('logFullScan requested') + except: + self.logger.error( "thz: scheduling logFullScan failed - {}".format(sys.exc_info())) + elif item.conf['thz'] == 'logRegister': + # request logging a register + self._logRegisterId = item() + # update the item status + item('processing', source = 'thzRefresh') + try: + self.scheduler_add('ThzRegister', self._logRegister, next=shtime.now() + datetime.timedelta(milliseconds=10)) + #self.logger.info('logRegister requested') + except: + self.logger.error( "thz: scheduling logRegister failed - {}".format(sys.exc_info())) + else: + self.logger.warning('thz: Invalid parameter name - {}'.format(item.conf['thz'])) + except: + self.logger.warning( + "thz: Setting parameter failed - {}".format(sys.exc_info())) + + def parse_item(self, item): + """implements parsing the items associated with plugin parameters""" + if 'thz' in item.conf: + # validate the parameter name + + try: + msgName = self._thzProtocol.getMsgFromParameter(item.conf['thz']) + except: + self.logger.error('thz: ### parse_item - {}'.format(sys.exc_info())) + try: + if msgName: + # a message parameter + # add the message name to the list + self._msgList[msgName] = 1 + + if not item.conf['thz'] in self._params: + # new parameter + self._params[item.conf['thz']] = {'lastValue': 0, + 'lastUpdate': datetime.datetime.min, + 'item': [item]} + else: + # parameter exists, associate the new item with it + self._params[item.conf['thz']]['item'].append(item) + + if self._thzProtocol.isParameterWritable(item.conf['thz']): + return self.update_item + else: + return None + elif (item.conf['thz'] in self._thzProtocol.getStats() or + item.conf['thz'] in specialRequests): + # a plugin parameter + if not item.conf['thz'] in self._params: + # new parameter + self._params[item.conf['thz']] = {'lastValue': 0, + 'lastUpdate': datetime.datetime.min, + 'item': [item]} + else: + # parameter exists, associate the new item with it + self._params[item.conf['thz']]['item'].append(item) + + # provide the update function for special requests + if item.conf['thz'] in specialRequests: + return self.update_item + else: + self.logger.warning('thz: No such parameter - {}'.format(item.conf['thz'])) + except: + self.logger.error('thz: ### parse_item - {}'.format(sys.exc_info())) + + return None + + def subscribe(self, itemList): + """implements a subscription mechanism for the ThzServer""" + self._extMsgList = {} + for item in itemList: + self.logger.debug( "subscribing to {0}".format(item)) + msgName = None + try: + msgName = self._thzProtocol.getMsgFromParameter(item) + if msgName: + # a message parameter + # add the message name to the list + self._extMsgList[msgName] = 1 + except: + self.logger.error('thz: ### parse_item - {}'.format(sys.exc_info())) + + return self._curData + + + def init_webinterface(self): + """" + Initialize the web interface for this plugin + + This method is only needed if the plugin is implementing a web interface + """ + try: + self.mod_http = Modules.get_instance().get_module( + 'http') # try/except to handle running in a core version that does not support modules + except: + self.mod_http = None + if self.mod_http == None: + self.logger.error("Not initializing the web interface") + return False + + import sys + if not "SmartPluginWebIf" in list(sys.modules['lib.model.smartplugin'].__dict__): + self.logger.warning("Web interface needs SmartHomeNG v1.5 and up. Not initializing the web interface") + return False + + # set application configuration for cherrypy + webif_dir = self.path_join(self.get_plugin_dir(), 'webif') + config = { + '/': { + 'tools.staticdir.root': webif_dir, + }, + '/static': { + 'tools.staticdir.on': True, + 'tools.staticdir.dir': 'static' + } + } + + # Register the web interface as a cherrypy app + self.mod_http.register_webif(WebInterface(webif_dir, self), + self.get_shortname(), + config, + self.get_classname(), self.get_instance_name(), + description='') + + return True + + + +""" +Class ThzServer implements a UDP server. +""" +class ThzServer(threading.Thread): + def __init__(self, thzDispatcher, host, port, logger): + threading.Thread.__init__(self, name='THZ Server') + + self.alive = True + self._thzDispatcher = thzDispatcher + self._clients = {} + self.logger = logger + self.logger.info("Thz Server initialized") + + self._server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + self._server.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) + self._server.bind((host, port)) + self._server.setblocking(0) + + + def updateClient(self, client, data): + try: + msg = "" + #self.logger.info("Updating client {0}".format(client)) + for item in self._clients[client]['itemList']: + if item in data: + # append to the list + msg = msg + "{0}:{1};".format(item, data[item]) + if len(msg) > 0: + #self.logger.info("Notify '{0}' sent to {1}".format(msg, client)) + msg = 'notify ' + msg + self._server.sendto(msg.encode('ascii'), self._clients[client]['addr']) + except: + self.logger.error("Exception: {0}".format(sys.exc_info())) + pass + + def updateData(self, data): + for client in self._clients.keys(): + self.updateClient(client, data) + + def run(self): + self.logger.debug("Thz Server entered run() method") + while self.alive: + try: + now = datetime.datetime.now() + #print now + purgeList = [] + for addr,client in self._clients.items(): + if client['lastContact'] + datetime.timedelta(seconds=CLIENT_TIMEOUT) < now: + # client connection timed out + purgeList.append(addr) + for addr in purgeList: + self.logger.debug( "Removing client {0}".format(addr)) + del self._clients[addr] + + inputs = [self._server] + rready, wready, eready = select(inputs, [], [], POLL_INTERVAL) + if rready == []: + time.sleep(1) + continue + + buf, remoteAddr = self._server.recvfrom(10000) + self.logger.debug("Received *{0}* from {1}:{2}".format(buf, remoteAddr[0], remoteAddr[1])) + + addr = "{0}:{1}".format(remoteAddr[0], remoteAddr[1]) + except: + self.logger.error("Exception: {0}".format(sys.exc_info())) + continue + + # parse the request + try: + try: + buf = buf.decode('ascii') + cmd, params = buf.split(' ') + except: + cmd = buf + + if cmd == 'subscribe': + # update subscription + self._clients[addr] = { 'addr': remoteAddr, 'itemList': params.split(';') } + + #self.logger.info("item list {0}".format(self._clients[addr]['itemList'])) + data = self._thzDispatcher.subscribe(self._clients[addr]['itemList']) + self.updateClient(addr, data) + self._clients[addr]['lastContact'] = datetime.datetime.now() + + elif cmd == 'set': + # set the parameters to the provided values + pass + + elif cmd == 'alive': + # update the timestamp + #self.logger.info("alive from {0}".format(addr)) + self._clients[addr]['lastContact'] = datetime.datetime.now() + + except: + self.logger.error("Exception: {0}".format(sys.exc_info())) + + self.logger.debug("Thz Server ends run() method") + + + def stop(self): + self.alive = False + +# ------------------------------------------ +# Webinterface of the plugin +# ------------------------------------------ + +import cherrypy +from jinja2 import Environment, FileSystemLoader + + +class WebInterface(SmartPluginWebIf): + + def __init__(self, webif_dir, plugin): + """ + Initialization of instance of class WebInterface + + :param webif_dir: directory where the webinterface of the plugin resides + :param plugin: instance of the plugin + :type webif_dir: str + :type plugin: object + """ + self.logger = logging.getLogger(__name__) + self.webif_dir = webif_dir + self.plugin = plugin + self.tplenv = self.init_template_environment() + + @cherrypy.expose + def index(self, reload=None): + """ + Build index.html for cherrypy + + Render the template and return the html file to be delivered to the browser + + :return: contents of the template after beeing rendered + """ + tmpl = self.tplenv.get_template('index.html') + # add values to be passed to the Jinja2 template eg: tmpl.render(p=self.plugin, interface=interface, ...) + return tmpl.render(p=self.plugin) + diff --git a/thz/plugin.yaml b/thz/plugin.yaml new file mode 100644 index 000000000..7f2707004 --- /dev/null +++ b/thz/plugin.yaml @@ -0,0 +1,949 @@ +plugin: + type: interface # Interface + description: + de: 'Abfrage von Tecalor Wärmepumpen' + en: 'read values of a Tecalor heatpump' + maintainer: realhik + tester: realhik + state: develop # change to ready when done with development + keywords: THZ, Tecalor +# Todo documentation: https://github.com/smarthomeNG/smarthome/wiki/CLI-Plugin # url of documentation (wiki) page + support: https://knx-user-forum.de/forum/supportforen/smarthome-py/1358489-support-thread-zum-thz-lwz-30x-40x-plugin + version: 0.2.2 # Plugin version + sh_minversion: 1.4 + multi_instance: False + restartable: unknown + classname: THZ + +parameters: + serial_port: + type: str + default: /dev/ttyUSB0 + description: + de: "Serielle Schnittstelle an der der Wärmepumpe angeschlossen ist." + en: "serial port connected to the heatpump." + + baudrate: + type: int + default: 115200 + description: + de: "Geschwindigkeit der seriellen Schnittstelle. (Aktuelle Modelle nutzen 115200 bps, ältere nur 57600 bps oder sogar nur 9600 bps." + en: "port speed, recent models use 115200 bps, older heatpumps may use 57600 bps or even 9600 bps." + + poll_period: + type: int + default: 30 + description: + de: "Intervall in dem die Daten von der Wärmepumpe abgefragt werden. Angabe in Sekunden." + en: "interval in seconds how often the data is read from the heatpump." + + min_update_period: + type: int + default: 300 + description: + de: "Interval für die Abfrage sich ständig ändernder Daten (z.B. Temperatur), sollte höher sein als der Parameter poll_period. Angabe in Sekunden." + en: "interval in seconds for updating the values changing frequently (e.g. temperature), it should be higher than the poll period" + + max_update_period: + type: int + default: 43200 + description: + de: "Interval für die Abfrage von selten aktualisierten Daten (z.B. Zähler die nur einmal am Tag geändert werden), sollte wesentlich höher sein als der Parameter poll_period. Angabe in Sekunden." + en: "interval in seconds for updating the values with infrequent changes (e.g. counters updated once per day)" + + server_host: + type: str + default: '0.0.0.0' + description: + de: "IP Adresse auf der der interne UDP Server lauscht" + en: "IP address on which the internal UDP server is listening" + + server_port: + type: int + default: 57483 + description: + de: "Port auf dem der interne Server lauscht" + en: "Port on which the internal server is listening" + +item_attributes: + # Definition of item attributes defined by this plugin (enter 'item_attributes: NONE', if section should be empty) + thz: + type: str + description: + en: 'Beschreibt einen Parameter Typ als Zeichenkette (z.B. comPortStatus, logRegister, logFullScan)' + en: 'contains a parameter type as string (e.g. comPortStatus, logRegister, logFullScan)' + +plugin_functions: NONE + # Definition of plugin functions defined by this plugin (enter 'plugin_functions: NONE', if section should be empty) + +logic_parameters: NONE + # Definition of logic parameters defined by this plugin (enter 'logic_parameters: NONE', if section should be empty) + +item_structs: + # Definition of item-structure templates for this plugin (enter 'item_structs: NONE', if section should be empty) + thz: + + comPortStatus: + comment: | + port status: + 0 - failed to open serial port, + 1 - serial port OK + type: num + thz: comPortStatus + + comPortReopenAttempts: + comment: number of attempts to open the serial port incl. temporary failures + type: num + thz: comPortReopenAttempts + + rxCount: + # number of messages received from the heatpump + type: num + thz: rxCount + + txCount: + # number of messages transmitted to the heatpump + type: num + thz: txCount + + rxChecksumErrorCount: + # number of received messages with checksum errors + # This indicates issues with the serial link (too long cable, + # poor shielding, poor USB adapter, performance problems). + type: num + thz: rxChecksumErrorCount + + rxNackCount: + # number of requests rejected by the heatpump + # Rare occurence may indicate issues with serial link. + # Periodic occurence indicates (partial) protocol incompatibility with + # the given heatpump model or software version/ID. + type: num + thz: rxNackCount + + rxTimeoutCount: + # number of requests not responded to by the heatpump + type: num + thz: rxTimeoutCount + + rxFramingErrorCount: + # number of low-level protocol violations in the receive path + # This indicates issues with the serial link (too long cable, + # poor shielding, poor USB adapter, performance problems). + type: num + thz: rxFramingErrorCount + + # special parameters for debugging purposes + logRegister: + # request logging register with the specified ID (hex) + type: str + thz: logRegister + + logFullScan: + # request logging a full register scan + type: str + thz: logFullScan + + # read-only parameters + outsideTemp: + # Aussentemperatur (korrigiert) + type: num + thz: outsideTemp + sqlite: init + + flowTemp: + # Vorlauftemperatur HK1 + type: num + thz: flowTemp + sqlite: init + + returnTemp: + # Ruecklauftemperatur HK1 + type: num + thz: returnTemp + sqlite: init + + dhwTemp: + # Warmwassertemperatur (Ist) + type: num + thz: dhwTemp + sqlite: init + + hotGasTemp: + # Heissgastemperatur + type: num + thz: hotGasTemp + sqlite: init + + # insideTemp: + # # Raumtemperatur (vom Zusatzfuehler) + # type: num + # thz: insideTemp + + evaporatorTemp: + # Verdampfertemperatur + type: num + thz: evaporatorTemp + sqlite: init + + condenserTemp: + # Verfluessigertemperatur + type: num + thz: condenserTemp + sqlite: init + + mixerOpen: + # Eingang "Mischerventil AUF" (siehe Anschlusse, Installationsanleitung) + type: bool + thz: mixerOpen + sqlite: init + + mixerClosed: + # Eingang "Mischerventil ZU" (siehe Anschlusse, Installationsanleitung) + type: bool + thz: mixerClosed + sqlite: init + + heatPipeValve: + # Heatpipe Ventil + type: bool + thz: heatPipeValve + sqlite: init + + diverterValve: + # Umschaltventil + type: bool + thz: diverterValve + sqlite: init + + dhwPumpOn: + # WW-Umwaelzpumpe an + type: bool + thz: dhwPumpOn + sqlite: init + + heatingCircuitPumpOn: + # Heizkreis-Zirkulationspumpe (HK1) an + type: bool + thz: heatingCircuitPumpOn + sqlite: init + + # solarPumpOn: + # Solar-Zirkulationspumpe an + # type = bool + # thz: solarPumpOn + compressorOn: + # Verdichter an + type: bool + thz: compressorOn + sqlite: init + + boosterStage1On: + # Heizstab Stufe 1 an + type: bool + thz: boosterStage1On + sqlite: init + + boosterStage2On: + # Heizstab Stufe 2 an + type: bool + thz: boosterStage2On + sqlite: init + + boosterStage3On: + # Heizstab Stufe 3 an + type: bool + thz: boosterStage3On + sqlite: init + + highPressureSensorOn: + # Hochdruckwaechter + type: bool + thz: highPressureSensorOn + sqlite: init + + lowPressureSensorOn: + # Niederdruckwaechter + type: bool + thz: lowPressureSensorOn + sqlite: init + + evaporatorIceMonitorOn: + # Waechter Vereisung Verdampfer + type: bool + thz: evaporatorIceMonitorOn + sqlite: init + + signalAnodeOn: + # Signalanode + type: bool + thz: signalAnodeOn + sqlite: init + + evuEnable: + # EVU Freigabe (ausserhalb der Sperrzeit fuer Zusatzheizung) + type: bool + thz: evuEnable + + ovenFireplaceOn: + # Eingang "Ofen/Kamin" (siehe Anschluesse, Installationsanleitung) + type: bool + thz: ovenFireplaceOn + + STB_On: + # Eingang "STB" (siehe Anschluesse, Installationsanleitung) + type: bool + thz: STB_On + + outputVentilatorPower: + # Abluft Soll, % + type: num + thz: outputVentilatorPower + + inputVentilatorPower: + # Zuluft Soll, % + type: num + thz: inputVentilatorPower + + mainVentilatorPower: + # Fortluefter Soll, % + type: num + thz: mainVentilatorPower + + outputVentilatorSpeed: + # Drehzahl (Ist) Abluefter,Hz + type: num + thz: outputVentilatorSpeed + + inputVentilatorSpeed: + # Drehzahl (Ist) Zuluefter,Hz + type: num + thz: inputVentilatorSpeed + + mainVentilatorSpeed: + # Drehzahl (Ist) Fortluefter,Hz + type: num + thz: mainVentilatorSpeed + + outside_tempFiltered: + # Aussentemperatur (mit Verzoegerung) + type: num + thz: outside_tempFiltered + sqlite: init + + relHumidity: + # relative Luftfeuchtigkeit (nur mit vorhandener Fernbedienung) + type: num + thz: relHumidity + sqlite: init + + dewPoint: + # Taupunkt (nur beim Kuehlen ?) + type: num + thz: dewPoint + + P_Nd: + # Niederdruck-Wert + type: num + thz: P_Nd + sqlite: init + + P_Hd: + # Hochdruck-Wert + type: num + thz: P_Hd + sqlite: init + + actualPower_Qc: + # momentane Waermeleistung (Schaetzwert) + type: num + thz: actualPower_Qc + + actualPower_Pel: + # momentane elektrische Leistung (Schaetzwert) + type: num + thz: actualPower_Pel + + roomTempRC: + # Raumtemperatur (nur mit vorhandener Fernbedienung) + type: num + thz: roomTempRC + + compressorHeatingCycles: + # Verdichterlaufzeit zum Heizen (Stunden) + type: num + thz: compressorHeatingCycles + sqlite: init + + compressorCoolingCycles: + # Verdichterlaufzeit zum Kuehlen (Stunden) + type: num + thz: compressorCoolingCycles + sqlite: init + + compressorDHWCycles: + # Verdichterlaufzeit zur WW-Erwaermung (Stunden) + type: num + thz: compressorDHWCycles + sqlite: init + + boosterDHWCycles: + # Heizstablaufzeit zur WW-Erwaermung (Stunden) + type: num + thz: boosterDHWCycles + sqlite: init + + boosterHeatingCycles: + # Heizstablaufzeit Heizen (Stunden) + type: num + thz: boosterHeatingCycles + sqlite: init + + # collectorTempSol: + # # Solarkollektor-Temperatur + # type: num + # thz: collectorTempSol + # + # dhwTempSol: + # # Temperatur solare Warmwasserbereitung + # type: num + # thz: dhwTempSol + # + # flowTempSol: + # # solare HK-Vorlauftemperatur + # type: num + # thz: flowTempSol + # + # ed_sol_pump_temp: + # # ??? + # type: num + # thz: ed_sol_pump_temp + + dhwSetTemp: + # WW-Solltemperatur + type: num + thz: dhwSetTemp + sqlite: init + + compBlockTime: + # ??? + type: num + thz: compBlockTime + + heatBlockTime: + # ??? + type: num + thz: heatBlockTime + + opModeHC: + # Betriebsmodus Heizung + type: str + thz: opModeHC + + returnTempHC1: + # Ruecklauftemperatur HK1 + type: num + thz: returnTempHC1 + sqlite: init + + integralHeatHC1: + # ??? + type: num + thz: integralHeatHC1 + + flowTempHC1: + # Vorlauftemperatur HK1 + type: num + thz: flowTempHC1 + sqlite: init + + heatSetTempHC1: + # Solltemperatur HK1 + type: num + thz: heatSetTempHC1 + sqlite: init + + heatTempHC1: + # Isttemperatur HK1 + type: num + thz: heatTempHC1 + sqlite: init + + onHysteresisNo: + # Hysteresennummer + type: num + thz: onHysteresisNo + + offHysteresisNo: + # Hysteresennummer + type: num + thz: offHysteresisNo + + HCBoosterStage: + # Zusatzheizungsstufe + type: num + thz: HCBoosterStage + + # returnTempHC2: + # #Ruecklauftemperatur HK2 + # type: num + # thz: returnTempHC2 + # heatSetTempHC2: + # # Solltemperatur HK2 + # type: num + # thz: heatSetTempHC2 + # heatTempHC2: + # # Isttemperatur HK2 + # type: num + # thz: heatTempHC2 + + numberOfFaults: + # Anzahl Fehlermeldungen ((es gibt 10, das Plugin gibt aber nur die ersten 4 aus)) + type: num + thz: numberOfFaults + + fault0Code: + # Fehlercode 0 + type: num + thz: fault0Code + + fault0Time: + # Zeit Fehlercode 0 + type: str + thz: fault0Time + + fault0Date: + # Datum Fehlercode 0 + type: str + thz: fault0Date + + fault1Code: + type: num + thz: fault1Code + + fault1Time: + type: str + thz: fault1Time + + fault1Date: + type: str + thz: fault1Date + + fault2Code: + type: num + thz: fault2Code + + fault2Time: + type: str + thz: fault2Time + + fault2Date: + type: str + thz: fault2Date + + fault3Code: + type: num + thz: fault3Code + + fault3Time: + type: str + thz: fault3Time + + fault3Date: + type: str + thz: fault3Date + + time: + # WP-Zeit + type: str + thz: time + + date: + # WP-Datum + type: str + thz: date + + version: + # Softwarestand + type: num + thz: version + + prodDate: + # WP-Produktionsdatum + type: str + thz: prodDate + + flowRateHC1: + # Volumenstrom HK1, l/min + type: num + thz: flowRateHC1 + + softwareID: + # Software ID + type: num + thz: softwareID + + # # Parameter gesetzt auf true, wenn enstsprechende + # # Icons im Display angezeigt werden + # iconProgram: + # # Icon \"Schaltprogramm\" + # type: bool + # thz: iconProgram + + iconCompressor: + # Icon "Verdichter" + type: bool + thz: iconCompressor + + iconHeating: + # Icon "Heizen" + type: bool + thz: iconHeating + + iconCooling: + # Icon "Kuehlen" + type: bool + thz: iconCooling + + iconDHW: + # Icon "Warmwasserbereitung" + type: bool + thz: iconDHW + + iconBooster: + # Icon "elektrische Nachheizstufen" + type: bool + thz: iconBooster + + iconService: + # Icon "Service" + type: bool + thz: iconService + + iconBothFilters: + # Icon "Filterwechsel oben und unten" + type: bool + thz: iconBothFilters + + # iconVentilation: + # # Icon \"Lueftungsstufe\" + # type: bool + # thz: iconVentilation + + iconCirculationPump: + # Icon "Heizkreispumpe" + type: bool + thz: iconCirculationPump + + iconDeicingCondenser: + # Icon "Abtauen Verdamper" + type: bool + thz: iconDeicingCondenser + + iconUpperFilter: + # Icon "Filterwechsel oben" + type: bool + thz: iconUpperFilter + + iconLowerFilter: + # Icon "Filterwechsel unten" + type: bool + thz: iconLowerFilter + + # Energiewerte + boostDHWTotal: + # Energieverbrauch Zusatzheizung zur WW-Erwaermung + type: num + thz: boostDHWTotal + sqlite: init + + boostHCTotal: + # Energieverbrauch Zusatzheizung zum Heizen + type: num + thz: boostHCTotal + sqlite: init + + heatRecoveredDay: + # Waermemenge Waermeruckgewinnung, Tageswert + type: num + thz: heatRecoveredDay + sqlite: init + + heatRecoveredTotal: + # Waermemenge Waermeruckgewinnung, gesamt + type: num + thz: heatRecoveredTotal + sqlite: init + + heatDHWDay: + # Waermemenge WW-Bereitung, Tageswert + type: num + thz: heatDHWDay + sqlite: init + + heatDHWTotal: + # Waermemenge WW-Bereitung, gesamt + type: num + thz: heatDHWTotal + sqlite: init + + heatHCDay: + # Waermemenge Heizen, Tageswert + type: num + thz: heatHCDay + sqlite: init + + heatHCTotal: + # Waermemenge Heizen, gesamt + type: num + thz: heatHCTotal + sqlite: init + + ePowerDHWDay: + # Energieverbrauch zur WW-Erwaermung, Tageswert + type: num + thz: ePowerDHWDay + sqlite: init + + ePowerDHWTotal: + # Energieverbrauch zur WW-Erwaermung, gesamt + type: num + thz: ePowerDHWTotal + sqlite: init + + ePowerHCDay: + # Energieverbrauch zum Heizen, Tageswert + type: num + thz: ePowerHCDay + sqlite: init + + ePowerHCTotal: + # Energieverbrauch zum Heizen, gesamt + type: num + thz: ePowerHCTotal + sqlite: init + + # read/write parameters + # Parameternamen beinhalten Parameternummern (pXX), die im Handbuch + # beschrieben sind. + pOpMode: + type: str + thz: pOpMode + + # p01RoomTempDayHC1: + # type: num + # thz: p01RoomTempDayHC1 + # p01RoomTempDayHC1SummerMode: + # type: num + # thz: p01RoomTempDayHC1SummerMode + # p01RoomTempDayHC2: + # type: num + # thz: p01RoomTempDayHC2 + # p01RoomTempDayHC2SummerMode: + # type: num + # thz: p01RoomTempDayHC2SummerMode + # p02RoomTempNightHC1: + # type: num + # thz: p02RoomTempNightHC1 + # p02RoomTempNightHC1SummerMode: + # type: num + # thz: p02RoomTempNightHC1SummerMode + # p02RoomTempNightHC2: + # type: num + # thz: p02RoomTempNightHC2 + # p02RoomTempNightHC2SummerMode: + # type: num + # thz: p02RoomTempNightHC2SummerMode + # p03RoomTempStandbyHC1: + # type: num + # thz: p03RoomTempStandbyHC1 + # p03RoomTempStandbyHC1SummerMode: + # type: num + # thz: p03RoomTempStandbyHC1SummerMode + # p03RoomTempStandbyHC2: + # type: num + # thz: p03RoomTempStandbyHC2 + # p03RoomTempStandbyHC2SummerMode: + # type: num + # thz: p03RoomTempStandbyHC2SummerMode + # p04DHWsetDayTemp: + # type: num + # thz: p04DHWsetDayTemp + # p05DHWsetNightTemp: + # type: num + # thz: p05DHWsetNightTemp + # p06DHWsetStandbyTemp: + # type: num + # thz: p06DHWsetStandbyTemp + + p07FanStageDay: + type: num + thz: p07FanStageDay + + # p08FanStageNight: + # type: num + # thz: p08FanStageNight + # p09FanStageStandby: + # type: num + # thz: p09FanStageStandby + # p99FanStageParty: + # type: num + # thz: p99FanStageParty + # p11DHWsetManualTemp: + # type: num + # thz: p11DHWsetManualTemp + + p13GradientHC1: + type: num + thz: p13GradientHC1 + + p14LowEndHC1: + type: num + thz: p14LowEndHC1 + + p15RoomInfluenceHC1: + type: num + thz: p15RoomInfluenceHC1 + + # p16GradientHC2: + # type: num + # thz: p16GradientHC2 + # p17LowEndHC2: + # type: num + # thz: p17LowEndHC2 + # p18RoomInfluenceHC2: + # type: num + # thz: p18RoomInfluenceHC2 + # p19FlowProportionHC1: + # type: num + # thz: p19FlowProportionHC1 + # p21Hyst1: + # type: num + # thz: p21Hyst1 + # p22Hyst2: + # type: num + # thz: p22Hyst2 + # p23Hyst3: + # type: num + # thz: p23Hyst3 + # p24Hyst4: + # type: num + # thz: p24Hyst4 + # p25Hyst5: + # type: num + # thz: p25Hyst5 + # p29HystAsymmetry: + # type: num + # thz: p29HystAsymmetry + # p30integralComponent: + # type: num + # thz: p30integralComponent + # p32hystDHW: + # type: num + # thz: p32hystDHW + # p33BoosterTimeoutDHW: + # type: num + # thz: p33BoosterTimeoutDHW + # p34BoosterDHWTempAct: + # type: num + # thz: p34BoosterDHWTempAct + # p35PasteurisationInterval: + # type: num + # thz: p35PasteurisationInterval + # p35PasteurisationTemp: + # type: num + # thz: p35PasteurisationTemp + + p37FanStage1AirIn: + type: num + thz: p37FanStage1AirIn + + # p38FanStage2AirIn: + # type: num + # thz: p38FanStage2AirIn + # p39FanStage3AirIn: + # type: num + # thz: p39FanStage3AirIn + + p40FanStage1AirOut: + type: num + thz: p40FanStage1AirOut + + # p41FanStage2AirOut: + # type: num + # thz: p41FanStage2AirOut + # p42FanStage3AirOut: + # type: num + # thz: p42FanStage3AirOut + # p43UnschedVent3: + # type: num + # thz: p43UnschedVent3 + # p44UnschedVent2: + # type: num + # thz: p44UnschedVent2 + # p45UnschedVent1: + # type: num + # thz: p45UnschedVent1 + # p46UnschedVent0: + # type: num + # thz: p46UnschedVent0 + # p49SummerModeTemp: + # type: num + # thz: p49SummerModeTemp + # p50SummerModeHysteresis: + # type: num + # thz: p50SummerModeHysteresis + # p54MinPumpCycles: + # type: num + # thz: p54MinPumpCycles + # p55MaxPumpCycles: + # type: num + # thz: p55MaxPumpCycles + # p56OutTempMaxPumpCycles: + # type: num + # thz: p56OutTempMaxPumpCycles + # p57OutTempMinPumpCycles: + # type: num + # thz: p57OutTempMinPumpCycles + # p75passiveCooling: + # type: num + # thz: p75passiveCooling + # p76RoomThermCorrection: + # type: num + # thz: p76RoomThermCorrection + # p77OutThermFilterTime: + # type: num + # thz: p77OutThermFilterTime + # p78DualModePoint: + # type: num + # thz: p78DualModePoint + # p79BoosterTimeoutHC: + # type: num + # thz: p79BoosterTimeoutHC + # p83DHWsetSolarTemp: + # type: num + # thz: p83DHWsetSolarTemp + # p99DHWmaxFlowTemp: + # type: num + # thz: p99DHWmaxFlowTemp + # p89DHWeco: + # type: num + # thz: p89DHWeco + # p99startUnschedVent: + # type: num + # thz: p99startUnschedVent + # pClockDay: + # type: num + # thz: pClockDay + # pClockDay: + # type: num + # thz: pClockDay + # pClockYear: + # type: num + # thz: pClockYear + # pClockHour: + # type: num + # thz: pClockHour + # pClockMinute: + # type: num + # thz: pClockMinute diff --git a/thz/requirements.txt b/thz/requirements.txt new file mode 100644 index 000000000..df746fc3e --- /dev/null +++ b/thz/requirements.txt @@ -0,0 +1 @@ +pyserial>=3.4.0 diff --git a/thz/thz.yaml b/thz/thz.yaml new file mode 100644 index 000000000..5742b4901 --- /dev/null +++ b/thz/thz.yaml @@ -0,0 +1,869 @@ +%YAML 1.1 +--- + +# plugin status +thz: + + comPortStatus: + # port status: + # 0 - failed to open serial port, + # 1 - serial port OK + type: num + thz: comPortStatus + + comPortReopenAttempts: + # number of attempts to open the serial port incl. temporary failures + type: num + thz: comPortReopenAttempts + + rxCount: + # number of messages received from the heatpump + type: num + thz: rxCount + + txCount: + # number of messages transmitted to the heatpump + type: num + thz: txCount + + rxChecksumErrorCount: + # number of received messages with checksum errors + # This indicates issues with the serial link (too long cable, + # poor shielding, poor USB adapter, performance problems). + type: num + thz: rxChecksumErrorCount + + rxNackCount: + # number of requests rejected by the heatpump + # Rare occurence may indicate issues with serial link. + # Periodic occurence indicates (partial) protocol incompatibility with + # the given heatpump model or software version/ID. + type: num + thz: rxNackCount + + rxTimeoutCount: + # number of requests not responded to by the heatpump + type: num + thz: rxTimeoutCount + + rxFramingErrorCount: + # number of low-level protocol violations in the receive path + # This indicates issues with the serial link (too long cable, + # poor shielding, poor USB adapter, performance problems). + type: num + thz: rxFramingErrorCount + + # special parameters for debugging purposes + logRegister: + # request logging register with the specified ID (hex) + type: str + thz: logRegister + + logFullScan: + # request logging a full register scan + type: str + thz: logFullScan + + # read-only parameters + outsideTemp: + # Aussentemperatur (korrigiert) + type: num + thz: outsideTemp + sqlite: init + + flowTemp: + # Vorlauftemperatur HK1 + type: num + thz: flowTemp + sqlite: init + + returnTemp: + # Ruecklauftemperatur HK1 + type: num + thz: returnTemp + sqlite: init + + dhwTemp: + # Warmwassertemperatur (Ist) + type: num + thz: dhwTemp + sqlite: init + + hotGasTemp: + # Heissgastemperatur + type: num + thz: hotGasTemp + sqlite: init + +# insideTemp: +# # Raumtemperatur (vom Zusatzfuehler) +# type: num +# thz: insideTemp + + evaporatorTemp: + # Verdampfertemperatur + type: num + thz: evaporatorTemp + sqlite: init + + condenserTemp: + # Verfluessigertemperatur + type: num + thz: condenserTemp + sqlite: init + + mixerOpen: + # Eingang "Mischerventil AUF" (siehe Anschlusse, Installationsanleitung) + type: bool + thz: mixerOpen + sqlite: init + + mixerClosed: + # Eingang "Mischerventil ZU" (siehe Anschlusse, Installationsanleitung) + type: bool + thz: mixerClosed + sqlite: init + + heatPipeValve: + # Heatpipe Ventil + type: bool + thz: heatPipeValve + sqlite: init + + diverterValve: + # Umschaltventil + type: bool + thz: diverterValve + sqlite: init + + dhwPumpOn: + # WW-Umwaelzpumpe an + type: bool + thz: dhwPumpOn + sqlite: init + + heatingCircuitPumpOn: + # Heizkreis-Zirkulationspumpe (HK1) an + type: bool + thz: heatingCircuitPumpOn + sqlite: init + + # solarPumpOn: + # Solar-Zirkulationspumpe an + # type = bool + # thz: solarPumpOn + compressorOn: + # Verdichter an + type: bool + thz: compressorOn + sqlite: init + + boosterStage1On: + # Heizstab Stufe 1 an + type: bool + thz: boosterStage1On + sqlite: init + + boosterStage2On: + # Heizstab Stufe 2 an + type: bool + thz: boosterStage2On + sqlite: init + + boosterStage3On: + # Heizstab Stufe 3 an + type: bool + thz: boosterStage3On + sqlite: init + + highPressureSensorOn: + # Hochdruckwaechter + type: bool + thz: highPressureSensorOn + sqlite: init + + lowPressureSensorOn: + # Niederdruckwaechter + type: bool + thz: lowPressureSensorOn + sqlite: init + + evaporatorIceMonitorOn: + # Waechter Vereisung Verdampfer + type: bool + thz: evaporatorIceMonitorOn + sqlite: init + + signalAnodeOn: + # Signalanode + type: bool + thz: signalAnodeOn + sqlite: init + + evuEnable: + # EVU Freigabe (ausserhalb der Sperrzeit fuer Zusatzheizung) + type: bool + thz: evuEnable + + ovenFireplaceOn: + # Eingang "Ofen/Kamin" (siehe Anschluesse, Installationsanleitung) + type: bool + thz: ovenFireplaceOn + + STB_On: + # Eingang "STB" (siehe Anschluesse, Installationsanleitung) + type: bool + thz: STB_On + + outputVentilatorPower: + # Abluft Soll, % + type: num + thz: outputVentilatorPower + + inputVentilatorPower: + # Zuluft Soll, % + type: num + thz: inputVentilatorPower + + mainVentilatorPower: + # Fortluefter Soll, % + type: num + thz: mainVentilatorPower + + outputVentilatorSpeed: + # Drehzahl (Ist) Abluefter,Hz + type: num + thz: outputVentilatorSpeed + + inputVentilatorSpeed: + # Drehzahl (Ist) Zuluefter,Hz + type: num + thz: inputVentilatorSpeed + + mainVentilatorSpeed: + # Drehzahl (Ist) Fortluefter,Hz + type: num + thz: mainVentilatorSpeed + + outside_tempFiltered: + # Aussentemperatur (mit Verzoegerung) + type: num + thz: outside_tempFiltered + sqlite: init + + relHumidity: + # relative Luftfeuchtigkeit (nur mit vorhandener Fernbedienung) + type: num + thz: relHumidity + sqlite: init + + dewPoint: + # Taupunkt (nur beim Kuehlen ?) + type: num + thz: dewPoint + + P_Nd: + # Niederdruck-Wert + type: num + thz: P_Nd + sqlite: init + + P_Hd: + # Hochdruck-Wert + type: num + thz: P_Hd + sqlite: init + + actualPower_Qc: + # momentane Waermeleistung (Schaetzwert) + type: num + thz: actualPower_Qc + + actualPower_Pel: + # momentane elektrische Leistung (Schaetzwert) + type: num + thz: actualPower_Pel + + roomTempRC: + # Raumtemperatur (nur mit vorhandener Fernbedienung) + type: num + thz: roomTempRC + + compressorHeatingCycles: + # Verdichterlaufzeit zum Heizen (Stunden) + type: num + thz: compressorHeatingCycles + sqlite: init + + compressorCoolingCycles: + # Verdichterlaufzeit zum Kuehlen (Stunden) + type: num + thz: compressorCoolingCycles + sqlite: init + + compressorDHWCycles: + # Verdichterlaufzeit zur WW-Erwaermung (Stunden) + type: num + thz: compressorDHWCycles + sqlite: init + + boosterDHWCycles: + # Heizstablaufzeit zur WW-Erwaermung (Stunden) + type: num + thz: boosterDHWCycles + sqlite: init + + boosterHeatingCycles: + # Heizstablaufzeit Heizen (Stunden) + type: num + thz: boosterHeatingCycles + sqlite: init + +# collectorTempSol: +# # Solarkollektor-Temperatur +# type: num +# thz: collectorTempSol +# +# dhwTempSol: +# # Temperatur solare Warmwasserbereitung +# type: num +# thz: dhwTempSol +# +# flowTempSol: +# # solare HK-Vorlauftemperatur +# type: num +# thz: flowTempSol +# +# ed_sol_pump_temp: +# # ??? +# type: num +# thz: ed_sol_pump_temp + + dhwSetTemp: + # WW-Solltemperatur + type: num + thz: dhwSetTemp + sqlite: init + + compBlockTime: + # ??? + type: num + thz: compBlockTime + + heatBlockTime: + # ??? + type: num + thz: heatBlockTime + + opModeHC: + # Betriebsmodus Heizung + type: str + thz: opModeHC + + returnTempHC1: + # Ruecklauftemperatur HK1 + type: num + thz: returnTempHC1 + sqlite: init + + integralHeatHC1: + # ??? + type: num + thz: integralHeatHC1 + + flowTempHC1: + # Vorlauftemperatur HK1 + type: num + thz: flowTempHC1 + sqlite: init + + heatSetTempHC1: + # Solltemperatur HK1 + type: num + thz: heatSetTempHC1 + sqlite: init + + heatTempHC1: + # Isttemperatur HK1 + type: num + thz: heatTempHC1 + sqlite: init + + onHysteresisNo: + # Hysteresennummer + type: num + thz: onHysteresisNo + + offHysteresisNo: + # Hysteresennummer + type: num + thz: offHysteresisNo + + HCBoosterStage: + # Zusatzheizungsstufe + type: num + thz: HCBoosterStage + +# returnTempHC2: +# #Ruecklauftemperatur HK2 +# type: num +# thz: returnTempHC2 +# heatSetTempHC2: +# # Solltemperatur HK2 +# type: num +# thz: heatSetTempHC2 +# heatTempHC2: +# # Isttemperatur HK2 +# type: num +# thz: heatTempHC2 + + numberOfFaults: + # Anzahl Fehlermeldungen ((es gibt 10, das Plugin gibt aber nur die ersten 4 aus)) + type: num + thz: numberOfFaults + + fault0Code: + # Fehlercode 0 + type: num + thz: fault0Code + + fault0Time: + # Zeit Fehlercode 0 + type: str + thz: fault0Time + + fault0Date: + # Datum Fehlercode 0 + type: str + thz: fault0Date + + fault1Code: + type: num + thz: fault1Code + + fault1Time: + type: str + thz: fault1Time + + fault1Date: + type: str + thz: fault1Date + + fault2Code: + type: num + thz: fault2Code + + fault2Time: + type: str + thz: fault2Time + + fault2Date: + type: str + thz: fault2Date + + fault3Code: + type: num + thz: fault3Code + + fault3Time: + type: str + thz: fault3Time + + fault3Date: + type: str + thz: fault3Date + + time: + # WP-Zeit + type: str + thz: time + + date: + # WP-Datum + type: str + thz: date + + version: + # Softwarestand + type: num + thz: version + + prodDate: + # WP-Produktionsdatum + type: str + thz: prodDate + + flowRateHC1: + # Volumenstrom HK1, l/min + type: num + thz: flowRateHC1 + + softwareID: + # Software ID + type: num + thz: softwareID + +# # Parameter gesetzt auf true, wenn enstsprechende +# # Icons im Display angezeigt werden +# iconProgram: +# # Icon \"Schaltprogramm\" +# type: bool +# thz: iconProgram + + iconCompressor: + # Icon "Verdichter" + type: bool + thz: iconCompressor + + iconHeating: + # Icon "Heizen" + type: bool + thz: iconHeating + + iconCooling: + # Icon "Kuehlen" + type: bool + thz: iconCooling + + iconDHW: + # Icon "Warmwasserbereitung" + type: bool + thz: iconDHW + + iconBooster: + # Icon "elektrische Nachheizstufen" + type: bool + thz: iconBooster + + iconService: + # Icon "Service" + type: bool + thz: iconService + + iconBothFilters: + # Icon "Filterwechsel oben und unten" + type: bool + thz: iconBothFilters + +# iconVentilation: +# # Icon \"Lueftungsstufe\" +# type: bool +# thz: iconVentilation + + iconCirculationPump: + # Icon "Heizkreispumpe" + type: bool + thz: iconCirculationPump + + iconDeicingCondenser: + # Icon "Abtauen Verdamper" + type: bool + thz: iconDeicingCondenser + + iconUpperFilter: + # Icon "Filterwechsel oben" + type: bool + thz: iconUpperFilter + + iconLowerFilter: + # Icon "Filterwechsel unten" + type: bool + thz: iconLowerFilter + + # Energiewerte + boostDHWTotal: + # Energieverbrauch Zusatzheizung zur WW-Erwaermung + type: num + thz: boostDHWTotal + sqlite: init + + boostHCTotal: + # Energieverbrauch Zusatzheizung zum Heizen + type: num + thz: boostHCTotal + sqlite: init + + heatRecoveredDay: + # Waermemenge Waermeruckgewinnung, Tageswert + type: num + thz: heatRecoveredDay + sqlite: init + + heatRecoveredTotal: + # Waermemenge Waermeruckgewinnung, gesamt + type: num + thz: heatRecoveredTotal + sqlite: init + + heatDHWDay: + # Waermemenge WW-Bereitung, Tageswert + type: num + thz: heatDHWDay + sqlite: init + + heatDHWTotal: + # Waermemenge WW-Bereitung, gesamt + type: num + thz: heatDHWTotal + sqlite: init + + heatHCDay: + # Waermemenge Heizen, Tageswert + type: num + thz: heatHCDay + sqlite: init + + heatHCTotal: + # Waermemenge Heizen, gesamt + type: num + thz: heatHCTotal + sqlite: init + + ePowerDHWDay: + # Energieverbrauch zur WW-Erwaermung, Tageswert + type: num + thz: ePowerDHWDay + sqlite: init + + ePowerDHWTotal: + # Energieverbrauch zur WW-Erwaermung, gesamt + type: num + thz: ePowerDHWTotal + sqlite: init + + ePowerHCDay: + # Energieverbrauch zum Heizen, Tageswert + type: num + thz: ePowerHCDay + sqlite: init + + ePowerHCTotal: + # Energieverbrauch zum Heizen, gesamt + type: num + thz: ePowerHCTotal + sqlite: init + + # read/write parameters + # Parameternamen beinhalten Parameternummern (pXX), die im Handbuch + # beschrieben sind. + pOpMode: + type: str + thz: pOpMode + +# p01RoomTempDayHC1: +# type: num +# thz: p01RoomTempDayHC1 +# p01RoomTempDayHC1SummerMode: +# type: num +# thz: p01RoomTempDayHC1SummerMode +# p01RoomTempDayHC2: +# type: num +# thz: p01RoomTempDayHC2 +# p01RoomTempDayHC2SummerMode: +# type: num +# thz: p01RoomTempDayHC2SummerMode +# p02RoomTempNightHC1: +# type: num +# thz: p02RoomTempNightHC1 +# p02RoomTempNightHC1SummerMode: +# type: num +# thz: p02RoomTempNightHC1SummerMode +# p02RoomTempNightHC2: +# type: num +# thz: p02RoomTempNightHC2 +# p02RoomTempNightHC2SummerMode: +# type: num +# thz: p02RoomTempNightHC2SummerMode +# p03RoomTempStandbyHC1: +# type: num +# thz: p03RoomTempStandbyHC1 +# p03RoomTempStandbyHC1SummerMode: +# type: num +# thz: p03RoomTempStandbyHC1SummerMode +# p03RoomTempStandbyHC2: +# type: num +# thz: p03RoomTempStandbyHC2 +# p03RoomTempStandbyHC2SummerMode: +# type: num +# thz: p03RoomTempStandbyHC2SummerMode +# p04DHWsetDayTemp: +# type: num +# thz: p04DHWsetDayTemp +# p05DHWsetNightTemp: +# type: num +# thz: p05DHWsetNightTemp +# p06DHWsetStandbyTemp: +# type: num +# thz: p06DHWsetStandbyTemp + + p07FanStageDay: + type: num + thz: p07FanStageDay + +# p08FanStageNight: +# type: num +# thz: p08FanStageNight +# p09FanStageStandby: +# type: num +# thz: p09FanStageStandby +# p99FanStageParty: +# type: num +# thz: p99FanStageParty +# p11DHWsetManualTemp: +# type: num +# thz: p11DHWsetManualTemp + + p13GradientHC1: + type: num + thz: p13GradientHC1 + + p14LowEndHC1: + type: num + thz: p14LowEndHC1 + + p15RoomInfluenceHC1: + type: num + thz: p15RoomInfluenceHC1 + +# p16GradientHC2: +# type: num +# thz: p16GradientHC2 +# p17LowEndHC2: +# type: num +# thz: p17LowEndHC2 +# p18RoomInfluenceHC2: +# type: num +# thz: p18RoomInfluenceHC2 +# p19FlowProportionHC1: +# type: num +# thz: p19FlowProportionHC1 +# p21Hyst1: +# type: num +# thz: p21Hyst1 +# p22Hyst2: +# type: num +# thz: p22Hyst2 +# p23Hyst3: +# type: num +# thz: p23Hyst3 +# p24Hyst4: +# type: num +# thz: p24Hyst4 +# p25Hyst5: +# type: num +# thz: p25Hyst5 +# p29HystAsymmetry: +# type: num +# thz: p29HystAsymmetry +# p30integralComponent: +# type: num +# thz: p30integralComponent +# p32hystDHW: +# type: num +# thz: p32hystDHW +# p33BoosterTimeoutDHW: +# type: num +# thz: p33BoosterTimeoutDHW +# p34BoosterDHWTempAct: +# type: num +# thz: p34BoosterDHWTempAct +# p35PasteurisationInterval: +# type: num +# thz: p35PasteurisationInterval +# p35PasteurisationTemp: +# type: num +# thz: p35PasteurisationTemp + + p37FanStage1AirIn: + type: num + thz: p37FanStage1AirIn + +# p38FanStage2AirIn: +# type: num +# thz: p38FanStage2AirIn +# p39FanStage3AirIn: +# type: num +# thz: p39FanStage3AirIn + + p40FanStage1AirOut: + type: num + thz: p40FanStage1AirOut + +# p41FanStage2AirOut: +# type: num +# thz: p41FanStage2AirOut +# p42FanStage3AirOut: +# type: num +# thz: p42FanStage3AirOut +# p43UnschedVent3: +# type: num +# thz: p43UnschedVent3 +# p44UnschedVent2: +# type: num +# thz: p44UnschedVent2 +# p45UnschedVent1: +# type: num +# thz: p45UnschedVent1 +# p46UnschedVent0: +# type: num +# thz: p46UnschedVent0 +# p49SummerModeTemp: +# type: num +# thz: p49SummerModeTemp +# p50SummerModeHysteresis: +# type: num +# thz: p50SummerModeHysteresis +# p54MinPumpCycles: +# type: num +# thz: p54MinPumpCycles +# p55MaxPumpCycles: +# type: num +# thz: p55MaxPumpCycles +# p56OutTempMaxPumpCycles: +# type: num +# thz: p56OutTempMaxPumpCycles +# p57OutTempMinPumpCycles: +# type: num +# thz: p57OutTempMinPumpCycles +# p75passiveCooling: +# type: num +# thz: p75passiveCooling +# p76RoomThermCorrection: +# type: num +# thz: p76RoomThermCorrection +# p77OutThermFilterTime: +# type: num +# thz: p77OutThermFilterTime +# p78DualModePoint: +# type: num +# thz: p78DualModePoint +# p79BoosterTimeoutHC: +# type: num +# thz: p79BoosterTimeoutHC +# p83DHWsetSolarTemp: +# type: num +# thz: p83DHWsetSolarTemp +# p99DHWmaxFlowTemp: +# type: num +# thz: p99DHWmaxFlowTemp +# p89DHWeco: +# type: num +# thz: p89DHWeco +# p99startUnschedVent: +# type: num +# thz: p99startUnschedVent +# pClockDay: +# type: num +# thz: pClockDay +# pClockDay: +# type: num +# thz: pClockDay +# pClockYear: +# type: num +# thz: pClockYear +# pClockHour: +# type: num +# thz: pClockHour +# pClockMinute: +# type: num +# thz: pClockMinute diff --git a/thz/webif/static/img/readme.txt b/thz/webif/static/img/readme.txt new file mode 100644 index 000000000..1a7c55eef --- /dev/null +++ b/thz/webif/static/img/readme.txt @@ -0,0 +1,6 @@ +This directory is for storing images that are used by the web interface. + +If you want to have your own logo on the top of the web interface, store it here and name it plugin_logo.. + +Extension can be png, svg or jpg + diff --git a/thz/webif/templates/index.html b/thz/webif/templates/index.html new file mode 100644 index 000000000..6e1ad17d9 --- /dev/null +++ b/thz/webif/templates/index.html @@ -0,0 +1,100 @@ +{% extends "base_plugin.html" %} + +{% set logo_frame = false %} + +{% block headtable %} + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Prompt 1{% if 1 == 2 %}{{ _('Ja') }}{% else %}{{ _('Nein') }}{% endif %}Prompt 4{{ _('Wert 4') }}
Prompt 2{{ _('Wert 2') }}Prompt 5-
Prompt 3-Prompt 6-
+{% endblock headtable %} + + + +{% block buttons %} +{% if 1==2 %} +
+ +
+{% endif %} +{% endblock %} + + +{% set tabcount = 4 %} + + + +{% if item_count==0 %} + {% set start_tab = 2 %} +{% endif %} + + + +{% set tab1title = "" ~ p.get_shortname() ~ " Items (" ~ item_count ~ ")" %} +{% block bodytab1 %} +
+ {{ _('Hier kommt der Inhalt des Webinterfaces hin.') }} +
+{% endblock bodytab1 %} + + + +{% set tab2title = "" ~ p.get_shortname() ~ " Geräte (" ~ device_count ~ ")" %} +{% block bodytab2 %} +{% endblock bodytab2 %} + + + +{% block bodytab3 %} +{% endblock bodytab3 %} + + + +{% block bodytab4 %} +{% endblock bodytab4 %} From 385b051491090932b29150527be98549f07d4dc2 Mon Sep 17 00:00:00 2001 From: bmxp Date: Sat, 18 May 2019 16:31:14 +0200 Subject: [PATCH 037/200] Indego mower plugin --- indego/README.md | 1484 +++++++++++++++++ indego/__init__.py | 820 +++++++++ indego/example.yaml | 1359 +++++++++++++++ indego/locale.yaml | 11 + indego/plugin.yaml | 95 ++ indego/smartVISU_dropins/icons/ws/lawn.svg | 163 ++ indego/smartVISU_dropins/icons/ws/lawn_2.svg | 33 + .../icons/ws/lawnmover_2.svg | 42 + .../icons/ws/scene_robo_lawnmower_dock.svg | 5 + .../icons/ws/scene_robo_lawnmower_docked.svg | 12 + .../icons/ws/scene_robo_lawnmower_help.svg | 31 + .../icons/ws/scene_robo_lawnmower_moving.svg | 155 ++ .../icons/ws/scene_robo_lawnmower_offline.svg | 18 + .../icons/ws/scene_robo_lawnmower_online.svg | 22 + .../icons/ws/scene_robo_lawnmower_start.svg | 13 + .../icons/ws/scene_robo_lawnmower_stop.svg | 11 + .../icons/ws/scene_robo_lawnmower_stopp.svg | 31 + .../lib/weather/pics/cloud_10.png | Bin 0 -> 69934 bytes .../lib/weather/pics/cloud_5.png | Bin 0 -> 60220 bytes .../lib/weather/pics/cloud_8.png | Bin 0 -> 72761 bytes .../lib/weather/pics/sun_1.png | Bin 0 -> 50554 bytes .../lib/weather/pics/sun_5.png | Bin 0 -> 63175 bytes .../pages/your pages folder/indego.html | 932 +++++++++++ .../your pages folder/widget_basic_input.html | 56 + .../widget_basic_large_symbol.html | 26 + indego/webif/static/img/readme.txt | 6 + indego/webif/templates/index.html | 100 ++ 27 files changed, 5425 insertions(+) create mode 100644 indego/README.md create mode 100644 indego/__init__.py create mode 100644 indego/example.yaml create mode 100644 indego/locale.yaml create mode 100644 indego/plugin.yaml create mode 100644 indego/smartVISU_dropins/icons/ws/lawn.svg create mode 100644 indego/smartVISU_dropins/icons/ws/lawn_2.svg create mode 100644 indego/smartVISU_dropins/icons/ws/lawnmover_2.svg create mode 100644 indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_dock.svg create mode 100644 indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_docked.svg create mode 100644 indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_help.svg create mode 100644 indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_moving.svg create mode 100644 indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_offline.svg create mode 100644 indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_online.svg create mode 100644 indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_start.svg create mode 100644 indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_stop.svg create mode 100644 indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_stopp.svg create mode 100644 indego/smartVISU_dropins/lib/weather/pics/cloud_10.png create mode 100644 indego/smartVISU_dropins/lib/weather/pics/cloud_5.png create mode 100644 indego/smartVISU_dropins/lib/weather/pics/cloud_8.png create mode 100644 indego/smartVISU_dropins/lib/weather/pics/sun_1.png create mode 100644 indego/smartVISU_dropins/lib/weather/pics/sun_5.png create mode 100644 indego/smartVISU_dropins/pages/your pages folder/indego.html create mode 100644 indego/smartVISU_dropins/pages/your pages folder/widget_basic_input.html create mode 100644 indego/smartVISU_dropins/pages/your pages folder/widget_basic_large_symbol.html create mode 100644 indego/webif/static/img/readme.txt create mode 100644 indego/webif/templates/index.html diff --git a/indego/README.md b/indego/README.md new file mode 100644 index 000000000..3bbf5765a --- /dev/null +++ b/indego/README.md @@ -0,0 +1,1484 @@ +# Indego Plugin + +#### Version 1.x.y + +This Plugin can connect to the Indego Server and communicate trough the server with Bosch Indego +lawn mowers with Connect feature over GSM (some older models don't have the connect-feature!). + +It is working with the new models like 350 / 400 but also with the older 800/1000/1200 with Connect feature. + +With this plugin you can send following commands to your Indego Connect Mower: +- Mow (start mowing) +- Pause (pause mowing / moving) +- go home (go home to charge station) +- enable / disable the smart mowing function (the server will decide at which time your mower will start and stop mowing, considering the temperature and weather) +- set /get the smart mowing frequency (-100 for the lowest mowing frequency +100 for the highest frequency, in my case "0" worked the best) + +And get information: +1. Download the actual Map of your garden with a visualisation of the part that had been mowed in the actual session and that needs to be mowed. You also see the position of the mower (yellow point). As the Map is only updated from time to time the position is not very accurate. +2. See the percentage of what had been mowed +3. See the status of the mower (like docked, mowing, learning garden, going back to the station) +4. See history data of your Mower (like overall mowing time, charge time, next planned smart mowing time and date +5. See user data, like Username, Mode, Firmware version, serial number +6. Get alert messages and the date they occurred and delete them from the server afterwards +7. Get very accurate weather forecast for your address for the next four days, (incl. exp. sunshine hours, possibility of rain, amount of rain for diffrent daytimes) + +The plugin does not offer the possibility to set the times of mowing, this can be handled in the app, or for example here: http://grauonline.de/alexwww/indego/indego.html +Please note that you cannot connect with multiple devices at a time with the server. If you connect with the app, the plugin will loose the connection (and try to authenticate again, which will make the authentication of the app invalid). You should avoid to be connecting with the app and the plugin at a time, because it will start the authentication procedure again and again. + +Feel free to implement the missing functions in the plugin, as I don't change them, I have no need to be able to change the mowing dates with the calender or the location of the mower. +If you have a problem please start logging the plugins output in debug mode and check the server responses and Plugin outputs. +From time to time Bosch is adding something, so you might also find new features if you have a look at the server response in debug mode. +For developing you can use a REST client (for example https://github.com/chao/RESTClient) + +For support use this thread: https://knx-user-forum.de/forum/supportforen/smarthome-py/966612-indego-connect + + +### Further Information +Documentation of the server communication: + +* https://github.com/zazaz-de/iot-device-bosch-indego-controller/blob/master/PROTOCOL.md (might be out-dated!) +* https://github.com/zazaz-de/iot-device-bosch-indego-controller/blob/master/README.md + +## Requirements + +Before you can use the plugin you need to install the indego app on a mobile device and register you Indego mower. +You will need the Username and Password you set in the app to connect this plugin to the Bosch IOT Server.. +For smart mowing it is needed to enter the location in the app or at: http://grauonline.de/alexwww/indego/indego.html + +### Supported Hardware + +* Indego Connect 350 +* Indego Connect 400 +* Indego 800/1000/1200 with Connect feature. + +## Configuration + +### plugin.yaml + +Please refer to the documentation generated from plugin.yaml metadata. + +```yaml +MyIndego: + class_name: Indego + class_path: plugins.indego + user: 'NUTZERNAME' # -> you need to use the name that you used on your Indego App + password: 'PASSWORT' # -> you need to use the password that you used on your Indego App + cycle: 30 # frequency of when how often the status is updated, is working without a problem with 30seconds, not sure when the server will start to be annoyed by your requests + img_pfad: '/tmp/garden.svg' # path where to save the mapfile, take care you smarthome user has write access + url: 'https://api.indego.iot.bosch-si.com/api/v1/' + parent_item: 'indego' # the parent item for all relating indego items +``` + +### items.yaml + +**Todo here** Put a sample documentation here +Please refer to the documentation generated from plugin.yaml metadata. + +**Todo here** +Any logics supported? +### logic.yaml +Please refer to the documentation generated from plugin.yaml metadata. + +### Integration into SmartVisu + +#### for SmartVISU Version 2.9 (aka develop) +**Todo here** +You can use the dropins folder for SmartVISU for all additional stuff without affecting the ``git pull`` mechanism + +see here +https://knx-user-forum.de/forum/supportforen/smartvisu/1144945-k%C3%BCrzlich-hinzugef%C3%BCgte-features +and here +https://github.com/Martin-Gleiss/smartvisu/blob/develop/dropins/README.md + + +#### for SmartVISU Version < = 2.8 (aka master) + +In smartVISU_dropins you will find resources for usage with SmartVISU. + +copy all png files in ``smartVISU_dropins\lib\weather\pics`` to the folder ``[your smartVISU home]\lib\weather\pics`` + +copy all svg files in ``smartVISU_dropins\icons`` to the folder ``[your smartVISU home]\icons\ws" + +copy ``smartVISU_dropins\pages\your pages folder\widget_basic_input.html`` and +``smartVISU_dropins\pages\your pages folder\widget_basic_large_symbol.html`` to your pages folder at ``[your smartVISU home]\pages\{your folder}`` + +copy ``smartVISU_dropins\pages\your pages folder\indego.html`` to ``[your smartVISU home]\pages\{your folder}\indego.html`` + +Edit ``[your smartVISU home]\pages\{your folder}\indego.html`` and adjust the path of the map in line 22 +``{{ multimedia.image('image3', {path where your map is saved, defined in plugin conf img_pfad}, 'corner','20s') }}
`` + +Please be aware that SmartHomeNG user as well as the Webserver needs to have access to the image file! + +## Methods +Please refer to the documentation generated from plugin.yaml metadata. + + +## Examples + + +You need the following item structure for the plugin to work (which is provided as example.yaml) +The base item ``indego`` may be changed to something else but it is mandatory. + +```yaml +%YAML 1.1 +--- + +indego: + + online: + type: bool + + stateCode: + type: num + + state_str: + type: str + + stateError: + type: num + + config_change: + type: bool + indego_add_key: config_change + + mow_trig: + type: bool + indego_add_key: mow_trig + + stateLevel: + type: num + + docked: + type: bool + sqlite: 'yes' + + moving: + type: bool + sqlite: 'yes' + + pause: + type: bool + sqlite: 'yes' + + help: + type: bool + sqlite: 'yes' + + mowedPercent: + type: num + + mapSvgCacheDate: + type: foo + cache: 'on' + + mapUpdateAvailable: + type: bool + + mowedDate: + type: foo + cache: 'on' + + xPos: + type: num + + yPos: + type: num + + svg_xPos: + type: num + + svg_yPos: + type: foo + + mowmode: + type: num + + next_time: + type: foo + cache: 'on' + + runtimeTotalOperationMins: + type: num + sqlite: 'yes' + + hours: + type: num + sqlite: 'yes' + eval: round(sh.indego.runtimeTotalOperationMins()/60,0) + eval_trigger: indego.runtimeTotalOperationMins + + runtimeTotalChargeMins: + type: num + sqlite: 'yes' + + hours: + type: num + sqlite: 'yes' + eval: round(sh.indego.runtimeTotalChargeMins()/60,0) + eval_trigger: indego.runtimeTotalChargeMins + + runtimeSessionOperationMins: + type: num + sqlite: 'yes' + + runtimeSessionChargeMins: + type: num + sqlite: 'yes' + + SMART: + type: bool + visu_acl: rw + indego_smart: 'yes' + cache: 'on' + + frequenz: + type: num + indego_frequency: 'yes' + cache: 'on' + + MOW: + type: bool + visu_acl: rw + indego_command: '{"state":"mow"}' + autotimer: 5 = False + + PAUSE: + type: bool + visu_acl: rw + indego_command: '{"state":"pause"}' + autotimer: 5 = False + + RETURN: + type: bool + visu_acl: rw + indego_command: '{"state":"returnToDock"}' + autotimer: 5 = False + + alm_sn: + type: num + + alm_name: + type: str + + service_counter: + type: num + + needs_service: + type: bool + + alm_mode: + type: str + + bareToolnumber: + type: str + + alm_firmware_version: + type: str + cache: 'on' + + before: + type: str + cache: 'on' + + changed: + type: foo + cache: 'on' + + alert_message: + type: str + cache: 'on' + + alert_id: + type: str + cache: 'on' + + alert_id_send: + type: str + cache: 'on' + + alert_flag: + type: str + cache: 'on' + + alert_headline: + type: str + cache: 'on' + + alert_date: + type: foo + cache: 'on' + + weather: + + int_0: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_1: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_2: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_3: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_4: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_5: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_6: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_7: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_8: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_9: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_10: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_11: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_12: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_13: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_14: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_15: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_16: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_17: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_18: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_19: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + day_0: + + tx: + type: num + cache: 'on' + + date: + type: foo + cache: 'on' + + wochentag: + type: str + cache: 'on' + + sun: + type: num + cache: 'on' + + tn: + type: num + cache: 'on' + + day_1: + + tx: + type: num + cache: 'on' + + date: + type: foo + cache: 'on' + + wochentag: + type: str + cache: 'on' + + sun: + type: num + cache: 'on' + + tn: + type: num + cache: 'on' + + day_2: + + tx: + type: num + cache: 'on' + + date: + type: foo + cache: 'on' + + wochentag: + type: str + cache: 'on' + + sun: + type: num + cache: 'on' + + tn: + type: num + cache: 'on' + + day_3: + + tx: + type: num + cache: 'on' + + date: + type: foo + cache: 'on' + + wochentag: + type: str + cache: 'on' + + sun: + type: num + cache: 'on' + + tn: + type: num + cache: 'on' + + day_4: + + tx: + type: num + cache: 'on' + + date: + type: foo + cache: 'on' + + wochentag: + type: str + cache: 'on' + + sun: + type: num + cache: 'on' + + tn: + type: num + cache: 'on' +``` + diff --git a/indego/__init__.py b/indego/__init__.py new file mode 100644 index 000000000..892d9786b --- /dev/null +++ b/indego/__init__.py @@ -0,0 +1,820 @@ +#!/usr/bin/env python3 +# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab +######################################################################### +# Copyright 2018 Marco Düchting Marco.Duechting@gmx.de +# Copyright 2018 Bernd Meiners Bernd.Meiners@mail.de +######################################################################### +# This file is part of SmartHomeNG. +# +# Sample plugin for new plugins to run with SmartHomeNG version 1.4 and +# upwards. +# +# SmartHomeNG is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# SmartHomeNG is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with SmartHomeNG. If not, see . +# +######################################################################### + +from lib.module import Modules +from lib.model.smartplugin import * + +import base64 +import os +import ast +import datetime +import json +import http.client +from dateutil import tz + + +# If a package is needed, which might be not installed in the Python environment, +# import it like this: +# +# try: +# import +# REQUIRED_PACKAGE_IMPORTED = True +# except: +# REQUIRED_PACKAGE_IMPORTED = False + + +class Indego(SmartPlugin): + """ + Main class of the Indego Plugin. Does all plugin specific stuff and provides + the update functions for the items + """ + PLUGIN_VERSION = '1.6.0' + + def __init__(self, sh, *args, **kwargs): + """ + Initalizes the plugin. The parameters describe for this method are pulled from the entry in plugin.conf. + + :param sh: **Deprecated**: The instance of the smarthome object. For SmartHomeNG versions 1.4 and up: **Don't use it**! + :param *args: **Deprecated**: Old way of passing parameter values. For SmartHomeNG versions 1.4 and up: **Don't use it**! + :param **kwargs:**Deprecated**: Old way of passing parameter values. For SmartHomeNG versions 1.4 and up: **Don't use it**! + + If you need the sh object at all, use the method self.get_sh() to get it. There should be almost no need for + a reference to the sh object any more. + + The parameters *args and **kwargs are the old way of passing parameters. They are deprecated. They are imlemented + to support oder plugins. Plugins for SmartHomeNG v1.4 and beyond should use the new way of getting parameter values: + use the SmartPlugin method get_parameter_value(parameter_name) instead. Anywhere within the Plugin you can get + the configured (and checked) value for a parameter by calling self.get_parameter_value(parameter_name). It + returns the value in the datatype that is defined in the metadata. + """ + from bin.smarthome import VERSION + if '.'.join(VERSION.split('.', 2)[:2]) <= '1.5': + self.logger = logging.getLogger(__name__) + + # get the parameters for the plugin (as defined in metadata plugin.yaml): + # self.param1 = self.get_parameter_value('param1') + + self.user = self.get_parameter_value('user') + self.password = self.get_parameter_value('password') + self.img_pfad = self.get_parameter_value('img_pfad') + self.cycle = self.get_parameter_value('cycle') + self.indego_url = self.get_parameter_value('indego_url') + self.parent_item = self.get_parameter_value('parent_item') + + self.context_id = '' + self.user_id = '' + self.alm_sn = '' + self.alert_reset = True + self.auth() + self.add_keys = {} + + # Check for initialization errors: + if not self.indego_url: + self._init_complete = False + return + + if not self.parent_item: + self._init_complete = False + return + + # The following part of the __init__ method is only needed, if a webinterface is being implemented: + + # if plugin should start even without web interface + self.init_webinterface() + + # if plugin should not start without web interface + # if not self.init_webinterface(): + # self._init_complete = False + + return + + def run(self): + """ + Run method for the plugin + """ + self.logger.debug("Run method called") + self.alive = True + self.get_sh().scheduler.add('state', self.state, cycle = self.cycle) + self.get_sh().scheduler.add('alert', self.alert, cycle=3600) + #self.get_sh().scheduler.add('auth', self.auth, cycle=7190) + self.get_sh().scheduler.add('device_date', self.device_data, cycle=6000) + self.get_sh().scheduler.add('get_weather', self.get_weather, cycle=600) + self.get_sh().scheduler.add('get_next_time', self.get_next_time, cycle=300) + self.get_sh().scheduler.add('get_smart_frequency', self.get_smart_frequency, cycle=500) + # if you need to create child threads, do not make them daemon = True! + # They will not shutdown properly. (It's a python bug) + + def stop(self): + """ + Stop method for the plugin + """ + self.get_sh().scheduler.remove('state') + self.get_sh().scheduler.remove('device_date') + #self.get_sh().scheduler.remove('alert') + self.get_url(self.indego_url + 'authenticate',self.context_id,5,'DELETE') + self.logger.debug("Stop method called") + self.alive = False + + def parse_item(self, item): + """ + Default plugin parse_item method. Is called when the plugin is initialized. + The plugin can, corresponding to its attribute keywords, decide what to do with + the item in future, like adding it to an internal array for future reference + :param item: The item to process. + :return: If the plugin needs to be informed of an items change you should return a call back function + like the function update_item down below. An example when this is needed is the knx plugin + where parse_item returns the update_item function when the attribute knx_send is found. + This means that when the items value is about to be updated, the call back function is called + with the item, caller, source and dest as arguments and in case of the knx plugin the value + can be sent to the knx with a knx write function within the knx plugin. + """ + if self.has_iattr(item.conf, 'indego_command'): + self.logger.debug("Item '{}' has attribute '{}' found with {}".format( item, 'indego_command', self.get_iattr_value(item.conf, 'indego_command'))) + return self.send_command + + if self.has_iattr(item.conf, 'indego_smart'): + self.logger.debug("Item '{}' has attribute '{}' found with {}".format(item, 'indego_smart', self.get_iattr_value(item.conf, 'indego_smart'))) + return self.set_smart + + if self.has_iattr(item.conf, 'indego_frequency'): + self.logger.debug("Item '{}' has attribute '{}' found with {}".format(item, 'indego_frequency',self.get_iattr_value(item.conf, 'indego_frequency'))) + return self.set_smart_frequency + + if self.has_iattr(item.conf, 'indego_add_key'): + self.logger.debug("Item '{}' has attribute '{}' found with {}".format(item, 'indego_add_key', self.get_iattr_value(item.conf, 'indego_add_key'))) + self.add_keys[item.conf['indego_add_key']] = item + + return None + + def parse_logic(self, logic): + """ + Default plugin parse_logic method + """ + if 'xxx' in logic.conf: + # self.function(logic['name']) + pass + + ### Todo: will we ever need this function with indego plugin? + ###def update_item(self, item, caller=None, source=None, dest=None): + ### """ + ### Item has been updated + ### + ### This method is called, if the value of an item has been updated by SmartHomeNG. + ### It should write the changed value out to the device (hardware/interface) that + ### is managed by this plugin. + ### + ### :param item: item to be updated towards the plugin + ### :param caller: if given it represents the callers name + ### :param source: if given it represents the source + ### :param dest: if given it represents the dest + ### """ + ### if caller != self.get_shortname(): + ### # code to execute, only if the item has not been changed by this this plugin: + ### self.logger.info("Update item: {}, item has been changed outside this plugin".format(item.id())) + ### + ### if self.has_iattr(item.conf, 'foo_itemtag'): + ### self.logger.debug( + ### "update_item was called with item '{}' from caller '{}', source '{}' and dest '{}'".format(item, + ### caller, + ### source, + ### dest)) + ### pass + + ### Todo: will we ever need this function with indego plugin? + ###def poll_device(self): + ### """ + ### todo: Do we need to obey naming conventions? + ### Polls for updates of the device + ### + ### This method is only needed, if the device (hardware/interface) does not propagate + ### changes on it's own, but has to be polled to get the actual status. + ### It is called by the scheduler. + ### """ + ### # # get the value from the device + ### # device_value = ... + ### # + ### # # find the item(s) to update: + ### # for item in self.sh.find_items('...'): + ### # + ### # # update the item + ### # item(device_value, self.get_shortname()) + ### pass + + def fetch_url(self, url, username=None, password=None, timeout=2, body=None): + headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'} + headers = {'Content-Type': 'application/json'} + plain = True + if url.startswith('https'): + plain = False + lurl = url.split('/') + host = lurl[2] + purl = '/' + '/'.join(lurl[3:]) + if plain: + conn = http.client.HTTPConnection(host, timeout=timeout) + else: + conn = http.client.HTTPSConnection(host, timeout=timeout) + if username and password: + headers['Authorization'] = ('Basic '.encode() + base64.b64encode((username + ':' + password).encode())) + self.logger.debug("headers: " + str(headers)) + try: + conn.request("POST", purl, body=body, headers=headers) + except Exception as e: + self.logger.warning("Problem fetching {0}: {1}".format(url, e)) + conn.close() + return False + resp = conn.getresponse() + if resp.status == 200 or resp.status == 201: + content = resp.read() + else: + self.logger.warning("Problem fetching {0}: {1} {2}".format(url, resp.status, resp.reason)) + content = False + conn.close() + return content + + def set_childitem(self, itemname, value ): + """ + a shortcut function to set an item with a given value if it exists + :param itemname: + :param value: + :return: + """ + item = self.get_sh().return_item(self.parent_item + '.' + itemname) + if item: + item(value, 'indego_plugin') + else: + self.logger.warning("Could not set item '{}' to '{}'".format(self.parent_item+itemname, value)) + + def get_url(self, url, contextid=None, timeout=40, method='GET'): + headers = {'Content-Type': 'application/json'} + headers['Accept'] = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8' + headers['x-im-context-id'] = contextid + plain = True + if url.startswith('https'): + plain = False + lurl = url.split('/') + host = lurl[2] + purl = '/' + '/'.join(lurl[3:]) + if plain: + conn = http.client.HTTPConnection(host, timeout=timeout) + else: + conn = http.client.HTTPSConnection(host, timeout=timeout) + try: + conn.request(method, purl, headers=headers) + except Exception as e: + self.logger.warning("Problem fetching {0}: {1}".format(url, e)) + conn.close() + return False + resp = conn.getresponse() + if resp.status == 401: + self.logger.warning("get_url returned 401, reconnecting and trying again") + self.set_childitem('online', False) + self.auth() + try: + conn.request(method, purl, headers=headers) + except Exception as e: + self.logger.warning("Problem fetching {0}: {1}".format(url, e)) + conn.close() + return False + resp = conn.getresponse() + if resp.status == 200 or resp.status == 201: + content = resp.read() + else: + self.logger.warning("Problem fetching {0}: {1} {2}".format(url, resp.status, resp.reason)) + content = False + conn.close() + return content + + def put_url(self, url, contextid=None, state=None, timeout=2): + headers = {'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'} + headers = {'Content-Type': 'application/json'} + plain = True + if url.startswith('https'): + plain = False + lurl = url.split('/') + host = lurl[2] + purl = '/' + '/'.join(lurl[3:]) + if plain: + conn = http.client.HTTPConnection(host, timeout=timeout) + else: + conn = http.client.HTTPSConnection(host, timeout=timeout) + headers['x-im-context-id'] = contextid + body = state + try: + conn.request("PUT", purl, body=body, headers=headers) + except Exception as e: + self.logger.warning("Problem fetching {0}: {1}".format(url, e)) + conn.close() + return False + # resp = conn.getresponse() + # content = resp.read() + conn.close() + self.logger.debug( + 'put gesendet an URL: ' + str(url) + 'context id: ' + str(contextid) + 'command: ' + str(state)) + return True + + def send_command(self, item, command=None, caller=None, source=None, dest=None): + if self.has_iattr(item.conf, 'indego_command'): + command = self.get_iattr_value(item.conf,'indego_command') + self.logger.debug("Function Command " + command + ' ' + str(item())) + if item(): + message = self.put_url(self.indego_url + 'alms/' + self.alm_sn + '/state', self.context_id, command, 10) + self.logger.debug("Command " + command + ' gesendet! ' + str(message)) + + def set_smart(self, item, command=None, caller=None, source=None, dest=None): + self.logger.debug("Smart Mode Command " + str(item())) + if item(): + self.logger.debug("SMAAAAAAAAAAAAAAAAAAAAART aktivieren") + command = '{"enabled": true}' + else: + self.logger.debug("SMAAAAAAAAAAAAAAAAAAAAART deaktivieren") + command = '{"enabled": false}' + self.logger.debug("Smart URL: " + self.indego_url + 'alms/' + self.alm_sn + '/predictive') + message = self.put_url(self.indego_url + 'alms/' + self.alm_sn + '/predictive', self.context_id, command, 10) + self.logger.debug("Smart Command " + command + ' gesendet! ' + str(message)) + + def set_smart_frequency(self, item, frequency=0, caller=None, source=None, dest=None): + frequency = str(item()) + command = '{"user_adjustment": ' + frequency + '}' + self.logger.debug("frequency smart " + command + ' ' + str(item())) + message = self.put_url(self.indego_url + 'alms/' + self.alm_sn + '/predictive/useradjustment', self.context_id, + command, 10) + self.logger.debug("Command " + command + ' gesendet! ' + str(message)) + + def auth(self): + auth_response = self.fetch_url(self.indego_url + 'authenticate', self.user, self.password, 25, + '{"device":"","os_type":"Android","os_version":"4.0","dvc_manuf":"unknown","dvc_type":"unknown"}') + if auth_response == False: + self.logger.error('AUTHENTICATION INDEGO FAILED! Plugin not working now.') + else: + auth_response = json.loads(auth_response.decode(encoding='UTF-8', errors='strict')) + self.logger.debug("String Auth: " + str(auth_response)) + self.context_id = auth_response['contextId'] + self.logger.info("context ID received " + self.context_id) + self.user_id = auth_response['userId'] + self.logger.info("User ID received " + self.user_id) + self.alm_sn = auth_response['alm_sn'] + self.logger.info("Serial received " + self.alm_sn) + + def get_next_time(self): + next_time = self.get_url( + self.indego_url + 'alms/' + self.alm_sn + '/predictive/nextcutting?last=YYYY-MM-DDTHH:MM:SS%2BHH:MM', + self.context_id, 10) + if next_time == False: + self.logger.error("Error getting next smartmow time") + else: + self.logger.debug("Next time raw" + str(next_time)) + next_time = next_time.decode(encoding='UTF-8', errors='ignore') + next_time = json.loads(next_time) + next_time = next_time['mow_next'] + + self.logger.debug("Next time raw 2: " + str(next_time)) + # next_time = next_time[:-6] + # next_time = datetime.datetime.strptime(next_time,'%Y-%m-%dT%H:%M:%S').replace(tzinfo=tz.gettz('UTC')).astimezone(self.get_sh().tzinfo()) + # #datetime.datetime.strptime(next_time,'%Y-%m-%dT%H:%M:%S+02:00').replace(tzinfo=self.get_sh().tzinfo()) + next_time = next_time.replace(":", "") + next_time = datetime.datetime.strptime(next_time, '%Y-%m-%dT%H%M%S%z') + self.logger.debug("Next time final " + str(next_time)) + self.set_childitem('next_time',next_time) + + def get_weather(self): + weather = self.get_url(self.indego_url +'alms/'+ self.alm_sn +'/predictive/weather',self.context_id,10) + weather = weather.decode(encoding='UTF-8',errors='ignore') + weather = json.loads(weather) + for i in weather['LocationWeather']['forecast']['intervals']: + position = str(weather['LocationWeather']['forecast']['intervals'].index(i)) + self.logger.debug("POSITION "+str(position)) + for x in i: + wertpunkt = x + wert = str(i[x]) + self.logger.debug("ITEEEEEM "+'indego.weather.int_'+position+'.'+wertpunkt) + if wertpunkt == 'dateTime': + #wert = wert.replace('+00:00','+0000') + self.logger.debug("DATE__TIME "+ wert) + wert= datetime.datetime.strptime(wert,'%Y-%m-%dT%H:%M:%SZ').replace(tzinfo=self.get_sh().tzinfo()) + if wertpunkt == 'wwsymbol_mg2008': + self.logger.debug("WERTPUNKT "+ str(wertpunkt)) + if wert == '110000' or wert == '111000' or wert == '211000' or wert == '210000': + self.logger.debug("WERTCHEN SPELLS "+ wert) + self.set_childitem('weather.int_'+position+'.'+'spells',True) + self.set_childitem('weather.int_'+position+'.'+'Sonne',False) + self.set_childitem('weather.int_'+position+'.'+'Wolken',False) + self.set_childitem('weather.int_'+position+'.'+'Regen',False) + self.set_childitem('weather.int_'+position+'.'+'Gewitter',False) + elif wert == '100000' or wert == '200000': + self.logger.debug("WERTCHEN SONNE "+ wert) + self.set_childitem('weather.int_'+position+'.'+'spells',False) + self.set_childitem('weather.int_'+position+'.'+'Sonne',True) + self.set_childitem('weather.int_'+position+'.'+'Wolken',False) + self.set_childitem('weather.int_'+position+'.'+'Regen',False) + self.set_childitem('weather.int_'+position+'.'+'Gewitter',False) + elif wert == '220000' or wert == '121000' or wert == '120000' or wert == '330000' or wert == '320000': + self.logger.debug("WERTCHEN WOLKEN "+ wert) + self.set_childitem('weather.int_'+position+'.'+'spells',False) + self.set_childitem('weather.int_'+position+'.'+'Sonne',False) + self.set_childitem('weather.int_'+position+'.'+'Wolken',True) + self.set_childitem('weather.int_'+position+'.'+'Regen',False) + self.set_childitem('weather.int_'+position+'.'+'Gewitter',False) + elif wert == '122000' or wert == '331000' or wert == '221000' or wert == '321000': + self.logger.debug("WERTCHEN REGEN "+ wert) + self.set_childitem('weather.int_'+position+'.'+'spells',False) + self.set_childitem('weather.int_'+position+'.'+'Sonne',False) + self.set_childitem('weather.int_'+position+'.'+'Wolken',False) + self.set_childitem('weather.int_'+position+'.'+'Regen',True) + self.set_childitem('weather.int_'+position+'.'+'Gewitter',False) + elif wert == '110001' or wert == '113001' or wert == '123001' or wert == '223001' or wert == '213001' or wert == '210001': + self.logger.debug("WERTCHEN GEWITTER "+ wert) + self.set_childitem('weather.int_'+position+'.'+'spells',False) + self.set_childitem('weather.int_'+position+'.'+'Sonne',False) + self.set_childitem('weather.int_'+position+'.'+'Wolken',False) + self.set_childitem('weather.int_'+position+'.'+'Regen',False) + self.set_childitem('weather.int_'+position+'.'+'Gewitter',True) + self.set_childitem('weather.int_'+position+'.'+wertpunkt,wert) + + for i in weather['LocationWeather']['forecast']['days']: + position_day = str(weather['LocationWeather']['forecast']['days'].index(i)) + self.logger.debug("POSITION_day "+str(position_day)) + for x in i: + wertpunkt_day = x + wert_day = str(i[x]) + self.logger.debug("ITEEEEEM DAY "+'indego.weather.day_'+position_day+'.'+wertpunkt_day) + if wertpunkt_day == 'date': + wert_day = datetime.datetime.strptime(wert_day,'%Y-%m-%d').replace(tzinfo=self.get_sh().tzinfo()) + days = ["Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag","Sonntag"] + dayNumber = wert_day.weekday() + wochentag = days[dayNumber] + self.logger.debug("WOCHENTAG GEWITTER "+ wochentag) + self.set_childitem('weather.day_'+position_day+'.'+'wochentag',wochentag) + self.set_childitem('weather.day_'+position_day+'.'+wertpunkt_day,wert_day) + + def alert(self): + self.logger.debug("ÄLÄRMCHEN START") + alert_response = self.get_url(self.indego_url + 'alerts', self.context_id, 10) + if alert_response == False: + self.logger.debug("No Alert or error") + self.alert_reset = False + else: + self.logger.debug("ALARM ELSE") + alert_response = alert_response.decode(encoding='UTF-8', errors='ignore') + self.logger.debug("Alärmchen: " + str(alert_response)) + alert_response = json.loads(alert_response) + self.logger.debug("Alärmchen 2: " + str(alert_response)) + if len(alert_response) == 0: + self.logger.debug("No new Alert Messages") + + else: + self.logger.warning("alert_response " + str(alert_response)) + alerts = len(alert_response) + self.logger.debug("ALERTS " + str(alerts)) + if len(alert_response) == 1: + alert_latest = alert_response[0] + self.alert_reset = False + else: + # alert_latest = ast.literal_eval(alert_response[0]+'}') + self.logger.debug("ALERTerS " + str(alert_response[len(alert_response) - 1])) + alert_latest = alert_response[len(alert_response) - 1] + self.alert_reset = True + + alert_id = alert_latest['alert_id'] + self.set_childitem('alert_id',alert_id) + self.logger.debug("alert_id " + str(alert_id)) + + alert_message = alert_latest['message'].replace( + ' Bitte folgen Sie den Anweisungen im Display des Mähers.', '') + self.set_childitem('alert_message',alert_message) + self.logger.debug("alert_message " + str(alert_message)) + + alert_date = datetime.datetime.strptime(alert_latest['date'], '%Y-%m-%dT%H:%M:%S.%fZ').replace( + tzinfo=tz.gettz('UTC')).astimezone( + self.get_sh().tzinfo()) # alert_date = datetime.datetime.strptime(alert_latest['date'],'%Y-%m-%dT%H:%M:%S.%fZ') + self.set_childitem('alert_date',alert_date) + self.logger.debug("alert_date " + str(alert_date)) + + alert_headline = alert_latest['headline'] + self.set_childitem('alert_headline',alert_headline) + self.logger.debug("alert_headline " + str(alert_headline)) + + alert_flag = alert_latest['flag'] + self.set_childitem('alert_flag',alert_flag) + self.logger.debug("alert_flag " + str(alert_flag)) + + self.alert_delete(alert_id) + + def get_smart_frequency(self): + self.logger.debug("getting smart frequency") + smart_frequency_response = self.get_url(self.indego_url + 'alms/' + self.alm_sn + '/predictive/useradjustment', + self.context_id) + smart_frequency_response = smart_frequency_response.decode(encoding='UTF-8', errors='strict') + smart_frequency_response = json.loads(smart_frequency_response) + frequency = smart_frequency_response['user_adjustment'] + self.set_childitem('SMART.frequenz',frequency) + self.logger.debug("smart_frequenz " + str(frequency)) + + def alert_delete(self, alert_id): + self.logger.debug("deleting alert_id " + str(alert_id)) + self.get_url(self.indego_url + 'alerts/' + alert_id, self.context_id, 50, 'DELETE') + + def device_data(self): + self.logger.debug('device_date') + device_data_response = self.get_url(self.indego_url + 'alms/' + self.alm_sn, self.context_id) + if device_data_response == False: + self.logger.error('Device Data disconnected') + else: + self.logger.debug('device data RAW: ' + str(device_data_response)) + device_data_response = device_data_response.decode(encoding='UTF-8', errors='ignore') + self.logger.debug('device date stringtanga: ' + device_data_response) + # device_data_response = str(device_data_response).replace('false','False').replace('true','True') + device_data_response = json.loads(device_data_response) + self.logger.debug('device date JASON: ' + str(device_data_response)) + + alm_sn = device_data_response['alm_sn'] + self.set_childitem('alm_sn',alm_sn) + self.logger.debug("alm_sn " + str(alm_sn)) + + if 'alm_name' in device_data_response: + alm_name = device_data_response['alm_name'] + self.set_childitem('alm_name',alm_name) + self.logger.debug("alm_name " + str(alm_name)) + + service_counter = device_data_response['service_counter'] + self.set_childitem('service_counter',service_counter) + self.logger.debug("service_counter " + str(service_counter)) + + needs_service = device_data_response['needs_service'] + self.set_childitem('needs_service',needs_service) + self.logger.debug("needs_service " + str(needs_service)) + + alm_mode = device_data_response['alm_mode'] + self.set_childitem('alm_mode',alm_mode) + if alm_mode == 'smart': + self.logger.debug("ALM_MODE smaAAAAArt") + self.set_childitem('SMART', True) + else: + self.logger.debug("ALM_MODE MANUAAAAAAAAL") + self.set_childitem('SMART', False) + self.logger.debug("alm_mode " + str(alm_mode)) + + bareToolnumber = device_data_response['bareToolnumber'] + self.set_childitem('bareToolnumber',bareToolnumber) + self.logger.debug("bareToolnumber " + str(bareToolnumber)) + + if 'alm_firmware_version' in device_data_response: + alm_firmware_version = device_data_response['alm_firmware_version'] + if alm_firmware_version != self.get_sh().indego.alm_firmware_version(): + self.set_childitem('alm_firmware_version.before',self.get_sh().indego.alm_firmware_version()) + self.set_childitem('alm_firmware_version.changed',self.get_sh().now()) + self.logger.info( + "indego updated firmware from " + self.get_sh().indego.alm_firmware_version() + ' to ' + str( + alm_firmware_version)) + + self.set_childitem('alm_firmware_version',alm_firmware_version) + self.logger.debug("alm_firmware_version " + str(alm_firmware_version)) + + def state(self): + state__str = {0: ['Lese Status', 'unknown'], 257: ['lädt', 'dock'], 258: ['docked', 'dock'], + 259: ['Docked-Softwareupdate', 'dock'], 260: ['Docked', 'dock'], 261: ['docked', 'dock'], + 262: ['docked - lädt Karte', 'dock'], 263: ['docked-speichert Karte', 'dock'], + 513: ['mäht', 'moving'], 514: ['bestimme Ort', 'moving'], 515: ['lade Karte', 'moving'], + 516: ['lerne Garten', 'moving'], 517: ['Pause', 'pause'], 518: ['schneide Rand', 'moving'], + 519: ['stecke fest', 'hilfe'], 769: ['fährt in Station', 'moving'], + 770: ['fährt in Station', 'moving'], 771: ['fährt zum Laden in Station', 'moving'], + 772: ['fährt in Station – Mähzeit beendet', 'moving'], + 773: ['fährt in Station - überhitzt', 'help'], 774: ['fährt in Station', 'moving'], + 775: ['fährt in Station - fertig gemäht', 'moving'], + 776: ['fährt in Station - bestimmt Ort', 'moving'], 1025: ['Diagnosemodus', 'unknown'], + 1026: ['Endoflive', 'hilfe'], 1281: ['Softwareupdate', 'dock']} + state_response = self.get_url(self.indego_url + 'alms/' + self.alm_sn + '/state', self.context_id) + + # now reconnection in get_url directly + # if state_response == False: + # self.logger.error('Indego disconnected') + # self.set_childitem('online',False) + # self.auth() + + if state_response != False: + state_response = state_response.decode(encoding='UTF-8', errors='ignore') + self.set_childitem('online', True) + self.logger.debug("indego state received " + str(state_response)) + states = json.loads(state_response) + + if 'error' in states: + error_code = states['error'] + self.set_childitem('stateError',error_code) + self.logger.error("error_code " + str(error_code)) + else: + error_code = 0 + self.set_childitem('stateError',error_code) + + state_code = states['state'] + self.set_childitem('stateCode',state_code) + self.logger.debug("state code " + str(state_code)) + if state__str[state_code][1] == 'dock': + self.logger.debug('indego docked') + self.alert_reset = True + self.set_childitem('docked', True) + self.set_childitem('moving', False) + self.set_childitem('pause', False) + self.set_childitem('help', False) + if state__str[state_code][1] == 'moving': + self.logger.debug('indego moving') + self.alert_reset = True + self.set_childitem('mowedDate', self.get_sh().now()) + self.set_childitem('docked', False) + self.set_childitem('moving', True) + self.set_childitem('pause', False) + self.set_childitem('help', False) + if state__str[state_code][1] == 'pause': + self.logger.debug('indego pause') + self.alert_reset = True + self.set_childitem('docked', False) + self.set_childitem('moving', False) + self.set_childitem('pause', True) + self.set_childitem('help', False) + if state__str[state_code][1] == 'hilfe': + self.logger.debug('indego hilfe') + self.set_childitem('docked', False) + self.set_childitem('moving', False) + self.set_childitem('pause', False) + self.set_childitem('help', True) + if self.alert_reset == True: + self.logger.debug("Alert aufgefrufen, self_alert_reset = True") + self.alert() + else: + self.logger.debug("Alert nicht aufgefrufen, self_alert_reset = False") + + state_str = state__str[state_code][0] + self.set_childitem('state_str', state_str ) + self.logger.debug("state str " + state_str) + + mowed = states['mowed'] + self.set_childitem('mowedPercent', mowed) + self.logger.debug("mowed " + str(mowed)) + + mowmode = states['mowmode'] + self.set_childitem('mowmode',mowmode) + self.logger.debug("mowmode " + str(mowmode)) + + total_operate = states['runtime']['total']['operate'] + self.set_childitem('runtimeTotalOperationMins',total_operate) + self.logger.debug("total_operate " + str(total_operate)) + + total_charge = states['runtime']['total']['charge'] + self.set_childitem('runtimeTotalChargeMins',total_charge) + self.logger.debug("total_charge " + str(total_charge)) + + session_operate = states['runtime']['session']['operate'] + self.set_childitem('runtimeSessionOperationMins',session_operate) + self.logger.debug("session_operate " + str(session_operate)) + + session_charge = states['runtime']['session']['charge'] + self.set_childitem('runtimeSessionChargeMins',session_charge) + self.logger.debug("session_charge " + str(session_charge)) + + if 'xPos' in states: + xPos = states['xPos'] + self.set_childitem('xPos',xPos) + self.logger.debug("xPos " + str(xPos)) + + yPos = states['yPos'] + self.set_childitem('yPos',yPos) + self.logger.debug("yPos " + str(yPos)) + + svg_xPos = states['svg_xPos'] + self.set_childitem('svg_xPos',svg_xPos) + self.logger.debug("svg_xPos " + str(svg_xPos)) + + svg_yPos = states['svg_yPos'] + self.set_childitem('svg_yPos',svg_yPos) + self.logger.debug("svg_yPos " + str(svg_yPos)) + + if 'config_change' in states and 'config_change' in self.add_keys: + config_change = states['config_change'] + self.get_sh().return_item(str(self.add_keys['config_change']),config_change) + self.logger.debug("config_change " + str(config_change)) + + if 'mow_trig' in states and 'mow_trig' in self.add_keys: + mow_trig = states['mow_trig'] + self.get_sh().return_item(str(self.add_keys['mow_trig']),mow_trig) + self.logger.debug("mow_trig " + str(mow_trig)) + + # if 'map_update_available' in states and 'mow_trig' in self.add_keys: + # mow_trig = states['map_update_available'] + # self.get_sh().return_item(str(self.add_keys['mow_trig']),mow_trig) + # self.logger.debug("mow_trig "+str(mow_trig)) + + map_update = states['map_update_available'] + self.logger.debug("map_update " + str(map_update)) + self.set_childitem('mapUpdateAvailable',map_update) + if map_update: + self.logger.debug('lade neue Karte') + garden = self.get_url(self.indego_url + 'alms/' + self.alm_sn + '/map', self.context_id, 120) + if garden == False: + self.logger.warning('Map returned false') + else: + with open(self.img_pfad, 'wb') as outfile: + outfile.write(garden) + self.logger.debug('You have a new MAP') + self.set_childitem('mapSvgCacheDate',self.get_sh().now()) + + def init_webinterface(self): + """" + Initialize the web interface for this plugin + + This method is only needed if the plugin is implementing a web interface + """ + try: + self.mod_http = Modules.get_instance().get_module( + 'http') # try/except to handle running in a core version that does not support modules + except: + self.mod_http = None + if self.mod_http == None: + self.logger.error("Not initializing the web interface") + return False + + import sys + if not "SmartPluginWebIf" in list(sys.modules['lib.model.smartplugin'].__dict__): + self.logger.warning("Web interface needs SmartHomeNG v1.5 and up. Not initializing the web interface") + return False + + # set application configuration for cherrypy + webif_dir = self.path_join(self.get_plugin_dir(), 'webif') + config = { + '/': { + 'tools.staticdir.root': webif_dir, + }, + '/static': { + 'tools.staticdir.on': True, + 'tools.staticdir.dir': 'static' + } + } + + # Register the web interface as a cherrypy app + self.mod_http.register_webif(WebInterface(webif_dir, self), + self.get_shortname(), + config, + self.get_classname(), self.get_instance_name(), + description='') + + return True + + + +# ------------------------------------------ +# Webinterface of the plugin +# ------------------------------------------ + +import cherrypy +from jinja2 import Environment, FileSystemLoader + + +class WebInterface(SmartPluginWebIf): + + def __init__(self, webif_dir, plugin): + """ + Initialization of instance of class WebInterface + + :param webif_dir: directory where the webinterface of the plugin resides + :param plugin: instance of the plugin + :type webif_dir: str + :type plugin: object + """ + self.logger = logging.getLogger(__name__) + self.webif_dir = webif_dir + self.plugin = plugin + self.tplenv = self.init_template_environment() + + @cherrypy.expose + def index(self, reload=None): + """ + Build index.html for cherrypy + + Render the template and return the html file to be delivered to the browser + + :return: contents of the template after beeing rendered + """ + tmpl = self.tplenv.get_template('index.html') + # add values to be passed to the Jinja2 template eg: tmpl.render(p=self.plugin, interface=interface, ...) + return tmpl.render(p=self.plugin) + diff --git a/indego/example.yaml b/indego/example.yaml new file mode 100644 index 000000000..39f426441 --- /dev/null +++ b/indego/example.yaml @@ -0,0 +1,1359 @@ +%YAML 1.1 +--- + +indego: + + online: + type: bool + + stateCode: + type: num + + state_str: + type: str + + stateError: + type: num + + config_change: + type: bool + indego_add_key: config_change + + mow_trig: + type: bool + indego_add_key: mow_trig + + stateLevel: + type: num + + docked: + type: bool + sqlite: 'yes' + + moving: + type: bool + sqlite: 'yes' + + pause: + type: bool + sqlite: 'yes' + + help: + type: bool + sqlite: 'yes' + + mowedPercent: + type: num + + mapSvgCacheDate: + type: foo + cache: 'on' + + mapUpdateAvailable: + type: bool + + mowedDate: + type: foo + cache: 'on' + + xPos: + type: num + + yPos: + type: num + + svg_xPos: + type: num + + svg_yPos: + type: foo + + mowmode: + type: num + + next_time: + type: foo + cache: 'on' + + runtimeTotalOperationMins: + type: num + sqlite: 'yes' + + hours: + type: num + sqlite: 'yes' + eval: round(sh.indego.runtimeTotalOperationMins()/60,0) + eval_trigger: indego.runtimeTotalOperationMins + + runtimeTotalChargeMins: + type: num + sqlite: 'yes' + + hours: + type: num + sqlite: 'yes' + eval: round(sh.indego.runtimeTotalChargeMins()/60,0) + eval_trigger: indego.runtimeTotalChargeMins + + runtimeSessionOperationMins: + type: num + sqlite: 'yes' + + runtimeSessionChargeMins: + type: num + sqlite: 'yes' + + SMART: + type: bool + visu_acl: rw + indego_smart: 'yes' + cache: 'on' + + frequenz: + type: num + indego_frequency: 'yes' + cache: 'on' + + MOW: + type: bool + visu_acl: rw + indego_command: '{"state":"mow"}' + autotimer: 5 = False + + PAUSE: + type: bool + visu_acl: rw + indego_command: '{"state":"pause"}' + autotimer: 5 = False + + RETURN: + type: bool + visu_acl: rw + indego_command: '{"state":"returnToDock"}' + autotimer: 5 = False + + alm_sn: + type: num + + alm_name: + type: str + + service_counter: + type: num + + needs_service: + type: bool + + alm_mode: + type: str + + bareToolnumber: + type: str + + alm_firmware_version: + type: str + cache: 'on' + + before: + type: str + cache: 'on' + + changed: + type: foo + cache: 'on' + + alert_message: + type: str + cache: 'on' + + alert_id: + type: str + cache: 'on' + + alert_id_send: + type: str + cache: 'on' + + alert_flag: + type: str + cache: 'on' + + alert_headline: + type: str + cache: 'on' + + alert_date: + type: foo + cache: 'on' + + weather: + + int_0: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_1: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_2: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_3: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_4: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_5: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_6: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_7: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_8: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_9: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_10: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_11: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_12: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_13: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_14: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_15: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_16: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_17: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_18: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + int_19: + + wwsymbol_mg2008: + type: num + cache: 'on' + + td: + type: num + cache: 'on' + + dateTime: + type: foo + cache: 'on' + + tt: + type: num + cache: 'on' + + wwtext: + type: str + + rrr: + type: num + cache: 'on' + + prrr: + type: num + cache: 'on' + + intervalLength: + type: num + cache: 'on' + + spells: + type: bool + cache: 'on' + + Sonne: + type: bool + cache: 'on' + + Wolken: + type: bool + cache: 'on' + + Regen: + type: bool + cache: 'on' + + Gewitter: + type: bool + cache: 'on' + + day_0: + + tx: + type: num + cache: 'on' + + date: + type: foo + cache: 'on' + + wochentag: + type: str + cache: 'on' + + sun: + type: num + cache: 'on' + + tn: + type: num + cache: 'on' + + day_1: + + tx: + type: num + cache: 'on' + + date: + type: foo + cache: 'on' + + wochentag: + type: str + cache: 'on' + + sun: + type: num + cache: 'on' + + tn: + type: num + cache: 'on' + + day_2: + + tx: + type: num + cache: 'on' + + date: + type: foo + cache: 'on' + + wochentag: + type: str + cache: 'on' + + sun: + type: num + cache: 'on' + + tn: + type: num + cache: 'on' + + day_3: + + tx: + type: num + cache: 'on' + + date: + type: foo + cache: 'on' + + wochentag: + type: str + cache: 'on' + + sun: + type: num + cache: 'on' + + tn: + type: num + cache: 'on' + + day_4: + + tx: + type: num + cache: 'on' + + date: + type: foo + cache: 'on' + + wochentag: + type: str + cache: 'on' + + sun: + type: num + cache: 'on' + + tn: + type: num + cache: 'on' diff --git a/indego/locale.yaml b/indego/locale.yaml new file mode 100644 index 000000000..24b310a74 --- /dev/null +++ b/indego/locale.yaml @@ -0,0 +1,11 @@ +# translations for the indego plugin web interface +plugin_translations: + # Translations for the plugin specially for the web interface + 'Wert 2': {'de': '=', 'en': 'Value 2'} + 'Wert 4': {'de': '=', 'en': 'Value 4'} + + # Alternative format for translations of longer texts: + 'Hier kommt der Inhalt des Webinterfaces hin.': + de: '=' + en: 'Here goes the content of the web interface.' + diff --git a/indego/plugin.yaml b/indego/plugin.yaml new file mode 100644 index 000000000..012d8e848 --- /dev/null +++ b/indego/plugin.yaml @@ -0,0 +1,95 @@ +# Metadata for the Indego plugin +plugin: + # Global plugin attributes + type: interface # plugin type (gateway, interface, protocol, system, web) + description: + de: 'Indego Plugin zum Auslesen von Bosch Indego Mährobotern mit Connect Ausstattung' + en: 'Indego Plugin to read outBosch Indego mower robots with Connect interface' + maintainer: marcov +# tester: # Who tests this plugin? + state: develop # change to ready when done with development + keywords: Indego smartmower +# documentation: https://github.com/smarthomeNG/smarthome/wiki/CLI-Plugin # url of documentation (wiki) page + support: https://knx-user-forum.de/forum/supportforen/smarthome-py + + version: 1.6.0 # Plugin version + sh_minversion: 1.4 # minimum shNG version to use this plugin +# sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) + multi_instance: False # plugin supports multi instance + restartable: yes + classname: Indego # class containing the plugin + +parameters: + # Definition of parameters to be configured in etc/plugin.yaml + instance: + type: foo + default: 0 + description: + de: 'Instanz des Plugins' + en: 'Plugin instance' + update_cycle: + type: int + default: 30 + description: + de: 'Zeitlicher Abstand zwischen zwei Verbindungen zur Website' + en: 'Time between two connects to the website' + user: + type: str + default: '' + description: + de: 'Benutzername wie in der Indego App angegeben' + en: 'username like used in Indego App' + password: + type: str + default: '' + description: + de: 'Passwort wie in der Indego App angegeben' + en: 'password like used in Indego App' + img_pfad: + type: str + default: '/tmp/garden.svg' + description: + de: 'Pfad und Dateiname, wo die Kartendatei gespeichert werden soll. Es müssen Schreibrechte für SmartHomeNG bestehen' + en: 'Path and filename where to save the mapfile. Write access for SmartHomeNG must be granted' + indego_url: + type: str + default: 'https://api.indego.iot.bosch-si.com/api/v1/' + description: + de: 'Indego Webseite für den Servicezugriff' + en: 'indego website for service access' + parent_item: + type: str + default: 'indego' + description: + de: 'Das Eltern Item für alle Kinditems, die diese Instanz betreffen' + en: 'The parent item for all children relating to this instance' + +item_attributes: + # Definition of item attributes defined by this plugin + indego_command: + type: str + description: + de: 'Todo Beschreibung ergänzen' + en: 'Todo needs description' + indego_smart: + type: str + description: + de: 'Todo Beschreibung ergänzen' + en: 'Todo needs description' + indego_frequency: + type: str + description: + de: 'Todo Beschreibung ergänzen' + en: 'Todo needs description' + indego_add_key: + type: str + description: + de: 'Todo Beschreibung ergänzen' + en: 'Todo needs description' + +logic_parameters: NONE + # Definition of logic parameters defined by this plugin + +plugin_functions: NONE + # Definition of function interface of the plugin + diff --git a/indego/smartVISU_dropins/icons/ws/lawn.svg b/indego/smartVISU_dropins/icons/ws/lawn.svg new file mode 100644 index 000000000..70bd7a8b3 --- /dev/null +++ b/indego/smartVISU_dropins/icons/ws/lawn.svg @@ -0,0 +1,163 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/indego/smartVISU_dropins/icons/ws/lawn_2.svg b/indego/smartVISU_dropins/icons/ws/lawn_2.svg new file mode 100644 index 000000000..7733fa339 --- /dev/null +++ b/indego/smartVISU_dropins/icons/ws/lawn_2.svg @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/indego/smartVISU_dropins/icons/ws/lawnmover_2.svg b/indego/smartVISU_dropins/icons/ws/lawnmover_2.svg new file mode 100644 index 000000000..a2c4d305f --- /dev/null +++ b/indego/smartVISU_dropins/icons/ws/lawnmover_2.svg @@ -0,0 +1,42 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_dock.svg b/indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_dock.svg new file mode 100644 index 000000000..fde2eb34f --- /dev/null +++ b/indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_dock.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_docked.svg b/indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_docked.svg new file mode 100644 index 000000000..e38c8d9c7 --- /dev/null +++ b/indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_docked.svg @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_help.svg b/indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_help.svg new file mode 100644 index 000000000..2072050f9 --- /dev/null +++ b/indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_help.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_moving.svg b/indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_moving.svg new file mode 100644 index 000000000..b36c8f7a0 --- /dev/null +++ b/indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_moving.svg @@ -0,0 +1,155 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_offline.svg b/indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_offline.svg new file mode 100644 index 000000000..e03391208 --- /dev/null +++ b/indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_offline.svg @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_online.svg b/indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_online.svg new file mode 100644 index 000000000..5b4ebca9d --- /dev/null +++ b/indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_online.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_start.svg b/indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_start.svg new file mode 100644 index 000000000..8b906833e --- /dev/null +++ b/indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_start.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + diff --git a/indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_stop.svg b/indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_stop.svg new file mode 100644 index 000000000..441912db9 --- /dev/null +++ b/indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_stop.svg @@ -0,0 +1,11 @@ + + + + + + + + + + + diff --git a/indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_stopp.svg b/indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_stopp.svg new file mode 100644 index 000000000..50deb483d --- /dev/null +++ b/indego/smartVISU_dropins/icons/ws/scene_robo_lawnmower_stopp.svg @@ -0,0 +1,31 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/indego/smartVISU_dropins/lib/weather/pics/cloud_10.png b/indego/smartVISU_dropins/lib/weather/pics/cloud_10.png new file mode 100644 index 0000000000000000000000000000000000000000..a79a034809bb43699785cb623dec79c88bd7772c GIT binary patch literal 69934 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 K^(%B;qW%XMjt!0g literal 0 HcmV?d00001 diff --git a/indego/smartVISU_dropins/lib/weather/pics/cloud_5.png b/indego/smartVISU_dropins/lib/weather/pics/cloud_5.png new file mode 100644 index 0000000000000000000000000000000000000000..b6acc62b8816a547c163084fbe3470830e9a6368 GIT binary patch literal 60220 zcmeFYV|OHM6D{1`v27<4+nKOq+s4GU(XlnLoeZLxbZpz2*qYd!$ z&sD4TuG&>steT1}8Zt35002Ofmy^-}0D$2C{3%5E|E#L&wbMw0 zolguFJ+=(k%%ysWi1=qfBx(gz87#bvi6PSaMe=3_4KBBilkA*%*o3B$u00tlx z$Q->I0B%yFPP%)v9vY}x0In^qr85lOwvbw|DIYh1*Vk)P6wvlPE5ra$ zYX}>`ofC5MaVeR~jI9WO^vwc<$i=ea-Koa(pRrSwillN1zcPLyr1`>`OF8y~OXYRo zFytlBLY3(Dcck!wY-U4D)?}I+!5GPHd0=`fW_tV$>|0>EOL27(?IeEj8@!c2Ur`zg zAc}gPHqcpcY>7d0U^dk;{RjjuE)N=HH2oD}3OPgq2+2aFSmYG5I1*dwlt^rB@VOyH zMT1##EPbEXm6EcDEsreY1^Q?KfiKqjxN2V)Gh^{rW`|a0XZx10SwD{MlkC+Iwz=yYhr@z9AD}F@|!*@GX?&bQ}mDS(Y^Q%d}XXh~Q zx;`t#e~|BnkUeP|m>!sukE$NTKTF(wBlH}D?c;%NNECvpN3giy`npfAx=~-55Qu_v z9dK>ED1aiP*bH~Gz#9jQo|zGV{CfBWxabvMA_4e2kKm`sgWZL?%;N|2!+e|T4sQyt zoYRU+h%0wABktBRVG}8*7lfUH;8_e0g^+W=v>AVP+}GSwKc9=)Xe= z_rnj&&=^3pW+;EqfApHDArOOc1mIVD->6R0${OSKN{Cq5flo!(}I zrL>F)J*LD*L@}o^mjiu`i%HFph8YFaN>65m2U^}ChBDrM!&}ub|6+T{X612YA`@7 zE<}A!Q_ zQ`|G%qi?<{R1j;3d`Hqk^5Sj`^)Gx$d67w?vtcA)7)~>!)umZx;-`ExDr9h>yrk`x z3;rHh@#gj{`iulu8dd@_3@xkID3RHT=qv6^r&gYo;Z))@{H1kWziTx}ui#57Noz`5 zs8KQpthiO6;fbh}{W9MI^@0kn!mTop$?}&X%yA#n-d!Gd-pO0hS_K>s9)J#r4>ZRl zQ6tPp5G^e^#|VcBn+Y$qc(gmTo|y8qa<$;KDz%Tk`Tw}lj@Qo9cKOkz`Q^v+533(e z+76ll#YyV?+R19ux?5$z;z1VZK}n~i7x}xNhY!~mA-qbw)V!H?q%+5}*>ekXcgwhT z7Yo95pGyX3ZWhL7e#{8g@YX8NdoSbL>e?2~29If3`*SvAYfrEpmM2B2K$5gf3? z5^7T~0yi4lCfhLX`V~cj zx`tXr_?;Mzn3dO_r_Du)_kqL2(a0gNAJ(RiYm{fj$$b)+&x=EuzlQUiJA9IK64ttX z@@4YZ;nbnTt--B0N?c@?bfI+FU_EU=*MNJCRo;OIbI?!NpEWugIutcz)eY6B)t4&_ zE3hlojVJZb8%qnB4u)R>`jhOBY?{YvH!dPOb40d+lm9s(zWQ4ksJ=+Q$M{P(VR{@(!czCXtkTM<27*F+T7Uur+qLW_q@-f zSM)Ue>FE{s_3nk~dFrv|A?Ud3H0yBrnE&K*yL;lp5x_?&VCK+cR%}hlUr*)AHNt2s zt)|OCE5Otu_@o|V7b8$kgNu%ayn*i@QrIiJ)6v9%iBH(XdM4hY{Y+D!vnXua9af%M<_-}nUzUsZQMk*N;R4bxGm1WzOF zEx1=|fHb`;l-yU=$<}RzRZZYr@-K(jkCH3eDl)4?3LQ6)MD8S*B-x?ja2`#yX%)+ zt(*~0ORrb|W@2_?SYl`18Q=N(-LGujz>0yk^56SGjLmmr{CrzlLEP=1y*ylUzN{3o zwy^fGHaGb@ifGm9bwL9y4Ue0akgcWN27jK*ud(Z{>RxP!uTpJrYT;=tc4>wjWfoli zod4;v-^vQtDys$12e`p`aYSj5rO9N zKi1Q=DF6GHuP+z~kqFV~(&T^bUF~fJs@+yp+1(fiFS}3PtFu0 z7yjd`kznz$YJ9EkNj1x=jJ-Hz>^M|Y|+O@=p@M60?U9Hy29UydG%$gcAW`d5pTgPqCU zNd7wt_zBSlI zk~bQX9AbLkyDvFByq)}L(_mxs0f5QAeUqJ*fL~@nW_W%G;aQ^pzfZTjS0Dux8 zFD0(!3q0$TZ=fCZIwI&#Y?&vyv9i)GL6+wG!vd9u!?C3M>a(Y090+#qwlnTQw z9`$BCN!si69(nM)ThgoBBTHV>ci2koYy~r>(EsQB-ym#PrGwu!3ssX%>#+%=N+7g8 z&7#w{q6I45nn+5tSGSoxXGe(~ksk+H0LsTSQKe1h&5)0OE2E?G+PKnPTbG7?7r@?& ztm(z{J}ppDC-#$k*u%>B0our{dPBfv=cB?((Cs8YLb8!quxwRTRl{?j39m9Y0zh%< zks|nMXOW=$X|U70%ISYe3GTx7Wib*ng)-hXumF2pydN(%{D0|bar4iQUMGO)TXxQDFgcdPpebQPWWdMKK4g%;hmYu-x6YnB;$ zh+ej-sEvHST-g}tR_WOj`1ylL;Gv7&J|cUtU>O#vh7;6LEOvDw%O8F8a&}fdlu&1t z5qR#`M2m5bGWIgCWK$1I2MBy;Z^RtHe23d^2JG)M@OVtEwbcsYb`x2<$P+$p1_+ZZ zAg+`urwD|Zy;6r#zV)bpto)*fcQ<^tCUt*mQ$3|_;q`R$^a~dSyXFpO=?5XqUSWDVX^d zK82sOuC=Sp<7g^r@8ihJP)O|HSg(gIdgeC;_mYd?VT%N5vb$-y_n$)8!Ll>G zH7ZOJs#0yDQB}Qov#{BES!#Apo%(Fm`gH0N5^z815`6pa-2A%z81nH*ulYv6JV%1( z0O~noTWlc00nwdAT%csPj%L2mM)Yf5G$$!HsKhu*p_;NC*lc*@&r4 zoxpiis_KQlj%*?2ZM;*+y>7^TMbpNIs=oSrv!#($`U%uDP^$qnVPk?^k3dW4n9#&pgttS;7BR%|Yaw`j zvok=K^)kEGDZ9BfgrpFVwuz2@YbkVyw?po>X@)%QONXdnGZ@tW-3>4Q=Y4LW8*yA^ zXi=D_dryX;6%a!Gww>a_~k!~EpIr6f_vkTus=zCB~o0XgF|v2nj2|`MCc=ch)i8XXPKRcAQ5N0;kb5S z?Cj!tYXZXD`yeO=1c@sUFKT-?0_4tAbTV-7tO1N@aR_U>eM%V=b9^dnX2!uET&B~@ zULLlv%qNdwv|X|E5X~sYb5&oyc8QEme%oET7}P|_hhSSDCW)ePDD2w6S2UjD=Y&G+uE7u96npy(&enIEEk`Rt8P52>sP4`wM%&0 zhKm`i^OA1mmXFqnHKF73qmZ}ZkcZ)rD};}~nseyqZ#D|H$ev#mdXPn(roY2tLUY(S z#t$_3vsV_iWrl}T&gIS-c^F_Zsu_Tic%7(MGt#bNYnSae9Hg+3)+TIhS>r1rfW7yk zkLRMx?(0OB*SW0CpqGsYm(KgeH)hjOYYcK>JrEPhJk6Tku;+u3SbM*^L?Ur}e-9oy-q& zx8F|1B}1N9U!<;YwAJ zl=xlHY*GID$)>-C-FbAk{sMi7$Lqr=!q)SY z51`I_#>o0r*fRvipWV&b#RE9B!5074&1f@tiTM#9R5eZ86Mfk1ls}_JGW%v-K^8(9Zk9BV}|eCbl&=jf-_!>qkG=_R2@$ zL!YO~ja=Auf`S}$oE`RC`;>lW_TZj-d6Vz^wzJIYWKxV*81_+Rb_x*y9IMaIorbZlNLb@FDep0)bS{;F;4 z5S0ayiH-Wc+B_mByB(Tk{iiX{LO+ADaFqmX?qQ`Wv~DgPz7Hq3du}m807({^Z=(3S z?zmRS#tJ(7`U>aA3Le+=?Dv=gb_6FbzH|Ni)Gg21G3&i?1Z)-}>;$mnTtt~}U3!;l z&W1N%CA_ShqdPr*02D&nTK%s=Btu4QxYwkA)x>|4Oh;{%rf%b@`DW(F-Qe7a`1-zjN(oDm0`NSIlfx>Bfk47{)5cp1E)4` z>-~I-Zx^~TgPjey`rIkdh&{2D!Z8)#?*~lp|IGrwTK?i;sith1Z6(>Yb7FEo>LPL;Gg5 zXdAJc-?vr9Q)5RJ5P6Ze_ANnR|IQHo5g;qhEa)JxJkbeZKg~DLpX_XSnAx;ze@6=o zF1bYS-ozjiP1P^>f<-{v{pa7C|L2A@iL{I(Ke2t=+QE?Is3&-eun)Mx=(Y)jTjj6K zcIzG6pA{&Ki9a#q87r3fQ;n3IJ9(pZo+?BC0h{J2R9|X$iTXYm#C6tv9y$pMKkKDj*k3bs$;D-AT%*4`UgT9}J*8$QY@nLcQ zRv;g9TV;W93D-&)qes_O~rCs@_MS&NbD2wq1#c%gzzE^uwXXd*pkpd#)txly! zX*hIXIYVAh`w*s1bSW7}F5K)Hq>oAn=;xfJ9}EuEmLO&tN9Jc9Fg{&#wN1vQy!vq(B4J3FrLt0(uT25#YBrD-SxhNsAPX}t zYv$ZPYuh$ZDgR^&l3W5F_O9R z(KE6L@&T^X_h=hpa`Wb%Q7e-Sm_(Nf(Fi-gtg+!3g}Hpv|NUzE0lG*#6BsogWXzq_m}nR9Oe<;3cyG@Tw1&4g-VGkuxR=>pE& zGu*0FoYG8a4Are4RLd*+ca1F-vwgx&+u7QXTQ3Y{#`#he{o1lAv(MUwy~*U5f1^=8 z)xOQ2RGU9Dib*|4HAWk16uI7sGi#zgKv->Cr8{fNy&wJp{8?}t3%pU!0D*7{Gl2pc z5!OUFD1xllaca$w%~71+{CYuuwD1=Ecb5`3(~%=mwlACCt?_=;9EfFN<>pM zu&98A0AP}#t^=q(54Dd(qU`lhvVjiQ8W$9yRn={DcYg|L@^}f2@fmB3VcK##e};Bu z({cc}QEp5;c}rZ(nr+tx$=7r$V1Z02>Z^NE#OKH5Oej%~2MNEkzyI>GRpUMz?h{S=^(k23Qugv#??+rXn42(V!xz*!~C1^bYDe!bxe%XKd*JtbtuO@ ztOU=Ov51HB2}1c-PhiElSs6r~$M>f8l)IFAN|8MDp^8VFx6}KP5_ItM6|89bNg(-(LfhbOcLY_5GByjH^drr8=>e7qX8kI7qaZ$;UvSHO^T{q*7fzyMu&_i;eNqi`XoXi zlD?&HV$l|6i3tKasaz;QF zIV`z`I~pKl-9MX|ods@JWKNWuBRiwA#XgAk>TE-u)YCpgQarvQy{Onqx?ioc`?UY- z?s?7Izriqj5K1uaN;XVu@DLK0Vj38@yL%1G?16<$KMxj%dM4Pq8ZZ+Bh!SV+4uHc( zJ&3xQgzt+-Jv4$l9a689X7VBIPT~Ea3~O|3AdanTLtyfx{BkuIImSXYUIU<nIg zva3sKEp2s5U@5VUfyf=ZJwuR7i_fTr2sjtg;!<;r6@-!h<)W8D$K6xBj->t!ZiYLD zcm}%ug8jV&83K*j2l859kjh%Sp`D?En=&{BiC~FB3Agt-i2$f+O_?T90>|7ui+~Xt zKo}zyc@ii=D?$C_6Oj5jIq@$J81LxBv8SW4h8?QVn*g%wlxd)0FE`}EascU=Prv3a zZKtIX`S!KL62+7vN41$buJZ}-t8IBxB)d`!Oo$zmjBicjO>g-q3Y-edu z9qiH>;&*9s4&01r^JXV88e@^7EWkcv(q~>dJIQ?E*ti!&|JsJTH&;N)YwZR4dHw@* zTin598CzVz3|k3ck&QF(6t5w7)CX6NbTnI9@5Np4%Hr+fvFl-HwoW&hNMfIIQMspH zGikB~Qz46?8eyZy-PvyC8D~3(>|H{p!2wrHZ+*@=4ZNNKS;5#RV8Qb^!R|Mnh(NR1 zi#4s*(8zb4OdjLk0y%$PrZoQ>US8InK*mC!%bTCy_-VVHk~3kkwSm&440sAOjY*me zn%7DiwUQbsL`Qld`qAOw)58A+o0~r_u4sz(MT$LDe_e0p{f7J&|5a@uCJDPB9!Y$= zC$!wlERL#yA%N6rHjLbJ7DMtgkcPt!$Y}uI-etXw7#=8Y94cFo0_G7%4pU6$H!|P| z7>v(h4L??pR_Rs(isYvUtiG&H5g9nFPW8yFO~Mkd{vp*FH-!||lbQ`BQw}v!5(FX} zSPs>{qnO;tmmTai?{lxAMoz$b3df;($U-t8o|Fo)a2u`=XFuyB83`fZxpZ15UfI4M zrL!C4hkmv(MhKfQ$bznuk9eGQdzaK(BcVW6=86)~(a!`sCDs#niCd z^_qm#f)AkvRvZwif_N{mz%V1vx%}o8Lo^@}t_Tk60AY=69fx7Zp?_7< zRv(ws2ketpimR?G+!dkN?&b89>R6$hrJq_B+QZ*wEBn$Uk$AeF=iUejVn8`Bxi7@x5->0k zEx*s@BU}+eL7&bEe@&`&gI|T8%B++qL@mjbCs%SfJ%C2Ux5r3B|KN0P65RUQHgE+w z=Tl4Wc8O`;-Bn&3_ruZ=Q9s3nNY9o%19>BqZ=9+kSTk}~jOpNBteJL*1M$FX|?sD8e4sYo4JhKxrp>@ z{WY?1_B4RHKK?;yV#GlTKlTuHRPs*_DJ3L%r)?W^CTu&N0-W9X-LoP+dt507doo=3 zQ+@%hpaM$R9rm6Cw`D^4m#D+vuKAaaoOPLJE&b^ZfG{j_c@3<8FvinBp%m;4Q2lll zypWu%h>|jj3P6}Yl)(w;0DCW&-DBHWqoyu-`qc>$Ub&$p>RU493L*d(Hat$uQTAN5 zh6~!Xcg^{S4wENy5{B>$H{PIVl`Ij&HOAd2w9zY)+zpTxl#0Qj3ZvJ@;TR_*vWVrt z4cKfvI88u*MiXTn*Ecmr!^07QHsF{H%BHW;--WLoLj?a7Kkuh4A({J3fS~k^T3uN#DW2Io&vbcP_=psu^oiyQx5L&_I2gp3iCJim|iX$7x;r}k^Vwa0%Yf}KcU$7Q?Q9V{A0A6DFbrsHyj8k%oh`#Y=P|~p1`8nq zs*s;;DgWJ7pTePpuj8N_3ZDQ1=S1l~ZNuST$tBFmuXu|@S5-6(MBpGr$Y8>;!a>XR zf1vz^voqJI_YdRTO**V=H{a()#@xJr9rv2V;y4+L)x(SrEB`|znYcz#z-ZgXN5t`~ z&rgS^Zu!2${GC`7BqDOSk>EJnym=Y7kq}I{s(YQge{i<*%Ytk9CQVh;t%+2_#_j0z zH1o#$MxVRTsoAhp_<>QF>!QpqAnJc;#mzENl(n$t(!J50wY2^x%yB18-H0D14Hk86 zgS=|rTioW#oZ%sh*a^|txcXKz!YdJ*U)McF@o>|lOK1jYMIVt&>29M(2ge8|DAxTGEb!=N_vUh(JRI%f}_ISt%4w+vbwog8K*6v~fnsl~B#^-3Q@N$uGz4(Rpu(xG`3>-?pG)sb zmPc?D;pk0Hm-_wt^=GY%Z_m#xHFUPOyKa+>dYXgkz z(a$(*vYXNPou-@qw{dAYc=k{)(?C&T6HezGZ0{2^n$sOw?k*K^?Go~wP~F-EE1k=# z*_N$xd^zqv=x{fx>EGcg0raiQzmc}bk;LZ~-b}<;xJL3EH%VC%b=J)$NQ9$uy-$p8 z^^y`(VX4j&>izgyLiXfc94pnSmPQ?XX06nlh3lSsfy6RWfr%9&jPeaw1KLlZC@$g4 zc(BC%xrpSSJ7%vJ3m;ngHU#5?GlFPF$0l~;ApGop6S0RMNQ{LkWba;z+uIk&SFpbo zeIf*MPKg9lr`fJhrQM`3{B(Mes^`OS-sE;33tzP{Wqlz^Ya{L<3REL&aF*#GAo{0Y zw-X61MT3@{k!W?15g%3(x1kNb#bAN+LR--vrD!oM+6^%Pf_vWKswK;_*2kkzk+uH~ zEGwBu)5?ho>=$J38{My}36w3CZtJzqgc;*^XWW>`pUr*O9KZPx>SpDkMcFrU8i_KXVfj) zhUP@=yy(D1XB?L37xx*wH=bByxcUPaMvkaT2G#k8GllJ^K|gO?dId2LB(>SpqK>C| zvB|j8)5|^N+xm4ct3|W-IRI3m(}RzYv|x5@X7#EWtl|psCX$c(O%<|kjh`7uWM*3@ zx#V=D>1+2SNtdc%NwRYEd&D^OJUtEPY!8p=i?NQ9=|MTXR5`F-Z^EW(BHqVACu52^ z88&%aCJEd1+jJ`}roxd?7z)x77!Q>DO#mOj1bCsxloo9J0nQS$Lxv#17D192VbQTE zL(2_TV$dtox$vxinPvHBA*J4sd&0@2h(R=n(L+42wKl$#XRMp%(;mjk9K(n!cO|g5 zjQZGy%=#DOGf~pt7Gz=5$Ofw5ZvD5U^xRw1Z#*&_@Mr3xZeVUn^9gR51WFAz2*-u0 zV&q*Yv0Xmup~1rN#-CJ=<%zwNiRA)P`hu3$%7LP%*#ABsx0!-606qH{!PsN5oq)_pRlP!9+$R z`(%76u%2D4=8Vw%|K9@O&Y_e~?l^L`WC~Q-GyUtZUuGyUL-rWq*a_k_bjQtx0Z4ct zt6`FXwj}a2+|PH_9FQ}V4j6WQF|lBPNW3N~LM zeDAoAl@6@G02u*RFsP%3si{1oQ54YjA~0g}K^97U%Ott4(Cd*>a<`+dbxq)GlaUag zBY!vxY-c3&r`e4~&r4pZ$2!chT-9`R66N=?jO+evt2w+4P?IPsk0zDq2xkCZ@G?R7 zlasy%j&>yCdhpmFM%Fm*ckx_|rYE+}HmJ5%CX5|JMbiFPpE9@}{Ms>TL5X#BG6+f( zEu|cOYzcwiUlYC!KO>3)khuuMT<|5|zM>|5eS0zq zLt+n&rXZLv`*RCsfe}Is=Y#u(sARAI(AFnjE#t456RYL6w3Tb`ej1Xb?){5KtC$-`Sz>-HK7nS>!%7N#^w-Nh)obbW#4Rtp7qOEk23&Cgehc58|}466tYno5Q; zjQh-jf>(n*`ykq{iFmuL#&D!~u&BHA#l5m+cRwTH+ODMPd4)gh2*L&^KnRtCt&i9# za*|w}!iith=#^&nnfUsNDOQQA?1M!$9QJf(;z*+61^^sgz%X6RtXiH)*>WHlRBfJl z)6=~jdbC=qm;1yfG~4^P9JRDZz9kwT3^;z(cXfiu=Rw;?FvhEkGBSd4>tq2Zn z>;|jzzBYEZBaWaW9%h5OjYWReI_7f$P1AX4k4-Wm0|T^e3R#q0$)i_sfTG9bOF-;N z_77tN@IL+)nF@bSA8ud6YGC~TI$Chf)5~&qp^Zx?Z@~Hcp!>7C*p^G1e`7YQO97h; zck3;ykp)v`kVo4A-n*aA5B+-uW4tO`I3+*Ru+VBs-7F=?zy8D`D-_d7dk_-qgDUk>5RvXx>k$(XIcA`^MhjnY zgMB!ej}sbC5asZHHkaca&3I^@Hr$G5;jV29Bl|K!-Pu52;dkKXpKkH5KiM8dL2yQP zG@WJJOYe}92jz@rSt_j7D41a)#^WS!CRAGn{=Ccjl?#9BS*+%ruCyvVV7ieBR^}E3 zt*6O)e9;@r#@o-9%SgsYYs4Uke~AVh1g!!6D&3K8`i_cE#ziuTsa{|LNyMW1V91T; zU{sHgJf?o6<3t~T0B!k5I`Jap3!W*BVl6D=?WQeWr@59eu#6Ndud#Vvr$zqnI5hu| zH}A+));yR()sVj(Y`q=w=LFu}IgZ!=kj1F&ZL{$5ZZn`+c#^PGN^7jc9Mm+TG0Dkl z&^>8uiL65wkdYm7^hPc$pf*XkwaOj}9YuV3r-c?wQ^_6KdNIi$K4Zc1uoFFm(oY1| z{w(Tj0}z$swu?bxw$nJI4x~9S^=5)Wfbe}pOC$zVieg3BO(M^3sS! zgb@Jbsekxn1XigB%Zby3HVn6HQ|8bBK-#^{00s^j|Mz-?Z)rnGCxd6OvpWX$0iZ6_ z_;7+-pZ(9FLY{K$J*hVKp}{<)Vvg-4tTnSNl$zz?@aIhG>1Y5xW^ekR&s7~+uRSJZ z-ib}aP^$^(q?|Cw1^B8sX1v{wpftOgXFM;efP+Bx?x~ccX}!DBcbe%sg(pvCO)>9& z{W0~r8}RxsTy-n(R@o*`9&T(@^C&Z&eFR-)dXe0?ckI^g^%r)w(l!Niis>OOrN!XH zmLL82mhWCC_G9V>Q4EfI z|5X`jD}G70K@HbGuQ!1mPe^6CDZWaQMA)*pBE6{PQJ*8MsdhDt8Cb? z>gg34TEM`3@~z_iu)q`g34x_+}+Y7V#NTcgka-B&PIXl!ISp+YuOjlv{$wRbVW>4%u5vi$* z=XF0#x!nl;UvT#(N7o;Dy@tmf&u4R;sUwVR#$z2^zmUv(Uu?l$sh)huOqjoY9^mSG zpD%uu7SAADY>e?&d9GG#vhA0P4X68;(_13++Qs0I=}prO3MLuR*+cH1Du=hF-^rj9 z#Ss>oY^V0#VdkE3`)rW7VFao^@OTwR#wutb2+JQz*&r$W4X4c+Idnim*<}yCq5h z%e9Z0hiyXxPc6(I&)CV$5_=MQ@hUCNmlHpbBE6-JovuTPw=XjH#-BqK06M z>fd|Bae+@3zoUzD>a4`+>^i-)nU!`|`u$BpBCwBH!aDS`q*!z6Qjr`_+)9j&*~jX@ zjg{3lYyLUiNq=2BTl1&ux_$gswxrWU@+Cu>+=D5Elxz1LoF`i@vL+U@&#%8*YmKGZ zwF-P>Z2gbiw0q*vKL;5&^{C9{98b?&9Ztlxju5mXTQW7Th4F&D2czJcudn)>2hqVb zWPCC|u<}Nc^23nB`I!lydzqZ84U?XA%mtW!1W(RlV~JRBM`kM9&6LIiVWk3g-2meZ z2V?C9c%`yu0tB$QMnEb62V5k~2ucDM1&`K+1ha-WUSNYP2!5M^5D7J6#{`NomWBHL zT%P8?4-YXo=V8zX520NIGRd)c&yWcV?xK?K65}RjG`Vd(^xfYZ!bl?e^GND)EGu(W zN8!LX{tJR|A-5#N#Tb+5?RSWUW7NBT!^V2FZ-iO^o?`Q77Ql8jt7DGaq$7S4zl_w1 zr`Km8w*yI;k!WPzHbDw}7cAIlf=zA*#^nSY_}o^%Vxs-r!>Gx8b_~RkVgmXu*5H0n zg$g)ITBG4DIz2;&k6Vh3d{orFP?Wd&VM3|}VKt<6d08l3F4{|I*def(zTwZDSss8R zqd(;SQtuawDsw@jGGimzkg?6dfnB2kTD;`s#OS|=8OKyo7K7D}#=>lVbU)V@EIP1& zKzWT!3a4dzK2h}d$y%I=Pwb)0ICEa9s z>uA8&?{6y)6%I;sW@i93P2wUTB2!veE*TJ%17dcCg$FRyhmL*6Oe_0ST!R^nU#?R{ zXX)CDGlQ7O2uz7Fd)42LASPa(a}xu7C!i`6&$A(?NdUkW$o=6EO{F%3Rfrxz*|uyq zd3vSYWmL6~F_NX11#r8yperx&lw-6qFx!qq2ewvm5#w-;Zuj?0>A+;xyT%((x-cF; z3)_v6GG4+lPa+v+R)kbyLzUBNWDPA<}IWut-;S8m;%znK{d9~?SamshwV=@aW<6}z;~65!Mh+t60|cI^u~s) z84;6R1E*isH3AUqUjvH7^7N7KUHwB5z^tHUq`rRe=E*N{Fp&5MgeGD zSP0pNQ3g)L(b`fw$B`P^y3?p(ity1(_8@RhEyjT4G_G1~I4(uJ;yr4g2vUgt66}~U z0HHgKUjZcL2CGA=m6xdsbA)hBdr>lQnAi`LVA}aDPwYI|E?Ab5zoQRj`EDVfP7vS} z>b>5IT_;7vKq__YXhLcXT2nHU#G}M%>P^o1rMh4_0TjB!TfZ%}7CG zcL<7@C`IP5vQ*N1$_Ro01a;rjDNxKDb{~=ZL^4hab@MN(BCJJUAS41xznGLVV<}^K zRa|^(LAayDMV%&{R7h-MAC_pg;{^hXN7=wzaCd>}i#D(Ig^4c_&|OX2Do?n7)nzcpn_accL(lsh*#aXYtPC(HG%`Zl^zL`j0Wv&yHm-b#SSZ@StP&8 zs?qGb)DQY2k}wi;-S$VX9$2cl)|~mOkz@LzDA35rwIaQek(3RiAcuD%nTlP9fe3E8 z&ywnkuxtgPhsz8Zro-niXsCy>E$CeAUT)FN6MB}}CHh417K(4v89}#2-;pTJyt#Gj zG-1|Lhtt1rzv~{^fO>2mYiq!9;Ra^55K=g)@$3}{#(3d97iPK|IHeQsT)KL1)^_%< zsp0%sLl366Bb%bit|r!9Hetz$1Mw_@N)jX_Tf(A%P4JBk6L+=WiDtsNgu3uQsiC}S z4Sv*dE_;D0xn4R9nTrljcI`k715;rjT~;1N10I$EOQLw69xP#w)*}Ic1Fu2L@p>q! zN?`%! zZjDN@jYu)Kj|pLjQJ8$ty``nt!SVaUvG8kjdHmV+xApH6GxWQ791{QYY9jpVZ;l1x zR;bMncxwM4*bS}85=g7{axQ%|=hRb?otJz~hfs z_RjQq?VF#i|1G^xx_p>+a9ZWKN`nsBj#~pvIJjL`yk70sIK=66SPpa9kf>nS{#l2L z870v*o57{<1`#lWl{_*F!S5+pzhb?`WZa;N`K79>L-!Ce`2TQRsR0&Hn~Js?nH|}3 zYTP-A1^?IA7Bc%44^k|%&+%H;v?B#XXHD~pTn{FI!hzLim56S#U1@>lh&6E_{>iS+ z`Y|grTB(Vw?R{_96oyZcdKQjuDG{;6D}GWEpYiE%=AyWIZWNRg)U;*#@9hib20GfbRt#7~wLD?Up>XuNhSn&cQIWyxvS z>1d5Vp062sloYC)jIvwk$F_VhS2=b>Digu`y{^!dmL%lG&_e`@u+&1eecwUM%_Q6e zEBRYg3iTrbOXJ8uflxl~X-j&Jm6=v|6fpK`k-17wNvr!r_Jjkcyd}kXWSDG}RID1o|RVko9=FJdy!#z8pr`o}@5= zh&ZbmZb3=)H?Xh7Xi=wt0>p7RXHm2aGIBL5z_A9l?rCH+)nt1m>WDu|b13<2pt#GD^E<|`Vls1rz| zpo`i|M@!a?Z6P{8h~o^r>1$XaYJBd=)VFZLQQ(Zzo$oySK@e11#8z@Ikn3#;|np@H^P zSGtK-S!hmfxaAxl0X3}K9bgOh{IcBeR@40Zznkk{8irya=8aqskJ%D&hi*3aaWs@=nsPoPL!E^AQM_%4U0u z#GJB6RYpsC8c_H~_Hc}&oJVDMEQBz1@nv$v# zAra4A`{Qb{OO)+I5vMn68jwoDNV&EWg(0VWVr89O{-pf~tKiGFI3Nqa7cM8axpWM_fJQqG zul7G)ij9dr{#9Igk&+F=%}l1!XV4oS6u2P`4xz3(B|p`ojl^eHU-IxS@i+QjdSr53 zkr#i6x49RFk(txn8bQP`F6&9q40tVFaVCggsWvb+-3sWDSQI!jtm3E>%gf!aBLx^3 zZ~32+JZE*?(SCYoJ;l2;_ENmxt#XOtej=RPyEfA7CFixbvJIYtxzgMJ<`#utlZNY^ zyb(W5cCSAE$uQ;VtDcep2S*0B69gGw>`em610S-751)6zV;d|z_lC%0Q!LiM3#)yQ zv{H6tDr0=+9KMDenimv(hqhOxRp!w1qj{5;>n&^bpC(@yB zk&tBv{V`GVpf>B#?YNkeZL4aYW(pEPGoq1>^z~a5)YPQ?_&Lez_4Ouu^yn&_sZDEh zz2#$pH~iTt^fk=WJ0Lq!r5NHCI2tA}-!wc8V29L5(@=Dh0l`FjL`ZX3QeUh#Tn|_H zb21XMbPj&&GF@_uD;8_ol2_ZUS>BV$96n>)uOa}JzxR8;SFctpH7@fXZUDSs+dX{o z_PC7_!__~&l^=ZYfo(0!QLv~_Pnmg&+9o(~q|(v;hu28cH&ilabp~AL;^Ze;Ly54U<3i3cUt zGo1Wz4Sh$A$RGc4-**(eQY60o03Gsb82Jd`;+*#o_fka5Mh9~9&lBEpd;}s9(@(Vh zHSNf_Jd%FAN6rOP-;3t0@sGJLDQRM z)L(k^$pP`DZE}7%>1Hd5Pp1eochMw*D`|YOsZ3Ovs51f_7DRkutur$s-lx`H+uMfC zTXl3Lgk3QPH{PN4X%qTOTiS0%LATKXu!#BXoNVVmsypA!B zNU(VI)mNRmTz@m#~ESQYI#l54E1`w zz!`Z_91fZub%TEk&doI3(B|IabP_HuXln%)EiNcAD#K4RKuL}Q4$P5#d{k#X@f-;a zS2WXPb3|y#!vH@5+wd)PCH%mIO>(FJrs7GZ#JT?p_o(#+uqm8|BRHo?ZpBcNBc1rO zGa-T?Sb_$5MR1ewnwHVTGKJaaDx%UR2!gDaHq3KjJcZo!Y)dqv8lZcC#7H|pf-usJ zKpeVigj1tC|M+V8PWuS&9^Oi*dx;O%+IOuWDamsLHS+Zk=hL-v1r}wj~ zs|}+`<}o`s*p@wb@F>b{UeBWpk2zLrBz2h=^%)(>SDi%km}aIKDxqIVI^5s^pTH}4 zg3EkOJ$)U3$KjC0n`|xKHq1HBP`f@q<#@YkyN9s6J((}|`wt#{N}eB5E-DK*e!Fo1 zNa0(Hl1jr#s(^t4V-@~K--)V>y|Z>4T(Ap(-aD3oM?p{eZh|4hcQa=17-FEVH%Bb-NX+C zgICw%|`%<1?~3(m&FL2oEV9j;R`%c8rdpw)$c5d+I&ISdI+g3Fq>COx0y4 zi3FfS7|YD0HPhXmlnh9;*)c;5iW>vt1V)QIee7gG6P%RrZU&4D^V1>l_I zyFFm-Aj)=62ORbJW%9~$3i(4j!Vm4?Y8GF0F?$(rJDiY4fH9u;D_W*s0su6v1r0n6aJ0aE1;6DL9IcrBqpWh~ zK%mm`MP}Z<;R4&&x%}wJD3~*@4_6kn09VImntPXfLw~?;ffYXHjP|Xmvf zN6$@LV8tQDX8)wpy#aZka`+378`!q5hwonTa+AlMA@#78SkhmN}GY*6Jb1Yt!3o;BBrOd0W^ zKOZ1$=LcX+s|>w)SZzFqrfrT^RMO@P4>~GTMknj>XCb%+FmQ+F#1I^>)yQHaQk*HQ z0)XM&ExPo8L!2Z*2SEb}q`_{SFde-{(A6qoDbW@%I7@AN2^gi6o*ExP<|4vljz*fq zRfSP*b-FW+)Uv_-L{;Vj97eX{Zj`a*EFV7b-#mEjeG~Qwf6_6Gx8$AXt^l7}p zke-3$4(1K;g@<_2kg|=I5gttY=!i+ueb_Kp}a9e$d`|6{^ZvXdujPLQ@FL9_oHWV-<001BWNklAGhPV2;lA(b(~|=1&)R}YIcV4+N0p7Po2}K z*(T_KOM33~1AU~Fw`RDK>o0mb$2kdf*X%Xj%&v*gBTF~UVTpC2)4I}M1!l$&D z(}i6cT(DbSNvkx!k~S^=VP2ZH*)brPCxW2nEbp5#O&=`HT&gR)vl1Oq)ecgb*sg3D zI{%~E-rz@4f;=~vz0C0(wGn<9o=GiW`XN3D4pU;NB_PJDS8E1-{qWf1Ul;c;Ua!qBpP70kY=HyW|V)`Ww<@3VRkU z(xnAjw5gmhdBE+a>25K-`I=gHLe)H>2CmU4^yOoqXR$&R!u>^GK79N7e1YI#`Z83> zQSvxSlLLG7qFs<`Odg#) za0+w^2D{gai$bD?f<}v=CLs>c2;fQKjpMTbBI8SkjWP(WBzPjZ=fHmBy zaH*;RP%RPaaLgWb$%pwvkn->G+TSoH9cP5RYi4=3|Fp^fkN5s|c>7CV8s2&5ow2}3 z(#ZuZ z8#O{Lx+o_q28-0_O<%B91FL%t1q05@8TNyVYnZN|Qz|iY`mqcpm1;>_4O$-{R~9Q8 z?dq0i=F7%PYOtysrmi#hS(SV0Io?>Tgh;)uSmd%M4qe7}c(|A>c?+w9UP1yWIHbpD z6NnL;Pk5M2$}M(sXo#se)CLa0qMCz#Gf6lVUWG6Sr=XFGbkCCXxxlBS!FQZLHh;Mm zBncfot6~_YQV3e`fXR(3M$lF09De35pe3LkwJQQUQpL@Tgh|JF8mlZXrjXc^hoc~y zaPS{b<;|cT<3Tz%gmIuR@Yqu-&yoLlS7Wx}-LzvTBf=3Xx=F;C;?T^vFl|*#0o}u!*7Y3oz4&|?B zhU&o~ai8+>ene62P(-UOXiHNxE!#uqod5M~gJ0@JvHREm+II5v@;JF^+Y1eVV_{lL z+&sD$?{Qpw;JO;#jxDOkcphPRD30&c1l zESbu4i^+?~}`)I)ka$*WH+i5mNY^29egLR}X;d9?)J%2b>cBtphn_cF6XXGlN&SF+n!Ag- zZ0U2R-!Hp5+;13UT(zz}b8&yyUEm~<(zuzwFDw93sjLC+Zn2QiE3drE+PSO}v{)1@ zzFL0r33?cIL0Mj;`pEldku9A@7#+!?3V;(g7Ia+IG_oy`!!t}q&0YaefJ?PZph_Cy zOB{8PIckOCgnoj$!(3B|9HLZGS(xMRz>$G#xVx|$j%vuHrm-;g;F=J$r_j@;#^;(g zG%)kwH65!f@rD)kS6GVKC{IpdG};*00Or$P)pc`+@)UcojE z1128j)%#-@&I2%`3@JzBjn9u^#!Q=g$}G{7c7P>i7UfSFrT374&P1)A!O=)FcpB4_ z8EdcbXvK(<;5zb8S$G{TKZNsMe-RbH)>-U$3%X+(CT^;tHyV$p1`N~%`WKw~X-c8(ISO9#gFa!KfPybWC zTD?@@fl_QXALrZcs%T!F6?bO0i(9v@{M7MrW#AQ^3cM6|22kcT%GwEI(N3G5j*7me z-7Pz#8mz-HBP<*=u5f2z>Y%(l2XmZsK2=0Og6Boh8pD(W%k-!x7f}1s35enPd={^)?zxVd`GDRD+ zV_^nEBjf@rndL&z`fw$YJkJqiB2zmRkOXs{6NI`bz?cMA5r!x}P#p?^Ky;EI@!V&6 zg@smwr7zgH`77-J0l>ou3e-{i;Rb(kC&HPwsO~0E81L~WF;!jCV*RH$O3yh3Spg-k z6Zlam@E)3ze0h#`A~$ANO*OFxmx7O=hA;=mvmsi})NZU*njML^D0p%r$@VXc`fpa48+{nEsI#aRUOm50mCXUVVy%8$I}%x{+V5 zHGx?YGqg4b5~(SUIVa7;kKkuX+i~M?Jj*M1)Qsf+XPktk`FD83A+P*V22X~ z!MbvetH6G{!-Hzy0Dk(DsuvVXT=Nz*4YFuqe}Z%{!%MN`6ATbCsR0)X%G2M?3eKt1 znk1;R0erUcL5e!e7e0gvOc6w!+<+T#Phl4Vl=%=ap38QC0%^p35=z{%2EVFVG=PWe}wJvU7OKw#uTdJ)dY38c8>w&@(7q-O@_ z%%8NS8zbQKhN*4aP;x3@sijfIMQlV%lJ}(i2Qo_A?8rA6S%$xg!UhmZ{rX43xhAfH{gG zr3X>Un6h)?Rr)r9FS26g!110TmR3AGP`wTUGdb&l)d~+C6VogozQ<%DZ$2r& z$lT5Sxe)+(dP*n1Q+GX?>55%{6wAA!>qi*{=q<_|4% z_Z^_ixL&JNUhHi>p(0s#c8K~l6$kU7!=afKzG6IPAMP=r8+ z>wQrzwUrTmRX-jGLi{8d76C$-{mx?zgQW^QJ7B24t(sq84MdeUqf(ut(La!ua|O>j z?iOT)VZ#JvZbBdgmTR4nBOHX(P$DgaP%2M0&b=IYNl=%b%e(qd00O)SRO3v>T$m0% zZ2YMKg7**^GdhCbOds7aku9eu&w{$$MZ}=cBR>HaO1NbTZNWkl-23t&pa%aV0sbuXIF>rizqz7Gn4FE&mwC%pnLtET{g}dA%6wSxlXOKih2g+bwN=Uxl%+ z$=%K0UU&d}hqqyaog2y-ZXZl}yIs)!mX&mC&=$KZ+G;*)nv>c2GE7#SiCa4-Rk8=Q`R%&-zUER3L zMy-PzhK0CsYIX@j+aTv;GJ+!9M1(({Ab?a=1PaZ7nyVKVLSj{C6A%f=3OZ0gxXCOl zHwGYuJo;S3^05&l$Zpa{tt|v4eiAq+@CKD1fS7asAQC}150QV0j@JUSxi|`OG8s*n zo9upNw7KGvJCsEl=|E$E`7$jN&?Kbm96F?pc$&-+0OLZ&f;+v5vq@-`q68uloF9_osXMgi^EzD_ z1{K+L&Vm-D6%Q=OkUh}tNZb4+;L=J_k}c-K5yk_ZZ9MNK2?;~)7aGh?xFsz$_M$jat_g|Tml>Op626<#ls7x zSji8Vsriylg9RELv#(Hvs8dufW=|e)b8)lIfpb$MK`N5@?`M-O0Hw~mUOS1;c>TfMnnZF^&N+cn>jnoiw=OkH0D5ikHTIT^9NQ_!O7>0gf;<;fXT*3g( zQy2ptL0Rzio9DG!nHzN@juws9rejdTwcvQqPdBuSm*Cnu}9 z8X=d?6DWf>YJ1@U@ZEQ_Vzo-2FJ5w9Ug6WUQTx@+a?D{~HZ?;3K%MR}Q>mgvunO{kUazffkC$#|2@^k4g%oTRPl18f6ooK8@yALriW+ouZAbB2tJh$$fEyHTMC)0;`L7Mv^tcDH-xaLMW9r;aw z7#BPZZvgrwaKBN5L-`-FG%$VK_?T^CdEmJn! zi~F_#A0pf_uI23J$Ax)9;~0fWc>hc(=y5KHTKLg}&3yqQ_zZqhI=+Vlyb$HJCF-dR zEJNwJ$rprZ3+3Pq9F+y7xbmHQlV^gvZzq7qvh%GQ4!#9jFex_6$#RHcZmO4Tf}eSJ z(o>XfHr8k1gXMS3510JdG%%J<#4vsHYZ=%!ZPjoBRn7_TT|DubGT*?wD_f;)jG+3f zAmADpD9rbIR@6XW=`drRRcq?^+1bfvv8oyx*k{ZVU6p5Nm|M)(z@`ZX&B!Xp8@0Xg z0JwdNAwTaitb%#ZVsq3k4f=NTauY8-1}E0tj4s(~-s~B9K_>*03^+Q7%H~36wCzPb z4XLAoP#rK@se`<4WQe)`5LYS!FEP-Hre8+vT0v3k5k~v~tr_K<3P(*x*Na^fng`G( zZd59;%tkIdYB9k5>LMyiFEyNSRuN?`s2O#<@^RE2z!nYj*e+#m2@`di>W;>TDWXT0 z59og|R>}k?37FC|Vws*%6+TT)Tqn@nJla_j&&RM5Q#52S#WB{8ZVDoS#&~1=U~Du+ zNiU?{k}xD?C#~RcOh*y|hQc3EB7a0v@ZD^7a}z{O&-(#@K8LP6A=4w7_DnbCJ0A}b2M;sL% zdvfD1h@}M0mqjr?N#)^{07kfD{yY*i!ZE)elb$YY*`{62mQn~LBEFem5(-Y*oWe7Q z2EDuikk$#~_;KQ)MP>QhS29#Un=UbIR2(tR0U;J9QxT8uJ@s1@CMHfw2%Pv$Qi_QeM4WYIAnrVN{v8@IiX07&8Up5movzeT~m%P<{A ze}E5Btyu?>9(p}ge66}X^JaPZIYt3vPk9eIN?8f00$iF$%}6Q$Ml!}Kk9=XQy~fjI z+nO3Gzm$ptx9#X;<1Y1{x)5~-IHa+KC#rQx4bb`#Qm9?fWt0)L6%#6z)ejP=cvMCr znID-lrVsc5oII0TwLDo=s~WdR$lA^pr~^1A+>^JE#V0+4sGTHiTpPMgiYWZq%g2l% z0T#C135cc>teH@vmF^jb{mEwH7D*CXpBX>VAnbS^SUg6OoLC^4w9AupIC4+fGrV!r za|3cev>9UipUT#RT^}@9^vwsTk_UM*paOq{q(~E>d(3M}m7Y>)kX97G_lRrp*ujBr z#B~&~FD(V3sG~*^Mn6PT_d6Dh$#5jj5#CgLq6)!9gfSS8%p-@$U%XuI`^bXP$h6}s z*8G)ecGClMqE}b)VM{>Y@-|5}II)sgi{TqBak-jjn4f^4E=6efe%#o?WW@)J4>Zl;IYKiV$i{uuh#l1ttx@-v z0L=>2wVu<p8%dCG0tn5YG)LYNe}YRYYV&uTJd}4R zCqdhLQN+^X)!2UKH_d2*pgdY~9+hZr#gEU)Wy%A;Vq$z4iRAamrx90>$0H=(mw|u#nGlInLIpK{F zDgu$o32=v16McCo0lonjo58o0z7x7MsK>Z$_5BW|bjKVA4gS zdX0CI{>Cw%5W%dmZU|HB>!#C|FC|vNaNvdSfikpsJyZ(k*AqKzyI`d&9G9sm$*sUP zLwy8oEA*?(Y%I+3f|)R4W#^#IQQTl-pm4k#&2u^h6aGJZ9alr=!oi=>M(>Au$+%i9(c~BW-c5G zj0zxNcQkz&9S~ZN;N^W-2tgFQOyig?w~ulcCxTye1PA~yAK|4dV9N{tkp&5aq(i_0 z5&;8b70(nVGBzee)(A$r@;~B!Qm#kM2YEK08(E2THU9($wKsuKsdnuQ^JK4R6lUNF zJd+U$BJyuoOWT=f;=?lLR#u`(AXqg#yjYIobLk(iJr}3qC}xaB6JIq_D>032{uLcxDd=J$%^ixEr)+zkIF23xc}<9wskOcCaCr$Ut_2ogt)|KMw-M)cw zMTR-#menZ@gKwBkOe050Idtz+l#boEzV&AN#V_8>9$;U?3kiT@{dnr|78U&c;iak? zE^n9F;cC?_mrchK_aFuxxquB{rKHSLDf!-0e-QnFseKOlhWZgNlX_uu2p{OYq2gU5 zVlMT!_r>ysT>^b8DhEzebdb=I0!-oG2c{Am857cQ3FsLy5<@4!L~b$R0X0vWHn32M zsAAzEOeKqtJRLVA7J^4@QzWQ=R=^M@-ppV4<3&Ov_*vOf{w%y% zInW-5wmN4*9oDX7));|MdbHN@b)Nx!R6mLb(i9OD5<8b54cMt0gjvuRh5XVV=(5JnNR zlV_mp(O1%RZQU{=1mgG;(xL+{0kq1zx~G*{r9#AG00$%A*r`y|398>HE+J5`5yHYf zqFI-HEEsZn1VIH}w-M4FwVu#+7>eu|Pys>kvZcy%!B2qD#D$Xp#QnZuXcRq&0h(%( z3b-4|#1=f8bnF&{TU;abY9G!jEO=;U8c!OLSBo<8YsVPwpf_r&5B<+}Id=$p}!7Ihc5T4K$HJ`!pk#G4> zla(~Qz*+)qnM=Do`VoqJlAB|`Q!WffIOD}z*i2t+U{JM}BBscU{Zbl#^Jx`qT%;bJDEEAV{> zuV{aAh@S)#?$adF;4h0QMY%GK5iodQbvhT_S}}7EW31?NYx-;Q{$RaYZBG`9EngL9 zMS?}ZFdNQjmv3zo{KG$dk4aHK=>GKWxBIWk{SDe)NB~SY5al>lr*{$VI(mY^99>~( zpx{MPiLnOM%=iLww8pTUAF@ClDOrO^{BYflSkRep+6Z}z=gPI~pi=SaJjRQLH)}gc z41=S(IrNQ-66a?|j@TbEbWDNOG4%_Tf1Qtd~Y$U!sho&pb@rHRcrUwo4qjn@sX~eS#Z@Z`ELX!l~ z(|vvOC_LyVkw=pyPn!PrgxfP<4;7!L0H**UVg_$x8prYzyVd4+7%#|tm~F%I8|j%w z@I+Ye81_k7%Vf%CR8P*+r_lQ;UW6YhTJDq~-(#94)UXE~!F0{N9~z zH0n5&8XFpO7FUx79j;5WYB=P><+*4%?kg6*6oecwA|0g%{fO2VW?-`(QYn=`oepf# zx2Jm%R=w^1;HY+7@|d;B9;N#g@ONFQ*IrPmXe=1D*>T(qB&5_bSj z3dE9hU>_(dD9D#U5?~=-5YCN9iARw{;AQhkY8(K_3@|=3E|daL0%+jL#}Rf+*K`88 zabR*IG+-c)0UUk}gBLp)e8ymHJ%vdcUg105i>yOCG)&6SbQ7>ydHCmA9?iF#DOr5> zZimM0`}El{905Yh<6h(;A{bNt_~2-Elb+cp9T<{W0=d*9>_;F0H`Vwt&;?)A2Q)n@ zO%V5;+d@Jy@J9HkL+BC)AMon#Q3{U`fJ*|>&4(X;cwoJ4UnU}X zbG91-fNx=ny{|@=tpwdoX$)tliWmM1eElqoh+oCujWt0kx8j5~>#pM$1AlsD|h=s)Y15Q}d~S z7~FYJL%1^ysmY;eD0!+))_YQo_P;<4ZlwyVoTN=KNpj+~)r#5{_8DL$*apyXP90VQ za!+6e0Aiy!-jkZoP6YN!Gwvf0TGHH0LhHEz!%bocpgi#Z@g^P0I1i3U`;cHJuh{a|(B;THh*pT&K{5#h>Y-i?Lxw*~`de;;jY`E&@t z{-RBOISb@6_7QdAFHY>K_44@a`t-%=_UwFZ!Ts^2vRujZH6CgF_26}b|L$ml+yL+H zf#0YeiZE5TFZ9>`<7)|k7-e|rPt{(VTb2!F}Y;D37K2Vm@A2FKV7_cG5V8JFYvXQo}7-m`B zDW)>1cKFD|#~@>yf;>xnpN<*(CbYxcbd}MX7V+qPCOHy@J^y2PdHPM@JPW9Z!(Pkl zcLGd{dk1(8eVgLJfDuPKG|6E%)^RCOjx?D>YP7}T27vp|hRGCxd8vY>iWA0z8dw{L<{eFH;2HyG|t$h~GkM8>ZE`(=j*~g#qd)BagsfWTXrJ5LRz%sWgQXQK9 z4s)nBjMdy)G}H@gyXST)1@)osRPL}Fr+v1OHV@AlFlK2?sR)4ZQU7$ITYfFVHO{!_ z%5d|D`)_WaUK=@Nr7*v8`~nNUkXzoh>$cN6KRv%k!_Dd0$rqNxeTE-yB;L8!K=$zQ z^78WGM?d<}xRxOaFaL{y%oOYE{Pwj3z{i30_Y?*Q|i3)4C3iai93>PIO+oSIE6gD&lTxIMBl zq~#>{Hq0`UwzY98EA%p>+)mHO6hpAEXbqBYXsp`C0zOKjXTYfMN1@FMdg zOmTd+y|M3&=C`;;&>0342gD3(#cL=NFwy`Q5F}V5I0`P)q%VP~BGUSL1$@~8h4)HW zs|td=2M#|5h_aQ9g#g1WB{M z0*&C#GtUds#{f`2!h*u>zxv4Zm>E&KNjE^Od`nsdTf!F?P0>Hk%M%?Eeg^u|s4l9{ zdYu7j>VNU;bHkR%T9ojmE|+YU{6-TMw)`u@lFy!&Qdx-c4ZVJRX>#ye`Dc= z$omG}8_VIIXnmUxKKNkzlZubNuhhU)!`J@p>kNQjR^HEe0{o$g*DtS5Ff!Vik${@7 z;`No5!8PP1y7;A@(5j9&qfQ@Gkx94^-{V?ZnoUbhf1TMrt?7RbpxZMF3{ecZ4mL(n z@tU#p$?++VP)EjaI@oniuYGd8^pdo`wPh&BrqJTiw!5YF1+I95P3#J)&GiLVQT zKec)#K}rF_&I>5buyt>BB7e4i?rx8=6>nslP4sJ#Xm_i+M>;&)piq>HY8gu|0$KPtoW**iE~-h~Gv!f9K1 z>H@I@xA|JT_{ED^d|S$_<0xt`Z{;=l2|Q#D%X#AY+@ElTUGCM6&-JWo7Y)3Q2Lcsz zK-OTS_DIY2>SQ-h7BfO23VATcAv7Y$x!JO|@dum};7UeQw?{7h+aX2tSVf?MMYz$k zIB?=A~9QJEs5BW7hf7cJ8?X zY&f3=nakdRyW<@1JL|(Rq5aZmh^;rSQ|5|g!KE}a+cj%80zYyVnZBT1Qc;{L5Je*g z7!*ggzoh+M^+W>wX%P?u6i`jL2!|E94Ze-T{y_3QHOX7^IUnqokF*q(H)#g6 z!Vky_S3W~Q35e5;(T1d3PgSo~;?;vAMuF2;fhAheC7+^BynWt9D(%XY_L+$xoThV6 zx>Q@?)rD$Lg=sa)QvS$T(p|_|$`GJ+ziZy*+h=uA{SWALL-5*Y0YLW)<-hh}qUgM$ zp|yAhFVjghyW3jeEkM>SIYLWG=f3iAyhiZR{rz@(Wi%}L)twaA)ehgT6hW&^l;Hm9eyi8qI)Ci& z{^iS;w>LL84}0*d$||jF_dP*BzJb@*9RRD+IPh@wBYoo+n%xziIGEQI?ERsGc8q#0 zZ_L`~ZKSRdtTSHxuD{LiK_pytpzQ${rhJJR-v>G$YQ|R>$chgxvwjcn&d*Ms zPK|wIAVSipCzIj}47qM-Wwsd(;kEHVjZa%bXIGk3OTxseLxfw6)WBxxv3&(}c(oz2 z5lWJfP`QDHm$))B=fm&;lho3Tj7d>*Jyk*%oTw1 z&f+(i5GKg|$@gDhiH|yS&0EY}A@*@%_T|ZxwqSukwm;=f%gZmRq3`T^>~Vn96(Dpa zsUx=(oxri@^Vg?WVA^NeNy` z-mGP(+8w~qzzIEV9e23vZ0eWRyuG@-x4o|fE}l*{kB7JHJeJk5>X5F3wS!@gj@S1v zxyckOpAOpp@3svO_7fcu-RoO%eNzDNU1bM=PABKBbjMc@Yh=M&cIZ zuiRk7)3Mj#00t5KcU>cFNqhzAfI0jQSg*R-3p>b)V2mli# z_QH z7NPsi`nIkp+7^CHQ>`9pf0cgXRR_iGhE4nUuwtltBa&Nvzhlc+x4`d~N)UjVomC+n z$6))nr~9W@dTG5UkN@=nHBkJ=9kuXib9!V6@Y<2f$~JO#xiJR`aep#<*qvys6=4l{?gr^}DJ{?It0IYQsW^i?`KWl{C5vEML6aM#*m zcbdQ3*>XSV5CxqRIikH}gL@WTWua$iijloau32D$0qoNL-VJ>fW3;}sia;!+Dl`ye zyQJ|gV7G)11PiyM(dV;ZD!+I|^(nt0Njlw6upkei4Dc4PO9%%5mf%TSMR*s#)VNam zUA%rIlmWAek{))+M;-KK0lE3^XJx87C+!j~Xf&nqEP&{zO91o)Zi^<9US5+A>P2OeasuOkFRox6D4GmL&L)4@?@dg0X zN~;Djo&m7Pqv=W8B-uPH`#|0;Nue!VT8cb*v7o4ra;`+nYd{mrWXaJyZO;}-Qi^8h zFdQG)w;;dNos~`7!0*m%?ww&QXXw?9{BnwhuMqGc#y)*G$j+t6M{zPp3vqPn>Ng+ z!%;FZp9FAXDjPb4lk^^bFl2*fYc6qgn<@-*;OGA8wwaj*0KJc-$pQ~IEE)KPzG-m@ z0t$nOs2(BpI}L$@>HuGSSD0Q)Am7mzC4-yU>O)K)%VT??y3$fEh>ol$-FG-%0Zunk2)En=qj-CyFC z?|c_V&3nGkJ9*Y#`)~^g2Y$<|GEIF*ru^UCuM#EEXuu;KV+^H3kcnG8^fUGoROz+?S5B`D7M#gG`1YV@w)w~5MmVRX7rDdVxU8%R2~Dv%5rDZq z*&Lt0JU@H1snOkL=fGyZ9uGYmHIV7wK`;17R&-~?JB9!vVc!lVAjJ?fZZA;PNdQ-{^)W;>ykf3d^RNzQFWk2 zmofG*lS5U(0&-?PJx|-KoRbckn?=?JbFU1R;e8!JWfEVx7Z60!LckK&{eEg7-I$ja zO`(Yb%p%_<{M7vPY2ENlq|)`i6x`jV`oFA2}3uh82Kx!4E{z3L7)qw+LrW5apl=uy?1$JkQJyM-^m-yyaZ*8Ri0s1T7(q#xAme z^#w|>Go+KSAs}je3lsx<=`0CLOGV8@LZ6G^246033H|fc^IoaI%eBPq`QO?mAM0}dSen(0IyG59?1Q%Hbl!E+WE zkt0DyHYeNlZv7I0 zNB67uM6#-Fw_aav|Mm*4m$lKP0*@>F<&PLm^H#g?F2dwIxh{}@PkQGn_l1*ZaTg6fmI73SOp}+TJYhE7D7>b54LODY>1hu*$wN;_#e!D7< z& z1&K>m<>QAk$3w%-1A6FTGa0as)+U3N-g)Wx()%QW5eFdaUvOy}!vdSKt-!HN0ab2p zVR*2OWBOsTd3Cz6l+8Nd$79~B+s)kzy*m6n*?r(R&H9c%?o51C0bhMpgngwWp7YWas^)&m>2NR|SShGfm^ zKHr;94-@j-N7A0^2u5phzj>l}!{T@v@$q&7yhtNr2MCgyQVTp1;DRdXUXaq zmgZ39(WK>9+IIP;b+-O~7X433JuHQWuzd?e1H!iMNyy6wFaa4AP&*CaEi>AIpcZbn zJHzgP_>yOxO!O^9@xD)cK>%sa6YWyn)Gpj_JV zj5eCbC7!<371;T2xH=U!cRibwD~u@5^(Nlb>eOXm75LW)R3nIUt6g9!0y?LB5m15S z51mR1cg|Mn;N^^rsTI$4>aukocxb{!2e1ua9;NpL9ygD- zPrKXO?e3>P{o(d+{^oBg!csV2Q1ytG{iu`v_BC!14ZV&>f)N` z4>^tvjUNvl4|ldNsB!W*ZA&X*thfjPEPbP-iG{6j1s1_e?r?!=C+LGiXU#cIliDKF zWIs-JYium>dQ4l-TP&9(1dMGL4+T7yG8Zf~Mogz1zeM0E22BAb4WAA$1#Tue4%(}4 z5w2(37D|Bz@5eGjD`Fxf`AfT9D33Gy-+fG-`5&=`MvP-M7(o^x>r?HWcxOs^$ z{KD0Nnz-Jo9@V^mlJEs)(wcjTXrSS-R~ue0K}SgEW{^l`2WTdn(v{`ArWBz#OL{a9 zw727I3BJ1@9qzOerdjSjtB=61`WT{lsi4;}*5=iB)wGKUOY49HYx z=&#Iy;m{gw`y{4;OUqRn(Ob3GxX++lUWF_2GpA}hz*WTRasl~;vJ#p9Dd#*cnktNj zX38?e6nDUSnyESgxS^-G`bGq%+v}m3S>nQSsZGjEd|VfJ=Bd@B2THTP7>p>p92(SE z4@w}KDNLcj4^K~T+A9BKb9JxBTK!@3^Pm4xNuO)7q~-f9y}q^pxUcW$ir@W2`+sVQ z1wm&Cab`!_8{MXs((K2NcDRp`IkNNoweQu!%LzWecIU?J9C7fpJ)wtXFm`A<`-lxU zWMH|6<56>D9(kDYWSwwayl_F>zX-?76@WsVUC*nVjY5%Q`~e;UirYp;V(y-L5+^4` zy+$fy>gtdvGqXiKYxeE~>f^BlkLs9oYGfPvAFS&>b)P-c7DOED*0#3pp=?;RkK%OzCh z7r5S`bP437vu_TCM5A&w+z;q$Gob)Dx=I~A&-u*kHnocu$h(QpWnR$bQe_p$XCTj%Vr<=}Bo|@r_FwVM}Fe#x;7TlM{9FT>72oME9Si>E$Xe za;o3O0xF1G~V1+HGuuRROXF9cJJA@TVm_7xG zSZbkr^@|yL+%em&-x%$+Z9D8M{dmL~)&hbY>9@PLVDc3B-QOQRz4zXm?fLl+qEbp2 z=R0tH-2w2q3F3k6{r!&&f&ba5MD`xgS0yyDx@m`OO|8>ixWT&<0}U}_k9_~E^=(4K z5R_~*Wnp>moB_hsnO4}|sdIr+42GMYxtl~JR*68@vxo$DaT!jJ593jhuwh>?B^IPO zVRPg)98QZY$>Gx&I<_Tzk&>U@b9O?C8F2Jku0&^vTAV;^((!$=B`l$E%4T9LqtR@7 z)-X9f&feBFg6{s3;*$PoD}%v{CX_ZgK(5HqpsyHDNow@OdnPq;M8OPkORoW0xD%-P zFU!Zzm9h_C1y$6-q;Up?ZY>yy zA)ANKe8bMXJvPpzHCVdI$3=)^D^eKEOO;^UZMOFu98+{zR^4=h~{ypQNPIIIm7f(~ipYb`q!cj3a8HlfhO0r|%_&iY;)I>>Ipf3$A zq?|OGp()MbeY^1opk0H`qDnZ1H)K6sHyM(4lYeV~C=;*N-pV90N=MqV^=oqMa}QXa zOv;hk4v2-$ekK3`pF+472qxqUpaon3QfW>2p2@TIsD+yh2L#h3ODB!S@R2ZPmt1J5 zR`&FaqEM_dj~r1O! zzLH*@%RKj_+m&mwFM>PK5)f668mur)+OW2&ue2>U3a6=NUMEmOPxq##rY@`BeOTd( zQa&}zQr3m0$$RcqL4kVV1dO1<`(AyQet_qD;FlIUJP^gb${kPmDk6Hs3*@j_&ZW~) z5BQ;qHW^qBMPgNFGHIx6;)5l~_DHLvHa~r2^V2Ij8uU{w+8l4~rChVv6k+@O>+8JJcP~#*ch^ow-(H`Yw!hP^PIuPt8S1dL zwanf81Qn67w{w1PvHKNvJHs0}E;svStt0V!bP_f3UgJaix5Ul3bk9wV@eEYsLhO~~ zB?^*Gq(>6nN-9zUGOh{k4#tgJkIA2HIO1p6SZ^-UGTDHGm1|saoNA_*j`4~**-wUY ztoQ*_cgOA*#7Zs!!ow3~$*-K{onS?*1OhM9;7fW!hM~>KW;w_nm~9YdFKH!UOZM|# z{E@u?LAX-yn)}Na72^JAqsy>+YRIi>t_q2seYB~#=YFP?N+-gmX48?m$7D7wPE|{w zr*;Ehn#;TzT2{qkE$I$g?TIci&#T3$dPI~*c}0JpnxNGCw!fAzHK`h1%Ik3<8Zu5< zr_Gk~M^l|tIhJO3pL1Ve@;RfqKbm8mj+*{ToPf`|-aXj2^YZ{;9`l+r+9$V&n5)y%J(H+CjH9o#zBQrogJi|^7fp)kvNF*~P%Q&H4 zd2|8%MXE+_7P;`e{W}~sGaNsH)pFS6xCO9hzGX{Hh=PXtVMggTPK9;2p5u)macTGw z_{7Wv3zM_U5WIkkQ3i9BNuo2R+G6%{hu-a_NtpU|2?WmVSs zS=~r#aI*|trIw^Fi8f2Ce^J)*pmFlx@l;j+o5>VN8NwBbVIbNGIjY1g|rB2Ds@xx}MRo#3cKHF1%aYn|l` zdFud2^OJn(mrqwrS8jE5V;U$A%upJ=eAUI*g$bl1ki1;v0|s09$*rJUQ*SyEd;RSi z1|K=i=72lVp;JLBRa*t0@X0)SpRMSN)w+hBt0ej&uL|+4zP|PVSR?EkWZ@{y0R&fJ z;K|89ZNG<0ZeAX4Pw%#yTf0L$5n=ZT{7%@8DF31!J4|r1ajXzs?4)A>FR<1N;9=!R z(&Ydcd!AZB9B<)78Tdv9`-~Oh;y5z3AaQRMRe;%F&TcZ2&c;kKr4DB%IBvu@qH~ls ztlQ)x$adLTf|b{tbhhU`Z=WZ|(x#^DI>(4Rj>O z{XPT20eGL?7#bC=N}c%(_hcvUa`!$JlQ8e^pjVuT2-K6tuw7E#=33&-*Qv85y?zH^ zbqa;8SQDmuU4@-wmm9t=0p#@jbqP0tzl{8xt=nQwyG_#FcVo)u%c8R{frseGp2-$~ z#^onhuC}>P1B^VeRn=0Dr7{LQ<(+$(1x5>u7MH^KDM6Lez+)Q845gh+FOVPl!SfQ`hk%E2en(sdooJ)|$R?1EuDL6-lB(gC-f^=D0PXq^XTSx)M>-x8=?=o9fdwI#i1ojRHOrSO$9_pnRcSWHhSx-eL7 z(j2Sv)YEr4)@Bj!ty?puU?&9oZdwO+zG%kYnX4&fRXflU3!!xOet9UGT zWJS9I0=%Xs?%hp;%PtqgK@XZ6q@v#>4@_pwxn?tV#a6Vx5s#6M&;auiSZviqtmo}L zi1*nOF<&q_06{Ud*QH(bnWV>vZD>b$W3UE$NiDWSSUCiK5yDtE`IfhY<`2>Nh&^9K zBoX5u7xPPQgk=$&0jFxI$#3szZB1e%B_r_j*{~Z0NSG@1Id~z}z_7IEesTktmpsx) z+~3DfBdh{anFkzv-vh`1;K&>EO``ee+>febC#~G#4FAD;kTM! z$cl{R+q>usEu|FbmuI^G6xExna!r=YkGa?H$~|$Xrk}qLGEZ$(7t?Wg{+yBgxccy#J)#(X?=LQTEBPo^4PIRM%(sSR~44P4PRH3 zF8NQfmS5kl_iqdU)(Eb+=&OyfT{OY#)%RY$TwU1P<@k}X2|M%xwU=mKE^n34j#i0{6Z(vSjHyMBy>M`kuQR?j*8siE$ICV}7rlFcHggH+Q2)D)oP zORKU+OXT@oe04UTV~C0}@kVfckBs8KYqE6W#1#%F%{Av<`&nAH7}D(?+Q$qrAlbc& z9XZnw$!TGiTM2yin$}d_?)v3j`cp zUs861bvbIP6XAN3pX%OUg`cn!f6{QL|8kAyxU#(Tf0JkQYkQszbut+$qEJlVhKure zosL>B$@C)q$l)Pg=Uc@}+*RP!c=aG|*PU>zMB+dF^j3?`at%BRVZ12Cr z`}?<(#&_lI8v}qf$etCZZLmhIJ(BPTDEMPW!9ei(g+;wLj`H1|9o-+?I^@N?L@Obg zLPD38su9!W$e2|CxVp^Htk(r}_+%y_(&%<4+|Tf%B_wHZakm8;q%0@;@M=vgIaVL7 zQ#F!V{1;IzPG}}0)=rbd>tUb|JetOpZ`){OL23e4UyW;15_8wG6HUBd437@kj2agE zojXXPEf#^3S2+YpZV4CbCo)NZZ@4}iTt;`u+I{(_0<;XE^#p-oke{L)P)t;B2_+ns zf|uWuL8(h(0I>X}Jq=)DVgNn)D~6kkun(EgUk}^>v;PI4*fCok_G5#>x)$lwD0(S~j_)IzSU`u7$R#x4Dr)Ob1k*RL?3GP%2rZ zOzE5m)IHL`b<$8K*Yfl#q~1JBW#f>T?0-LRW{&+t6M6)`GfHJSgMw4YiWP zPwBUUvc917vfDHZRQJ*592DD~0GPOdy+t~%H$iELPHxk9@I`f`6g zWF)eI@8ij_mF`Dts}|e&>b>{gJFpH|0+L#wcfNmH-@Z`*_$L}+_Y2MaySIN$M1H^O zu%v6NyN?*$9B#GIkv7ql@AMsrI`v@i#k4Db_`_?#jSCL#jdti{gm^F@v>VLk=@big z?nmoQf{nJk2McytfERIEcqt4|t3W9r!EAeM!L`^KyT$G}72sL-Yq8#JbZQJv(8tNw zT+Hz8$k86Gz;=Syl`v9HW9T>>LyzcsGO-F0M;DHC)#ER(9zO%%q=g2Fk^w4;#dyaNXr*Y{c4yj8qZ}FZ{i4F zC5A<5-@fGdTt~6glVHjaGzva;jDfkO%xbGtmUi(T54hyt{Sp-mXH1n%xIJCjLicz% z;nd5b^%Yxpn%3XF>Mj$3n`4^M`k8Vn`;>-FGvDocNauNNoyFCNrqzzNK!#QUdu)!#C(5sRY8XJi;NrF*8V}rO@7Nd^(kOwoj<;K=^w%iMv8o`~?BYwQ%jTm5(MB#fOPFR_YCgFKOx}L*Guly5xU+0oi zk4t3oilm;+^XK>!>%byZN+%9LDJ7Fv=_!=x)3QCBY@;K>tE#^5lR|nR<(E8y%+j47 zG8{LPllHT1a!AL~E@>fQ6^AesR!(hLoa$n+yY<}wpw6lz{i^hmEW&gqQP!OvErcv} z*^Po#SnoqdZ4%J;yYHjfp>gtR6-d{Bpjs@RFv~3}nhe2V?Omnfv1YN9#vGP+N}oS` zwp{7&2!gpzMIRERSC@%V*$UlH1v`rQ{kT~~2{qUh3cdR89{N(oFpU%$@ z9{xYCrWh6F+kSmx0r0C0qfuv=u=@Gx;CH|K>(%?K-#@*5`EvJkakM#qx_^8+KY2X0 z>4E7D>ej*IxpPh*HV2m^@f3@m5s>$2d9PRjUuyXmMD>7@t5dXhT0;ciHI6}wqX=I5?T8|7zu$K3r z!#9$je8tit`NIT%12 zo5@y`G@psyTUQ_AcU1}xD~H+`4GU)*Z=0Jv|Z_-^&{pRcxm_jiB2`|*!|zdAm(yY2bQ z-8H|f)$P&KsY9?f+qKCGJAWVVZgIIS201YAHkVeUy*^r>ygWQOd7m78fM-uA4t37d z$jzzVw=;(gGPV{H=Q{%j$&h=a(deMl@EochlqKTJL4F3A{(Cm@`_Y$u*bL&n&NXRF zIR@7!%|=6u6a{_(D_CfJI=L({-vQy0CK7!Sw(A)X$gr#Xi=fW4eVJNBSaQK-pf*4N z)jP)^gpWXrX`~w@xsQ-iPbV&)DNfiV^j_iz{762nXLdsw^S>cB2n2bqDc1}(C9X6} zXCkQqCS38{8Tiar8|g8?fRT2S&nT}D3FwUyCroW!dS1dto?AVfd;5=hrZ7|D!unFs z{nrZUt9n-tT4%J=D2^j4Z5G)k<3>9yVx6dmaGQAtfv#}9e9D_cKRolG@pW$=P4V%& zMwJO3#H$+}^OH5Cwujj`6zS#my^{;a$E|jsu6`ADfAW&YLjRu(@y&SftpUIqBth!> z#V>mQ>!*)D{y3@TCi8N|8`^2m>+RW@b3`^Ltq&@EPR;F$c4s(n?b9L97RPa(5wBsy zON)k1ESNjQ9|`OeuhB$~a{;;I%*s31?)3J1HWGQfdpgBfO~xj1$pfO|@q`1n=07qd z#-xU3p-TaJ$+SnAqMEl(0qvSjK4g;^VGJj_I{*bX=6mnm2E9_!&y(FnqJqi3FM_$` zG*5huzPUnwV;&^2ug2XqEXuRBnT~C;ioKahKH4BuB9%P@B5p} z^W{g`R|U!~jCNTxardiV4bPS2xBB|l0AQ{3 zj^XxA#-C~P@y8JG>GzM;4oO@CkSQ(bmA`-Gm<#r8`>G_+4BJ6?(mXQ z*5T(L3DFX_mpF?m5mIuyV>4k(Y$nab2qCjkjg=(S%S}_bI?$PIOK>n>qO{0MVpI6K zY9dJ6@xEw`dl3&tW~?>>7sICxhD9TO0JNteL99L^z?@5s` z%T`gokgYk@6KcMKR*y*heAKwwMbO-~0^2@H4R#%F&AKRv#t&c4T z5Bjaqw%7R|uf&U~=hcwwB``#b^u(I>%iISZssT-34B=jZi1ZHFS7_cFp_RPe@;Ucq}U8p|7}VcZNA% zLf5vhPu%7uVCaF4=!%K+^^+E2>wcrxD?3%6QJ?G#gHKT;A84k8Sh_a=S6T@(VUiws zFl0_76TW$ks0;C26>=H2|UH@WZM zP~e-wlzYw8C*)F+N>xFtqX@0;CftNAn5dznK||KfI+DT{Szx(o+HQy&3$$lN=Dn8n zVxp>G0=b8zs-Kel|%l<&(=bA8@inJzrGXCP(a$Q;E9 zN0rl?r{lAy#|N7P!N=|Do@xjH<5Ci`We;RSiOX#*gj*ds2oWuVjWg@D?*YUeE_I-_u@@qyQfrvVBiJx zHr!yIPL6GTaSYwr(A>{9SiV)X(XB$2G>@kC#T&%gS5SbTR%^UGc?|UmQgM+HQ%wbo zk~)Q`%#eFZ@KgrMW$qq57@)h9q^s2&@(=K{Il6 zJb_0;RI$ode!fI>nJFMjMpvf<_O#a!A-+cDkg%~0!hzl4+R$Tr_^@6dJsj%(4=4mr zPcI~Lxw|(y`sFWwSuws7*S8V?Yq>!1xdjJ&hD&Do-0tJmk9Ob6+tp}*34W3cFA7}v((dq+#x{Xk zHmMh8F&u~19Cx< zA`r;#b}26^d=CBHQON@cOS4RFQRXuNK~J zQC%nVYBJ#I*$_PCSDjVrXt^o2h0)cv2V~RZFpEzz`v!Op4EqF*67k#H*yNb;TJF{} zVF$?7B@C?n1L-QIRzcXbVW>F3*Cbg5jWMdCY%Te(S`^hO15evK^xt@JyFRp5;N&Q` z`0ab|bsor11o=;^-~RTu2j3MC{MG`Xmi+29jOj+72eiSREoD}}!#nT){`c)0n0z`K z0V6-{&P-KE(-BjCv)~^oJ=*oJ*;|gV|Y_*UY7{FYD-AYs{9& z*4%Eq&1xj!cyd6H1m*}$3da~9ZUj}*na_Do6!38jAJ6ZQtbBr0 zj&!C}xV}pqIUY}8`c(w?1PlBM?pC8{aYFWq77`KkF;xj4nDA$Vf+w8BDegS9 zuh;AC+F?H}A&Faspa1|M07*naR2x7{{hLzD1h6c*il!m7hq;|mwWL~B!PHb0a5PRt zKkMNDh{7#2X~W@x$=OYxid;dKV!*}0;lcyA(kq`nX>YUh3p$&SPJ7cbX{EYX(Q8`_ z7#*<95cR!j@aqxY;PF?xA>cDDKH_n&sGM62%#_-Q>t{2jO!CLU?Q7YWUL zKj7}P0fgJ%{qA>lnXbQjxLLiiyy%fX3-`bE_JN(ya`7{+r&)61>v?Oevh=SB#3Ce# z2>X&A7weIuaLxQN(FTwH+m!$*3Dnqp;!;U=k)n~N5=*MO(*6=ETG4!BXI$U?h$xx) zNr3hf#(}H*Q@9blMG;v-6{XRVx6TYtL`G-hb&{=#iVFY{a_pOv>X`Oss4qDRM49#< z#UrrD8#0w9D!f;L+4Y(=p0M6!5gjEvbdlmEh2r$MR1?*NI|K!SQ!uxq)u7FkeATKp z1x|}vuTKI5sf$nzOT$vZ-TLH|A>U@B)z>IY5mhY}c&YTLm*n7cM9<7>`ZyG~BHsne$SACo0KSf1XJa`I5(nhjy8?>Bnw&=kASNp>K>l zZfU*NzgzkAczn;=&7ytuwEp6Y&09zB{o)tDr~wz+E91BP`c44gSKAOrJvVM#O?+5B zE-!blUcEZ_M$eEjjg32agESOa*4$Wz%h4YJ2j>MK! z03kWADO^-e=_TrRQt4Ke;%9IbX+v_d16FsvnHpeHz;dI3JcO0%^oRPZ`A z)g5bSklM<70Nw(_+C##*o~8`CA&p@{iR*o*Rkc;BY1!3Ef>s)9+VmY-kGsRujVipB z$TcJNwcUSjs-=e3aj(SVc)gd&Ml0?@+vL}`S;2mW4w48OMSqpm zexnxt-J%6nA^-Tp)%J(0wb$FH%ggUSd~|j}PLA)lCvz^XC2~iW%4K$m;rRjXR;LMr ze%%fR0C1Zt3>79b5~0A9gadPvlz=ZGB9Q|)gAC)_MGok0_3o{-bKgs>xN)u|H2Lm` zLry!y2Lh(87!A^hC>m%e`~o^)t|%mgz%;jirVlQwbsTvDguq* zFx{&)GnN4YhSrl(%51SNQX1gAEflt3wd}ou%`r{^6W`M4z)L6~r@`%TBz%fx za3t4#6aWe$&B#_7Wxa%_)B(dvXzX7*iJFa}1_wye&{&ApVP)j4eW6aBL&qT?zibrG z9q(E|!3FZ3pORh3t8Zr3BYX0+OS%0qasosJS8lZxo22L?t)4-0lBTb@DKp)L1f$x2 zJf&sT!)%aX$ZMZV=iSJ{@#ecL;V-oyFNV#9rE{0Gy(?w7mha8+)6wnG?!|+h03ZMG z{`;HNfBcWzpa1;lwbFO$`c4BNMh#xP0Jn&9aI>j zPj8>F#rovUEBQ;n<<%Yv55_fjkM~awkxQoeCXRNIi(vX=Sm)bBP9>RNy(P2*F6G-m zN!ZAhPYTR3LItFGe^^#^bWbhpAU(!%xt^>}5%mInPR#*{ZkgFh;|T-GHc@Oa7mUKm z;HYndhLu_L6fk*_V?Bb;W|66Teej|241PAVTU^*Jf-O4_+TJRgo(Ycp`G9Hgw_Fu; z+(=}ZGJM>EewwqDU7=GIU6Atjq1;RDRP1>G6dF2Gma_4wh3>!*(`82HuCepXwR;CJf!P6Oa`OaI#T-*Nr^ z_cIgNSYdVW{`EQY35X9%Jv#_x*` zfPpa|L0B##1-(MQfJdZ|g2)a4%AhWtkdgDb+YH3`7ux%XuxxJm>0~-u%e$RxqyQWT zg+_Twk_T=GO%M(6uH|sK8tCvC<{K(&+o)~ZO0A`oowIAk%nmDx+8hk< zSuitTlWl0KbyU5|lb`xF@!&kygY5_>^6XJXXb8mN6_%zTA<3hVmcXDEGJU#x9-0p0<_kxV%{BYW5cZngnStp6V+c z3F)h)zyko%C7aZ-qN_cQtxI$cBowI&0BV^8B6Gm6$YYquO6s;Z#5BT$CG~2?uakD> zR&ArR12Be{D{b!#E(J5JT(PU^_%ysKFry^@bbIT|09=(e>lRgNz-L<>e~-}|fIEuA~GbnfVbv$Ny7`%}YB{KFQAq3#|wPYlc$iT%&- zHAc*ggkRfrI)yBun5~DBy+DW}WiK}15SN8kEyn^CF|k`_OMn#S9rF~SYTv+nOSP_n z#Z9V*dkH|3#Rgb35uX8{ZKw!U+jbpxUVNb>9F8RB1TOFcf(Xiv9#|3Pj*b;H85$@- zm!YV8gz1pseDy|*dny{V3*D@TZtHatB`(}c{2D-}QH3(JDf*AJ=7u5ZAdTDr>WWvn z6&lWQ27;=9^70f-0c2XTt;T}q0qh)|&Cc$_a(m%IqE^kn4*)JR;^hY1Ys;{+%7$P$ zear}R!%zujXpC)O5ikiiw1sjiaXOm{Txa6BD(k?z>Z&R!uqZUI$_f-S1l$XB57<~j zOdu@wwF@zAqH7XkUiMkrw%4RxgYtB?k|;n_ebNOuTv9TD%0Nft`|jXM6@H<9uh?`Y zalrf_WeoJz~Dc?(gdL_3D?D$6M zUh8(>Nci>n!NFVB(d*6m=9Vgc_rb%%FV+1u64e4P-q`E2KNW!5!>nS z7?h2~r~nw!Dg?^S$>BqDeG~?_%a6BpU=5-c?I7FD+Lpx|1B0qZTX zBG8A1lZ}oW9-x zt3O7KmJ6gE0IUm%_KXT4+l&Q!<~AfYX=2GCvjNPA>Tpg?0Oz360>=6oRfYVVkJ&#% z#(sOtRB4>vVv(JW=qc^{My@x<>%(iE)s-IXN{Mc$i#C(8y?CkHUsBXo3$0P5k4wpB z8rg2G4%$8ha-nRXil`e6bg8SjucW)H8@NuBts_+j;@eJcTQ4{(Xc$g9u3ul|m>zhc+x`}z6D1Z#cp{qGY!fJZwyeA9UJ%}1VJ zkWfm&+o$#2YIpXuyFbPJXL?sV?%N}!Q|10WzY$!eqqPW=X$=|zw&An_X@32gX8yYXqbMoyijE%x@VEdv0u zXD6pN2rwJ`WP?|u*v4jtoS+d}HFII0Hxoc*p$&jxHZxJs7w(rI;Ls&djOdeXxQa&i zo8ve+I9;FEvWjz_B$XMa+Qk+E8u}UqH`}d1VRGtEzf=gt&8N_c1SvADdhXxt%2u5M zHoXhwONB*)G_<+;m_7q29nWNjxgFH%CsJ~OALVdszNtMVThX(<*JoTA*}m1uy>XJz z1@dkJN%h4*+!U>4D7!Y$$X7cRH*Fh#><-P$nl!GXVvvQrK#WHDw6!C-deG~^#9L=M zG*qzX0dwZ*$?4f?PT%Uykqz=`B%np)N4r#5{p^+ox*c9othWmEh25P$N9=0=czL`# zy>imqjjev~&Yx~U-}dnt{H*r)&V!$-|8}^+>;bRxJYVruS2(l!yT4lI9+{ne3!0r;`EU0UuWw%Px`2#4F~Bb zlOH;22o#ftQ`w`*SR$sk-`tR(>~gq%`vUl6sTyyQ@zO|q?MxF;q!Re4H>XXoE7^qx zQ*RvNKJXW9gr~H(30ej`t~VXTK1xk<6pcFBr(jAFUfL-j&3=F~caV^42VcH6ZgPU1 z#S^s0+)BcPTszpMj2x+lLZ{9V^Yjd(`UD3pw_tT+aA#ZfQzPU?WLf21q&@WYEL{&s zHPl|+b4#Hwr`5nmSMU{O=vOQBFi7XFGb#=poxHXmt*)r8btGDF!XNaJfAATYr6S2l zzBL)OGYxUp|) zVkU!5*}7HB7uJ$}VZWKzbTKoktGoMqdx~zJD1cCm!VNYd)|f!>06x$O)Z6K$5Y`FJ z?VeVPjQy_lxz(1+&?D(ot}h?d!}am$i__!tvo$7*iP;^Gb~mPrvPrP@wL|&LeYNq% zB`e2;n!V(%|Ao=*7dLm0ubBa^H?MAPk4{e?-n+Xq$Ub}u{J6SoyrlZ)s~Y&mYJh(V z^nOb+eyL!AUIqN&4?jNq$xmJ!et!B_*yQBs;o;&CBOEc99Uff;ct)-+z5^H$n~=4m z)hRO-C+JR9>O6Cs2I1KC; zOtJ|g$@CjAG(5C(jAcsXEg&>4K>ONkuJz*Aaq38k)qAR{v}4n9H;02>S^*1^V;LIXSKXn2`$1}w@n6CrdD38iK}tsB=- zW>rX*vi!@E(>XvEbOB_50yYGf{-}BR>)Ddt8DlVJLrd~l+`%iy1EdwJXJRbRCM?j& zrAT6D;<3{g7u7&;p$({^4Hbw-rF4QjziZpMQSSq2luTuVL6uPb4{2IQm6n^r`JpbA ztEbZ~AY|Y^kmg#nxrf(xzEtlMCq$%qm4;n@HW!QzuT`^2h0U8oS~>u{wqEF#@s!OD z3WuYizk(j_9`DhW1}JkYYubgEg@pplm#3m2MB&{D^v&JF_Kod0E*t=Hr@@|np#G6G;P=TV zpXBSOHmbqu^v~Bf76AWiP50a1t`2_igTFiYon>u5{Nee*ix)2rFD|}+bbtTmaDB=%!Lg zq2Xxm8rYD0@oqCRO%TWSl`)CY+_(!WCU`gvs$faqDI6wByyp~4t8nYucYb#^mEP=b zF!7c6R|ZVZJ8W?F;CRk_{*2dBQv$o(XfZVblg^3;vgna3$BI)?)C8+LO^$$1;%(~{T{fzK$wDMhJ@s=m!8vL#OE6SVo=ly=}3%(by+ zBsa(}zbKwZOVuu%kZ$RAJ|cT1c{I09@Pk=B9JQ-)@6Zg;2ME=*3FFNjtL`-byn48Q zyn|j%*ffkaTe0DIzOh^Q_6;C=qbL`Ou6^#^omEpDPSEagcM{wo@FxU^#U;2C+}&+) zcM0w;fyE^RcUdI32M@jkcXyV3c~8~(1n2Ht&D~T@cU8}H&##}Z#hzo&XA9c%wAlYU z{kiK5njcvHp)8P%44PZnwzk^O{7s}R!X|LYY@8V51bdAaQCc+DG^be1mN{f%!c=j7 z#)C@)ONi#v?0qDeBK|2PlHXsa7RWJ}&)h^_?Z=K&a9*p+3z6Gtu6Pk$qaOtMYiTUU!vfz2T#rUj zliE&RIVo~_mTmy2-~FF>Eq;Mfwnu(N?Oi+g_|p6c-fWJis@5qOils+Zu82pR(@fy zI-;fJjt|bDjHF&M*z1FX!^34=qv-;H8HqAdA- zdxt-Iu-gLQKAR2<(WLokXkd@v&I~Gsst1G1slu=9UB=-U`lQiiuNKDsP@K`a^kp#P zDZ_I-&o{0;^JFN+D9Y3`*Yh2g9z)g!hAXeG&Nc>i$d~#Y`qjsm#<|msRhMSe+u166 z86^^dp)0&oX$el=X1cGfF_BH-QT~Ca_x?7jQEln_4meCq0L`XfhVr=6hoA!m=`P_x zcAn>RGUhxsz-8eIrQ`Yhxs!yi)2Pew>v&6>24L0^fKg!H#jWNU;Qjl)LZ@9w7=AhF znaJAWeyr=g*X^X@WZ>n-op1sa80>w!NgcX{+Xf1_Mt6e+K$qMWLrClEU;<2fc# z(6B=EARAS|!^MW)wZw?!!2_?r>-OLC`Otj-JgErY3<}yxl{)fCxl@9t_=Lj}M_YE` zkRz2mZ^vvU_g#ccThq09ll`9buyA-4B6rNTbVx^~o*JUB)#l%r7iEL@$xrekF`SPP zab5J*%@Bm5b=lR^zGQNd;eX<(WSV!#+HhgwdWpz##Vb<_3Luw>KUyKyK9~gKoyjLIRq5Jz+S8sDNh0fG`NhY=*fovV5ysI|N-}608XxvSqU%27cm_=Te zd|njn*qD8soxSr;)@CjWdLFVvy+jrGBJ&iQRVuvbJm7bR_o{8N6N0G|&vB%cjACG5O9j}`XE~GJ zVC$P<9JjaAC^2C}=+)3Rt`10O`wd*8$XJ#L<{LHuouBGE-=T~d7?1#)5G=YKIS0>n z`)Ck8Gyc5ffCt22s-m@EO^2)s@asA!jwH?OMip6zI#1oUY%_;2R8Kux!%>7rGVzlj zlq1gmDGeaiaS_m z8d}r-L6SA)RX>`dEbwSNE7Gmqd^!WVg99AQ1`V1`zMd=2T<|@#(+DTgR|1cF#?l3A z{V8{`{Rhi9`-kGD`p@P?aNvW8iK%-Kvu4EnZf>{8*`mSE|Bi2u&KHOr67#1~Lsh&1-ypy29k(4kp6ua|G7_yR+R2U$oHzAli1HM}V?N7T{w%LW{U zkM6FHl!c-{h(X{^+e`J*iG(XQ zxr!r2`!zTarminaisqDx(zBj%96#GsJBIPX4_#GA*v-k=&-vck3?g4Ogx@Ro9ZWI( zBJ_)_3t4bv7DDo;QQ{UC*yDnQf3z*BE z?TykILs>#){AFvBl$146@%(p(c-dLCj>_2h2eo0hN9k>p$1JQ{Kk#<8?2Z^_{V;UA zbCwizTN0im+GzrJ z-k<((5JN)TjsMF6fC^zI>u)J03m>(KelFe3H|TN5n&%5%;C5Z*G-=7Wd!i7#n0pRF ze@ja{>KaHqt54SrTvtRfF&#W|8<298vbX_1!C_mhM0&9+X&=50wc-;=btC)i)}UvE zi>I=aY#crQNiN$yur*hXkB^l7haE1+Psz%#`AuMN^e4d_c-6I0WY>p_kgD&$P-kH! zZ`;J#T3Vj`$&lhEp4Ko^Pahj`Re9w2OWa)M${HE6+ZJ?<5>FcTl*Y?UGJ_R?ut}^| zT9*fq1YWN1A_@I8x}OS)^E zD~*y)9^u*krZt>9$j1%ovnz0d9MCZ5af2^j?#_Fz0RwivFW{4=#i0sT+@Ov<->_TT z7w>9SG3W~=o+av|4U>BB`g;CqSp4eJjqp}K)t-oK=-%8-<>b$s{%=dQgr}`4JOS+; zcC`Z}uiK%+51~+&nYQKSWuX$#8TH#`)RYb2>hZ50RqyW)Gj`CYn_eTtEfP2-Dnry6 z>{oIu&G2~y9kIYW`v+Nf@`{S!j?btLc4cC+g5%7N4 zJf@tG_4jX28hk6A2Iv~*&uOE%PjI4BDBeX&BG$Ba3I0Q0s*FsnC#js9{iWw5t+$e@ z#lXj%LMwI^DtBfnUeGSdGwjb5xUCH+?*@`Tkv2NjrZ`sM*K&SWewNDjC}i+GJ)B~+ zX)GfJ?qm0tqba6$3M!mA{1O^yi)^7HWq5xhtfNtU|FW>&+_J2Qwiewi$0#NA1$CW* zs=_z>tH>mHKa%~{0AdpcY1pvUtn;kMx;A!&Un%Id76PN1CaSAZqvl=Iv@%`f>6|Mlnjk*?@;bI#1oP--C~!3VO@ z5w_{ZawYr{Amz;7@$wQWZ(ydS;n8T`SSPC#y8YRDFo?BKHj|^5{}K^9HC`RQbdB{9 zXmh;yUAG}LWabD40{aO1ySoLuJY0g8yA~_7YXfe3RUt{DTgjIIIbH6Hi~f zAHWq8_Oa(qSj?pi$?I~J&`?ST56S$8*Nkc5NrS6-aTk8a^uW{anAK|4Md8GL$?{&F zW#7Fi*}x6*~9h;qG3Xgh5ZQ4n~f*xByTaEOwOkU zf5Bjg!O+mQC{mHH)$+uQh5xHhfLFJmkcfeRWY~zfI9DJ3by*EE3O4>p;N5vBDU`0p zfrck<{rvoK>@z$fIO4|_rXuChmT$^ft-_{+$?~a&{Y(2FQ)H?*&KoAfmikM*COrb} z(`~N_0(60U0w#Sce^Qm>DH>JPon^MTBPUj#Vl}A{C#4g(qr(tM1?W8(mFGGSTez+f zdP3NkZ2V_LHXd`Fz69*LX)n`op{p)l_Y<`=9$Ppdq6DHSM}IJ0Hx_%F-&>qI!PMw~ z^;|uK6ESA~Og64uW-5$z<0m4|H$y1+nw_aZ2*$A> z)F6t1I%+B(so8ff7+gyYJ>-S>gP$)4Kxd+Fj}{>hN5{((-#i{B-g&j77n5!PsT)CZ z0l$jN9ACci1>=NZ<08H6SXACbMOPkibrJf z7{rMFmIf+paPO(+JlsZ?B-uvdPM8ePRgy*?td=5uqa@!XBW(IA;-u=%UgTFs2lzN| z%ARa^i)%17n}r3Bou-mNzV@7NN`K5a>?!H6xkD)6U zkLj{oW4t2QquPP&j~~xeaA$t}{d%O3S4J)=#OsGTQW$|invqux%&WL3)cm!PrYlI& zXV*LyIq-p=GJNZSF@8?ijI=^Iw^=Ho(n(HDQyINp|A$Oh6N*lb zhe%&Ll`W&)b=ibO9%1W+?7F^o*23hE7&VLp2zrW}*9&`r{SSwSn|~A} z*KDSLgjPw`%UgJHtPAJJZC(oS8479DC>xb6;UFSr`D&T*MP!vy(><}wMwuQ2U!upj zMmHa`Gw(eVoVL||U^-g&Si3=6El)2~jADb${_Pv1c)5vFxAYeF6HL(65wfjdPuhX5 z$1aD2!Vck9{GZcF@dm{6-c7%3`{~NgkLEuk-q-1Abh$p9GaO2@2IGa2o{@ zCCy?6K;94OAI=Uhaf%HagpEitjdHcxMSUAY+gnx_w2L!+Me+;us~mu4*uURr8IYzn zmJxmDho%B@M3<;MryNL_-@(^L%=iZXrIFScdltl=?`l<_Z$+b>MjcaQ=If`UEXe`- zTlH)2s$ikb^nk9Gets(;W6$!ny{r}Ku6kohKG3;nUxcGagW6&(qPbwjhi=Lx&?7j= zE5O}7Fu-c*um*h-6Gs6K&**1HWUw%b=-?bf9cAL(^Irc;)_YojSkBW;x_O=ly9j*i zdWRD3SEwR_?k9;GU$39v@BWPdpv>-z$uIbmjs2n+I+1XJEGCCf)OAbNZgokEf0o` zvxa*{;|2wvojo5{H4Mj503?Vvzg#r@S@U@a33VprDT98B4-i@Z{lxHJlyEGDOFJs7 z-8a&oZh0sx zNq@*;puC3pEfv>i04v)o+Efk>K?CJ078eMtB`4>=oYN? znql;r{j|a;4*$$%}sc}DwW@Pf7gR-z}FFd6C2 zu3*!+W7^Ug!g$;7+fEJOfNpDlc(~A7`KALSbh5uj%f^}doX;7^CnVHFa%`WYxwtr6 zRR!~^5p4c&a7aY8VQ2#LhPzIy*=DVGZ$Iv;z5vy%!-$*eIA!iGDNdIGn|FS%u(v~x z7adT+MooUt!@Yl2*8_V{{FdnE+rfMA_JW1;6!6NX5TgXEn8KbGdAjcEf??H=;J2q> zb;K=QxYxQ2W`n|)wTt--He>w1^x@p+-6J*Jj}QnXa6dC-vJw+VttZ-L)o6zU9CX4{ zb8D+aB!S-?nTV8Zt?Lzv$rt@Z@qOgM8}3jjujq(iGs@a1cS*=KWO!@?1&!)r`tVat zp>5^bZ5g&KJl6IgSUblhpf$^|5U!L%#6m}#E88|Rk`V=o+KW&8ZfWpLpkp_N{if0hmbpC`4|Ll!Ib^Z2JE zgmU+Qf9p^SX%RGs#tPIv!*^jz=+rHa9t0U4zO|z-x;)w054=yB5bV)N%F_1j?&0qW zgqr)i-#jId*@|OS`_7QZt&Ut?HJfijPi@$##oit-wnFtx58is)-9(<8L)B>hQ?KiX z$wOFZ#>&C^(C20Mmlwsh`gxNZZkjvq3sND&rbz6pr7SbBs=+0yw>#{02W-Rl(tuHRi8Pvvx-?cRX}9v%O!xH z7*?WLQoz-fONB?rlgd%BUmVzJ@g1cnOr<~;*zEC!5#xfypf}XoQEhGB6#GgUTWeFW z!SSdGcLlm{p7}q7&o;Y)%n(yc9C2Fln#>1>(VDkp-vCL?Q&~Lyxr)R?eN~x<`L=wh zO(H$Z7MdXAgunEPN>0T+?ahui^G&j0sM`0&Y4^u8Z^bYUpgA@-zJYoBoEe| zw-k0%b~vzi1NjlpgvuivhC>xUUOxLjRG1io@=e}uW`_puj|RdC*@6rWvl)IS{K~**BptoHz3OG-M?;|@O$YAzoG&0f8nX)z z|AQLpTF9T-ouD4=1`nvAX(Q^%9ha|S5OA99 zqV<6Yes$hQoEFx`cd{0an>dZ!7=z%0IILPxr($L#6D?WG7f0ysaUg1IZmrom42fJV zDiE5@Vo|`WFluGF7v|n2w{YHW`BNV*T1!fHuKrIK;9eC0 za*~)uN)-u7#8tNbwUw>w2Yo_M6@v|I)V)=}4(|DSpQb{`5-MO1?{%q%ULQ}Fo7t)J zG*HmvtwC$MP0c9`FnZ?uZ-&}rhU`)Mojm`UDcs$)FLZhG-c->u?GO2g=Y{Nom??_b zcrF$!idbp@`}g_H{f8)M{@Gp>HHqE08P4J51=#OtC2Gqbc71tub$EVSE`p8=tW^%TE@~@Vyoxaj)0;)} z7J-8~&kH7L1An+Q^Cqk$@?rdGg<5M=W$0neOK9BFNJEy7EdaxYA6TRR@^l4SaIW#{ zpHoPgd+lytzTOa{ngqD+MRcERJdN#~?+?X&w($1$^764?D>v}31#R{~YT=`FCpIrJ z#lT=aO0XlovVuOQwk8kg7JVAFeSa@GVo2)0_Y({o6yd2`(y}* zHQix8qIWkmp@j`fAQ*9$miX`c-I*t9o%Nua z4N+O!^X#~w+q0eKt-G46k(TAFbFx=-246vv51%eJA|4aJC~{Vg%B%j4MQga`o+_HB zuP-JfF2REF8q&$g_x?DIw+`ogg5brgbZgNmEa~cX=Y93}xxw>}MC6gw13zN17V%Zp zSxTBBeW6veHbDVn1LT7E%L^fMe<>fx&MBMf3VMIk4tcikeL3K_;l@Sphca;dVenu+ zp8Kjl+MDnqRt<7DT&7>t{ftXcXUqT<)GMtn-I^D5Zl}3Gtb)_bMlO|<;i9`qKk=xM z+v`le$=&9ocS;ykYgRak*2{tK*wwo&d84q&HqNl%99hR?p-V7N#uz~0`cx#&A)W8@ zA!_yu>0JQbC%QN9U@*b!$JI zZ@AC2bXW(9hn)KYPaJpb>0GSPF2hFV-^{wGn~$X;^{Z7Jz@w`~DZK1=)~t?(LV!G{ zn#Co`>I*>`Y0p)!tvo@wWXBAsm3Mlk5}QOH3uljd^?ahdm1`rdC2l{uGWj+ z3S0?{ugq@>JPr|{BCoy=)oW%h6DFRC*!y!0AzWSi3-ft_XZz7jiF3U6cV(Uh_E($sf0|n2t&7&zbkUM_?a@(p#vC^@ z+}T$Q21@9}W@MBg{)m6l&s`=k>ngMDH&Mx_6`9WPSHK)~;(?HE^ns`7Q5py5#jwCt zXEp=fa3zL{44qYoqQr1v)=oQ9e(9GswTGx%Z?%4bSxAS` z)yf{VHTNABMn-vXD;pmct7<;n(5bU33mJ<7Hag03Z!+<{@RN9e(Tw$E#^DLlnv7w? zA5lSrqOKSf@v6kvu`*M25Iifl6iHWBRp)b32UOA+`O_TkoqPKt4wn5s+FI5j;xeH` zp+#V?$tQ-ed>h>q9pBMMA_T@DXX#(g+W9K;dzh!xvVR@bc@iV4>+$=>lc>f>npp?7 z+wZMyCXVVG$|W1dzuZSe=ZS!}*#r148xUU5vnpc7)nL53u6raR^$$`?te@eVe4PjBXaqD1W##`pmr)O>k>s)Evj3L7 zJui`_pVC;t&9)#Cn&fBvCV}-;l5y)Yi*ut0ZefA2{b(}#5A=&sdWBgE5tG019e_5F z-6ZjtNwp_^ciC_z95t8*@-{QEv5|ErbTJ8iMPnx(w}kzA+s}K@+=`)-65I3I?ip}} zq@`&$otdGfm;eq&FjLJcC~~=n#>S4T`S~gp?Fz^Yr9z}U>W#F*Rh$8NpGtp@H~Q+Q z^4>GI;&T-Zg1N+A(Y?s$_+~!NMxjNQj$t4$f^{1(bijQerLaX8{x76G;WBztNr^x6 z+MG{>?<~3SL)L8iTQeM@`!X2BMPxTiShp|DdBmP?X1wQz&oum5{X*9wDg;|nA`XqS z0Yz$1@X)(4g@*5nT7*E)OaIX71z@(j88h!3PrM9F*UDxjs4Uy0Rt3JXayGe$hty*YQmc;Ol^KiR_>lQ{A#TTpvuJ?wA}A`~op zkB#Ct^gXc;u+L&{%Q6lee=rXttIwQt4x$yES`NEL=kT+Ze(Lx`Ed;irA_w&iXRm5; z@j>oj*8{b!pDfhZt~YV)|306^hieI=2?;bbwg=M8HpGzx=|wFg(_h9G?lS7=q+^X6 z@Bts&wpJ3Jp)P1+gJfI^E_6+O=*%W6auz?Rsnh-eMXZWzEm*!fcLwY<AJ-2*!t? zTZ5yW@i;h}WbyY`2&eeclMIsA*Zr=l0{!2_3GRshF)E7$!|zijq&n;))>$w%)r39& zlKegA+1UU8L3FHhe0W`)zLcDqzN97a(n=v_0ETC8L}X)C++HQ+&<+w;TK-w zxe8pnt?74V$stwHg%Oz9+A&})eNKckGSQF2lMZT(?CkM~7pkT0T=Kr#NM>Po-pP_V zwG%Hci+GG`zn+k4{f2CrJX-LG^8+@zqJTpfAt9iCVh-Kg2s&P9 z0q7wV@XCYj}f0cACEEBA+mm$Rr)|fU70_c^h@VP zM>MiJ>qWh!w0i0rzAd=6W0z?}%=V3W;k`zFrK)%#uePr1)#ytgQ@zrd#UW^PvF^THS5#SCoS;m5h(Uw?5DGiV2)KLa}7JikiFs>SMZ!xz&Xrp@JhvE*P`{<{aYBi)1u=pQf=z14 zyT;94`iW~hwD6=p96K})?{5zW@mV*}la;_@E^mpBQx@QK?LZjqFTc2X^eh#ka=;Yk z$Zmf@q_dSgTaA}ot05&vtuV0*`>uBdeDmDBIDgv!&EN{nx6KJYA0#ZMnJAs$E=IeB z>)jNH1v`6Q7`tz>UUdW+e@YwctWXT7jT-9QoSvOE_6`P(-N}L4<;;VVkSe>nN-iO$ zT+zdljf18{)8kFAE|1q~4_i$2)9>cp$KyZ{jyj7(lJ@y66Hz|2%`j(AxRlup7->QO zwp(%WS#Vh1SKq<4bc```eVN1$INd_oDoEgN`B=a>`c&YdEU4GjJ?*wTxXPwL@av{~eTRa4| zI#{SWpO8c_fM literal 0 HcmV?d00001 diff --git a/indego/smartVISU_dropins/lib/weather/pics/cloud_8.png b/indego/smartVISU_dropins/lib/weather/pics/cloud_8.png new file mode 100644 index 0000000000000000000000000000000000000000..b6d05c51b06f3ff5a7f534676de3c7340b81429d GIT binary patch literal 72761 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%0D|RNQRSyyQ(R=@^_)}U<{S*T=r{x#wsAeX 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 +
+
+

Bild

+ +
+ {{ multimedia.image('image3', 'tmp/garden.svg', 'corner','20s') }}
+ +
+
Update: {{ basic.formula('MapDate', 'indego.mapSvgCacheDate', 'short') }}
+
xpos: {{ basic.value('xPos_indego', 'indego.xPos') }} | ypos: {{ basic.value('yPos_indego', 'indego.yPos') }}
+
svg_xpos: {{ basic.value('svg_xPos_indego', 'indego.svg_xPos') }} | svg_ypos: {{ basic.value('svg_yPos_indego', 'indego.svg_yPos') }}
+
+
+ + + + + +
+
+
+

Indego

+ {{ large.symbol('state_offline', 'indego.online','','scene_robo_lawnmower_offline.svg',0) }} + {{ large.symbol('state_docked', ['indego.docked','indego.online'],'','scene_robo_lawnmower_docked.svg','','and') }} + {{ large.symbol('state_moving', ['indego.moving','indego.online'],'','scene_robo_lawnmower_moving.svg','','and') }} + {{ large.symbol('state_pause', ['indego.pause','indego.online'],'','scene_robo_lawnmower_stopp.svg','','and') }} + + {{ large.symbol('state_help', 'indego.help','','scene_robo_lawnmower_help.svg') }} + +
+
+ + {{ basic.value('prozentwert_indego', 'indego.mowedPercent', '%') }}
+ {{ basic.value('status_indego', 'indego.state_str') }} + +
+
+
+ + {{ basic.switch('Indego_start', 'indego.MOW', 'scene_robo_lawnmower_start.svg', 'scene_robo_lawnmower_start.svg') }} + + {{ basic.switch('Indego_pause', 'indego.PAUSE', 'scene_robo_lawnmower_stop.svg', 'scene_robo_lawnmower_stop.svg') }} + + {{ basic.switch('Indego_return', 'indego.RETURN', 'scene_robo_lawnmower_dock.svg', 'scene_robo_lawnmower_dock.svg') }} +
+ + + + + + + + + + + +
+ smartmodus: + + {{ basic.flip('indego_smarsdt', 'indego.SMART', 'an', 'aus')}} +
+ Frequenz + + {{ input.numberinput('frequenz', 'indego.SMART.frequenz') }} +
+ + + +
+
+
+ +
+
+
+

Historie

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Gesamte Fahrzeit: + + {{ basic.float('Fahrzeit_gesamt', 'indego.runtimeTotalOperationMins.hours', 'h') }} +
+ Gesamte Ladezeit: + + {{ basic.float('Ladezeit_gesamt', 'indego.runtimeTotalChargeMins.hours', 'h') }} +
+ Fahrzeit heute: + + {{ basic.float('Fahrzeit_heute', 'indego.runtimeSessionOperationMins', 'm') }} +
+ Ladezeit heute: + + {{ basic.float('Ladezeit_heute', 'indego.runtimeSessionChargeMins', 'm') }} +
+ Letzte Bewegung: + + {{ basic.formula('mowedDate', 'indego.mowedDate', 'time') }} +
+ Mähmodus: + + {{ basic.value('mowmode', 'indego.mowmode') }} +
+ Nächste Fahrzeit (Smart): + + {{ basic.formula('next_time_smartmow', 'indego.next_time', 'short') }} +
+ + +
+
+ +
+
+
+

Daten

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Benutzer: + + {{ basic.value('user', 'indego.alm_name', '') }} +
+ Modus: + + {{ basic.value('mode', 'indego.alm_mode') }} +
+ Firmware Version: + + {{ basic.value('Firmware', 'indego.alm_firmware_version', '') }} +
+ letztes Update: + + {{ basic.formula('Firmware_changed', 'indego.alm_firmware_version.changed', 'short') }} +
+ vorherige Firmware Version: + + {{ basic.value('Firmware_before', 'indego.alm_firmware_version.before', '') }} +
+ Seriennummer: + + {{ basic.value('Serial', 'indego.alm_sn', '') }} +
+ Service Counter: + + {{ basic.value('Service_Counter', 'indego.service_counter', '') }} +
+ Baretoolnumber: + + {{ basic.value('baretool', 'indego.bareToolnumber') }} +
+ + +
+
+ +
+
+
+ +

+ {{ basic.value('Fehlermeldung_headline', 'indego.alert_headline', '') }} +

+ +
+ {{ basic.value('Fehlermeldung', 'indego.alert_message', '') }} +
+ + + + + + + + + +
+ Datum: + + {{ basic.formula('alert-datum', 'indego.alert_date', 'short') }} +
+ + +
+
+
+ +
+
+
+

Vorhersage {{ basic.value('indego_weather_day_0_wochentag','indego.weather.day_0.wochentag') }} Temperaturen / Regenwahrscheinlichkeit

+ + + + + + + +
+ + Sonnenstunden: {{ basic.value('indego_weather_day_0_sun', 'indego.weather.day_0.sun', '') }} + + + + {{ basic.float('indego_weather_day_0_tn', 'indego.weather.day_0.tn', '°') }} - {{ basic.float('indego_weather_day_0_tx', 'indego.weather.day_0.tx', '°') }} + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Nachts: + + {{ basic.symbol('spells_int_0', 'indego.weather.int_0.spells','','sun_5.png') }} + {{ basic.symbol('sonne_int_0', 'indego.weather.int_0.Sonne','','sun_1.png') }} + {{ basic.symbol('wolken_int_0', 'indego.weather.int_0.Wolken','','cloud_5.png') }} + {{ basic.symbol('regen_int_0', 'indego.weather.int_0.Regen','','cloud_8.png') }} + {{ basic.symbol('gewitter_int_0', 'indego.weather.int_0.Gewitter','','cloud_10.png') }} + + {{ basic.float('indego_wetter_int_0_td', 'indego.weather.int_0.td', '°') }} - {{ basic.float('indego_wetter_int_0_tt', 'indego.weather.int_0.tt', '°') }} + + {{ basic.float('indego_wetter_int_0_rrr', 'indego.weather.int_0.rrr', 'l/m²') }} + + {{ basic.float('indego_wetter_int_0_prrr', 'indego.weather.int_0.prrr', '%') }} +
+ Morgens: + + {{ basic.symbol('spells_int_1', 'indego.weather.int_1.spells','','sun_5.png') }} + {{ basic.symbol('sonne_int_1', 'indego.weather.int_1.Sonne','','sun_1.png') }} + {{ basic.symbol('wolken_int_1', 'indego.weather.int_1.Wolken','','cloud_5.png') }} + {{ basic.symbol('regen_int_1', 'indego.weather.int_1.Regen','','cloud_8.png') }} + {{ basic.symbol('gewitter_int_1', 'indego.weather.int_1.Gewitter','','cloud_10.png') }} + + {{ basic.float('indego_wetter_int_1_td', 'indego.weather.int_1.td', '°') }} - {{ basic.float('indego_wetter_int_1_tt', 'indego.weather.int_1.tt', '°') }} + + {{ basic.float('indego_wetter_int_1_rrr', 'indego.weather.int_1.rrr', 'l/m²') }} + + {{ basic.float('indego_wetter_int_1_prrr', 'indego.weather.int_1.prrr', '%') }} +
+ Mittags: + + {{ basic.symbol('spells_int_2', 'indego.weather.int_2.spells','','sun_5.png') }} + {{ basic.symbol('sonne_int_2', 'indego.weather.int_2.Sonne','','sun_1.png') }} + {{ basic.symbol('wolken_int_2', 'indego.weather.int_2.Wolken','','cloud_5.png') }} + {{ basic.symbol('regen_int_2', 'indego.weather.int_2.Regen','','cloud_8.png') }} + {{ basic.symbol('gewitter_int_2', 'indego.weather.int_2.Gewitter','','cloud_10.png') }} + + {{ basic.float('indego_wetter_int_2_td', 'indego.weather.int_2.td', '°') }} - {{ basic.float('indego_wetter_int_2_tt', 'indego.weather.int_2.tt', '°') }} + + {{ basic.float('indego_wetter_int_2_rrr', 'indego.weather.int_2.rrr', 'l/m²') }} + + {{ basic.float('indego_wetter_int_2_prrr', 'indego.weather.int_2.prrr', '%') }} +
+ Abends: + + {{ basic.symbol('spells_int_3', 'indego.weather.int_3.spells','','sun_5.png') }} + {{ basic.symbol('sonne_int_3', 'indego.weather.int_3.Sonne','','sun_1.png') }} + {{ basic.symbol('wolken_int_3', 'indego.weather.int_3.Wolken','','cloud_5.png') }} + {{ basic.symbol('regen_int_3', 'indego.weather.int_3.Regen','','cloud_8.png') }} + {{ basic.symbol('gewitter_int_3', 'indego.weather.int_3.Gewitter','','cloud_10.png') }} + + {{ basic.float('indego_wetter_int_3_td', 'indego.weather.int_3.td', '°') }} - {{ basic.float('indego_wetter_int_3_tt', 'indego.weather.int_3.tt', '°') }} + + {{ basic.float('indego_wetter_int_3_rrr', 'indego.weather.int_3.rrr', 'l/m²') }} + + {{ basic.float('indego_wetter_int_3_prrr', 'indego.weather.int_3.prrr', '%') }} +
+ +
+
+
+ + +
+
+
+

Vorhersage {{ basic.value('indego_weather_day_1_wochentag','indego.weather.day_1.wochentag') }} Temperaturen / Regenwahrscheinlichkeit

+ + + + + + + +
+ + Sonnenstunden: {{ basic.value('indego_weather_day_1_sun', 'indego.weather.day_1.sun', '') }} + + + + {{ basic.float('indego_weather_day_1_tn', 'indego.weather.day_1.tn', '°') }} - {{ basic.float('indego_weather_day_1_tx', 'indego.weather.day_1.tx', '°') }} + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Nachts: + + {{ basic.symbol('spells_int_4', 'indego.weather.int_4.spells','','sun_5.png') }} + {{ basic.symbol('sonne_int_4', 'indego.weather.int_4.Sonne','','sun_1.png') }} + {{ basic.symbol('wolken_int_4', 'indego.weather.int_4.Wolken','','cloud_5.png') }} + {{ basic.symbol('regen_int_4', 'indego.weather.int_4.Regen','','cloud_8.png') }} + {{ basic.symbol('gewitter_int_4', 'indego.weather.int_4.Gewitter','','cloud_10.png') }} + + {{ basic.float('indego_wetter_int_4_td', 'indego.weather.int_4.td', '°') }} - {{ basic.float('indego_wetter_int_4_tt', 'indego.weather.int_4.tt', '°') }} + + {{ basic.float('indego_wetter_int_4_rrr', 'indego.weather.int_4.rrr', 'l/m²') }} + + {{ basic.float('indego_wetter_int_4_prrr', 'indego.weather.int_4.prrr', '%') }} +
+ Morgens: + + {{ basic.symbol('spells_int_5', 'indego.weather.int_5.spells','','sun_5.png') }} + {{ basic.symbol('sonne_int_5', 'indego.weather.int_5.Sonne','','sun_1.png') }} + {{ basic.symbol('wolken_int_5', 'indego.weather.int_5.Wolken','','cloud_5.png') }} + {{ basic.symbol('regen_int_5', 'indego.weather.int_5.Regen','','cloud_8.png') }} + {{ basic.symbol('gewitter_int_5', 'indego.weather.int_5.Gewitter','','cloud_10.png') }} + + {{ basic.float('indego_wetter_int_5_td', 'indego.weather.int_5.td', '°') }} - {{ basic.float('indego_wetter_int_5_tt', 'indego.weather.int_5.tt', '°') }} + + {{ basic.float('indego_wetter_int_5_rrr', 'indego.weather.int_5.rrr', 'l/m²') }} + + {{ basic.float('indego_wetter_int_5_prrr', 'indego.weather.int_5.prrr', '%') }} +
+ Mittags: + + {{ basic.symbol('spells_int_6', 'indego.weather.int_6.spells','','sun_5.png') }} + {{ basic.symbol('sonne_int_6', 'indego.weather.int_6.Sonne','','sun_1.png') }} + {{ basic.symbol('wolken_int_6', 'indego.weather.int_6.Wolken','','cloud_5.png') }} + {{ basic.symbol('regen_int_6', 'indego.weather.int_6.Regen','','cloud_8.png') }} + {{ basic.symbol('gewitter_int_6', 'indego.weather.int_6.Gewitter','','cloud_10.png') }} + + {{ basic.float('indego_wetter_int_6_td', 'indego.weather.int_6.td', '°') }} - {{ basic.float('indego_wetter_int_6_tt', 'indego.weather.int_6.tt', '°') }} + + {{ basic.float('indego_wetter_int_6_rrr', 'indego.weather.int_6.rrr', 'l/m²') }} + + {{ basic.float('indego_wetter_int_6_prrr', 'indego.weather.int_6.prrr', '%') }} +
+ Abends: + + {{ basic.symbol('spells_int_7', 'indego.weather.int_7.spells','','sun_5.png') }} + {{ basic.symbol('sonne_int_7', 'indego.weather.int_7.Sonne','','sun_1.png') }} + {{ basic.symbol('wolken_int_7', 'indego.weather.int_7.Wolken','','cloud_5.png') }} + {{ basic.symbol('regen_int_7', 'indego.weather.int_7.Regen','','cloud_8.png') }} + {{ basic.symbol('gewitter_int_7', 'indego.weather.int_7.Gewitter','','cloud_10.png') }} + + {{ basic.float('indego_wetter_int_7_td', 'indego.weather.int_7.td', '°') }} - {{ basic.float('indego_wetter_int_7_tt', 'indego.weather.int_7.tt', '°') }} + + {{ basic.float('indego_wetter_int_7_rrr', 'indego.weather.int_7.rrr', 'l/m²') }} + + {{ basic.float('indego_wetter_int_7_prrr', 'indego.weather.int_7.prrr', '%') }} +
+ +
+
+
+ + +
+
+
+

Vorhersage {{ basic.value('indego_weather_day_2_wochentag','indego.weather.day_2.wochentag') }} Temperaturen / Regenwahrscheinlichkeit

+ + + + + + + +
+ + Sonnenstunden: {{ basic.value('indego_weather_day_2_sun', 'indego.weather.day_2.sun', '') }} + + + + {{ basic.float('indego_weather_day_2_tn', 'indego.weather.day_2.tn', '°') }} - {{ basic.float('indego_weather_day_2_tx', 'indego.weather.day_2.tx', '°') }} + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Nachts: + + {{ basic.symbol('spells_int_8', 'indego.weather.int_8.spells','','sun_5.png') }} + {{ basic.symbol('sonne_int_8', 'indego.weather.int_8.Sonne','','sun_1.png') }} + {{ basic.symbol('wolken_int_8', 'indego.weather.int_8.Wolken','','cloud_5.png') }} + {{ basic.symbol('regen_int_8', 'indego.weather.int_8.Regen','','cloud_8.png') }} + {{ basic.symbol('gewitter_int_8', 'indego.weather.int_8.Gewitter','','cloud_10.png') }} + + {{ basic.float('indego_wetter_int_8_td', 'indego.weather.int_8.td', '°') }} - {{ basic.float('indego_wetter_int_8_tt', 'indego.weather.int_8.tt', '°') }} + + {{ basic.float('indego_wetter_int_8_rrr', 'indego.weather.int_8.rrr', 'l/m²') }} + + {{ basic.float('indego_wetter_int_8_prrr', 'indego.weather.int_8.prrr', '%') }} +
+ Morgens: + + {{ basic.symbol('spells_int_9', 'indego.weather.int_9.spells','','sun_5.png') }} + {{ basic.symbol('sonne_int_9', 'indego.weather.int_9.Sonne','','sun_1.png') }} + {{ basic.symbol('wolken_int_9', 'indego.weather.int_9.Wolken','','cloud_5.png') }} + {{ basic.symbol('regen_int_9', 'indego.weather.int_9.Regen','','cloud_8.png') }} + {{ basic.symbol('gewitter_int_9', 'indego.weather.int_9.Gewitter','','cloud_10.png') }} + + {{ basic.float('indego_wetter_int_9_td', 'indego.weather.int_9.td', '°') }} - {{ basic.float('indego_wetter_int_9_tt', 'indego.weather.int_9.tt', '°') }} + + {{ basic.float('indego_wetter_int_9_rrr', 'indego.weather.int_9.rrr', 'l/m²') }} + + {{ basic.float('indego_wetter_int_9_prrr', 'indego.weather.int_9.prrr', '%') }} +
+ Mittags: + + {{ basic.symbol('spells_int_10', 'indego.weather.int_10.spells','','sun_5.png') }} + {{ basic.symbol('sonne_int_10', 'indego.weather.int_10.Sonne','','sun_1.png') }} + {{ basic.symbol('wolken_int_10', 'indego.weather.int_10.Wolken','','cloud_5.png') }} + {{ basic.symbol('regen_int_10', 'indego.weather.int_10.Regen','','cloud_8.png') }} + {{ basic.symbol('gewitter_int_10', 'indego.weather.int_10.Gewitter','','cloud_10.png') }} + + {{ basic.float('indego_wetter_int_10_td', 'indego.weather.int_10.td', '°') }} - {{ basic.float('indego_wetter_int_10_tt', 'indego.weather.int_10.tt', '°') }} + + {{ basic.float('indego_wetter_int_10_rrr', 'indego.weather.int_10.rrr', 'l/m²') }} + + {{ basic.float('indego_wetter_int_10_prrr', 'indego.weather.int_10.prrr', '%') }} +
+ Abends: + + {{ basic.symbol('spells_int_11', 'indego.weather.int_11.spells','','sun_5.png') }} + {{ basic.symbol('sonne_int_11', 'indego.weather.int_11.Sonne','','sun_1.png') }} + {{ basic.symbol('wolken_int_11', 'indego.weather.int_11.Wolken','','cloud_5.png') }} + {{ basic.symbol('regen_int_11', 'indego.weather.int_11.Regen','','cloud_8.png') }} + {{ basic.symbol('gewitter_int_11', 'indego.weather.int_11.Gewitter','','cloud_10.png') }} + + {{ basic.float('indego_wetter_int_11_td', 'indego.weather.int_11.td', '°') }} - {{ basic.float('indego_wetter_int_11_tt', 'indego.weather.int_11.tt', '°') }} + + {{ basic.float('indego_wetter_int_11_rrr', 'indego.weather.int_11.rrr', 'l/m²') }} + + {{ basic.float('indego_wetter_int_11_prrr', 'indego.weather.int_11.prrr', '%') }} +
+ +
+
+
+ +
+
+
+

Vorhersage {{ basic.value('indego_weather_day_3_wochentag','indego.weather.day_3.wochentag') }} Temperaturen / Regenwahrscheinlichkeit

+ + + + + + + +
+ + Sonnenstunden: {{ basic.value('indego_weather_day_3_sun', 'indego.weather.day_3.sun', '') }} + + + + {{ basic.float('indego_weather_day_3_tn', 'indego.weather.day_3.tn', '°') }} - {{ basic.float('indego_weather_day_3_tx', 'indego.weather.day_3.tx', '°') }} + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Nachts: + + {{ basic.symbol('spells_int_12', 'indego.weather.int_12.spells','','sun_5.png') }} + {{ basic.symbol('sonne_int_12', 'indego.weather.int_12.Sonne','','sun_1.png') }} + {{ basic.symbol('wolken_int_12', 'indego.weather.int_12.Wolken','','cloud_5.png') }} + {{ basic.symbol('regen_int_12', 'indego.weather.int_12.Regen','','cloud_8.png') }} + {{ basic.symbol('gewitter_int_12', 'indego.weather.int_12.Gewitter','','cloud_10.png') }} + + {{ basic.float('indego_wetter_int_12_td', 'indego.weather.int_12.td', '°') }} - {{ basic.float('indego_wetter_int_12_tt', 'indego.weather.int_12.tt', '°') }} + + {{ basic.float('indego_wetter_int_12_rrr', 'indego.weather.int_12.rrr', 'l/m²') }} + + {{ basic.float('indego_wetter_int_12_prrr', 'indego.weather.int_12.prrr', '%') }} +
+ Morgens: + + {{ basic.symbol('spells_int_13', 'indego.weather.int_13.spells','','sun_5.png') }} + {{ basic.symbol('sonne_int_13', 'indego.weather.int_13.Sonne','','sun_1.png') }} + {{ basic.symbol('wolken_int_13', 'indego.weather.int_13.Wolken','','cloud_5.png') }} + {{ basic.symbol('regen_int_13', 'indego.weather.int_13.Regen','','cloud_8.png') }} + {{ basic.symbol('gewitter_int_13', 'indego.weather.int_13.Gewitter','','cloud_10.png') }} + + {{ basic.float('indego_wetter_int_13_td', 'indego.weather.int_13.td', '°') }} - {{ basic.float('indego_wetter_int_13_tt', 'indego.weather.int_13.tt', '°') }} + + {{ basic.float('indego_wetter_int_13_rrr', 'indego.weather.int_13.rrr', 'l/m²') }} + + {{ basic.float('indego_wetter_int_13_prrr', 'indego.weather.int_13.prrr', '%') }} +
+ Mittags: + + {{ basic.symbol('spells_int_14', 'indego.weather.int_14.spells','','sun_5.png') }} + {{ basic.symbol('sonne_int_14', 'indego.weather.int_14.Sonne','','sun_1.png') }} + {{ basic.symbol('wolken_int_14', 'indego.weather.int_14.Wolken','','cloud_5.png') }} + {{ basic.symbol('regen_int_14', 'indego.weather.int_14.Regen','','cloud_8.png') }} + {{ basic.symbol('gewitter_int_14', 'indego.weather.int_14.Gewitter','','cloud_10.png') }} + + {{ basic.float('indego_wetter_int_14_td', 'indego.weather.int_14.td', '°') }} - {{ basic.float('indego_wetter_int_14_tt', 'indego.weather.int_14.tt', '°') }} + + {{ basic.float('indego_wetter_int_14_rrr', 'indego.weather.int_14.rrr', 'l/m²') }} + + {{ basic.float('indego_wetter_int_14_prrr', 'indego.weather.int_14.prrr', '%') }} +
+ Abends: + + {{ basic.symbol('spells_int_15', 'indego.weather.int_15.spells','','sun_5.png') }} + {{ basic.symbol('sonne_int_15', 'indego.weather.int_15.Sonne','','sun_1.png') }} + {{ basic.symbol('wolken_int_15', 'indego.weather.int_15.Wolken','','cloud_5.png') }} + {{ basic.symbol('regen_int_15', 'indego.weather.int_15.Regen','','cloud_8.png') }} + {{ basic.symbol('gewitter_int_15', 'indego.weather.int_15.Gewitter','','cloud_10.png') }} + + {{ basic.float('indego_wetter_int_15_td', 'indego.weather.int_15.td', '°') }} - {{ basic.float('indego_wetter_int_15_tt', 'indego.weather.int_15.tt', '°') }} + + {{ basic.float('indego_wetter_int_15_rrr', 'indego.weather.int_15.rrr', 'l/m²') }} + + {{ basic.float('indego_wetter_int_15_prrr', 'indego.weather.int_15.prrr', '%') }} +
+ +
+
+
+ + +
+
+
+

Vorhersage {{ basic.value('indego_weather_day_4_wochentag','indego.weather.day_4.wochentag') }} Temperaturen / Regenwahrscheinlichkeit

+ + + + + + + +
+ + Sonnenstunden: {{ basic.value('indego_weather_day_4_sun', 'indego.weather.day_4.sun', '') }} + + + + {{ basic.float('indego_weather_day_4_tn', 'indego.weather.day_4.tn', '°') }} - {{ basic.float('indego_weather_day_4_tx', 'indego.weather.day_4.tx', '°') }} + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ Nachts: + + {{ basic.symbol('spells_int_16', 'indego.weather.int_16.spells','','sun_5.png') }} + {{ basic.symbol('sonne_int_16', 'indego.weather.int_16.Sonne','','sun_1.png') }} + {{ basic.symbol('wolken_int_16', 'indego.weather.int_16.Wolken','','cloud_5.png') }} + {{ basic.symbol('regen_int_16', 'indego.weather.int_16.Regen','','cloud_8.png') }} + {{ basic.symbol('gewitter_int_16', 'indego.weather.int_16.Gewitter','','cloud_10.png') }} + + {{ basic.float('indego_wetter_int_16_td', 'indego.weather.int_16.td', '°') }} - {{ basic.float('indego_wetter_int_16_tt', 'indego.weather.int_16.tt', '°') }} + + {{ basic.float('indego_wetter_int_16_rrr', 'indego.weather.int_16.rrr', 'l/m²') }} + + {{ basic.float('indego_wetter_int_16_prrr', 'indego.weather.int_16.prrr', '%') }} +
+ Morgens: + + {{ basic.symbol('spells_int_17', 'indego.weather.int_17.spells','','sun_5.png') }} + {{ basic.symbol('sonne_int_17', 'indego.weather.int_17.Sonne','','sun_1.png') }} + {{ basic.symbol('wolken_int_17', 'indego.weather.int_17.Wolken','','cloud_5.png') }} + {{ basic.symbol('regen_int_17', 'indego.weather.int_17.Regen','','cloud_8.png') }} + {{ basic.symbol('gewitter_int_17', 'indego.weather.int_17.Gewitter','','cloud_10.png') }} + + {{ basic.float('indego_wetter_int_17_td', 'indego.weather.int_17.td', '°') }} - {{ basic.float('indego_wetter_int_17_tt', 'indego.weather.int_17.tt', '°') }} + + {{ basic.float('indego_wetter_int_17_rrr', 'indego.weather.int_17.rrr', 'l/m²') }} + + {{ basic.float('indego_wetter_int_17_prrr', 'indego.weather.int_17.prrr', '%') }} +
+ Mittags: + + {{ basic.symbol('spells_int_18', 'indego.weather.int_18.spells','','sun_5.png') }} + {{ basic.symbol('sonne_int_18', 'indego.weather.int_18.Sonne','','sun_1.png') }} + {{ basic.symbol('wolken_int_18', 'indego.weather.int_18.Wolken','','cloud_5.png') }} + {{ basic.symbol('regen_int_18', 'indego.weather.int_18.Regen','','cloud_8.png') }} + {{ basic.symbol('gewitter_int_18', 'indego.weather.int_18.Gewitter','','cloud_10.png') }} + + {{ basic.float('indego_wetter_int_18_td', 'indego.weather.int_18.td', '°') }} - {{ basic.float('indego_wetter_int_18_tt', 'indego.weather.int_18.tt', '°') }} + + {{ basic.float('indego_wetter_int_18_rrr', 'indego.weather.int_18.rrr', 'l/m²') }} + + {{ basic.float('indego_wetter_int_18_prrr', 'indego.weather.int_18.prrr', '%') }} +
+ Abends: + + {{ basic.symbol('spells_int_19', 'indego.weather.int_19.spells','','sun_5.png') }} + {{ basic.symbol('sonne_int_19', 'indego.weather.int_19.Sonne','','sun_1.png') }} + {{ basic.symbol('wolken_int_19', 'indego.weather.int_19.Wolken','','cloud_5.png') }} + {{ basic.symbol('regen_int_19', 'indego.weather.int_19.Regen','','cloud_8.png') }} + {{ basic.symbol('gewitter_int_19', 'indego.weather.int_19.Gewitter','','cloud_10.png') }} + + {{ basic.float('indego_wetter_int_19_td', 'indego.weather.int_19.td', '°') }} - {{ basic.float('indego_wetter_int_19_tt', 'indego.weather.int_19.tt', '°') }} + + {{ basic.float('indego_wetter_int_19_rrr', 'indego.weather.int_19.rrr', 'l/m²') }} + + {{ basic.float('indego_wetter_int_19_prrr', 'indego.weather.int_19.prrr', '%') }} +
+ +
+
+
+ {% endblock %} + diff --git a/indego/smartVISU_dropins/pages/your pages folder/widget_basic_input.html b/indego/smartVISU_dropins/pages/your pages folder/widget_basic_input.html new file mode 100644 index 000000000..1d832748a --- /dev/null +++ b/indego/smartVISU_dropins/pages/your pages folder/widget_basic_input.html @@ -0,0 +1,56 @@ +/** +* Widget for usage of uzsu plugin +* (c) Michael Würtenberger 2014 +* +* Displays a numer or an text input +* +* @param unique id for this widget +* @param a gad/item +* @param value value +*/ +{% macro textinput(id, gad, value) %} + + +
+ +
+ + +{% endmacro %} + + +/** +* Displays a textinput +* +* @param unique id for this widget +* @param a gad/item +* @param value value +*/ +{% macro numberinput(id, gad, value) %} + +
+ +
+ + +{% endmacro %} \ No newline at end of file diff --git a/indego/smartVISU_dropins/pages/your pages folder/widget_basic_large_symbol.html b/indego/smartVISU_dropins/pages/your pages folder/widget_basic_large_symbol.html new file mode 100644 index 000000000..666dbcadf --- /dev/null +++ b/indego/smartVISU_dropins/pages/your pages folder/widget_basic_large_symbol.html @@ -0,0 +1,26 @@ +/** +* A symbol, with no writing to knx, only displayed when the value of item is equal to val. Symbols may be used in menus. +* If more than one item is given, they will be combined with mode ('or' / 'and'). +* +* @param unique id for this widget +* @param one or more item(s). More items in array form: [ item1 , item2 ] +* @param the text, printed when item has value val (optional) +* @param the pic, shown when item has value val +* @param value (default 1) +* @param the mode, 'or', 'and' (default 'or') +* @param the color 'icon1' or e. g. '#f00' for red (default 'icon0' of the design) +*/ +{% macro large_symbol(id, items, txt, pic, val, mode, color) %} + + + {% if color is empty %} + + {% elseif color == 'icon1' %} + + {% else %} + + {% endif %} + {{ txt }} + +{% endmacro %} \ No newline at end of file diff --git a/indego/webif/static/img/readme.txt b/indego/webif/static/img/readme.txt new file mode 100644 index 000000000..1a7c55eef --- /dev/null +++ b/indego/webif/static/img/readme.txt @@ -0,0 +1,6 @@ +This directory is for storing images that are used by the web interface. + +If you want to have your own logo on the top of the web interface, store it here and name it plugin_logo.. + +Extension can be png, svg or jpg + diff --git a/indego/webif/templates/index.html b/indego/webif/templates/index.html new file mode 100644 index 000000000..6e1ad17d9 --- /dev/null +++ b/indego/webif/templates/index.html @@ -0,0 +1,100 @@ +{% extends "base_plugin.html" %} + +{% set logo_frame = false %} + +{% block headtable %} + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Prompt 1{% if 1 == 2 %}{{ _('Ja') }}{% else %}{{ _('Nein') }}{% endif %}Prompt 4{{ _('Wert 4') }}
Prompt 2{{ _('Wert 2') }}Prompt 5-
Prompt 3-Prompt 6-
+{% endblock headtable %} + + + +{% block buttons %} +{% if 1==2 %} +
+ +
+{% endif %} +{% endblock %} + + +{% set tabcount = 4 %} + + + +{% if item_count==0 %} + {% set start_tab = 2 %} +{% endif %} + + + +{% set tab1title = "" ~ p.get_shortname() ~ " Items (" ~ item_count ~ ")" %} +{% block bodytab1 %} +
+ {{ _('Hier kommt der Inhalt des Webinterfaces hin.') }} +
+{% endblock bodytab1 %} + + + +{% set tab2title = "" ~ p.get_shortname() ~ " Geräte (" ~ device_count ~ ")" %} +{% block bodytab2 %} +{% endblock bodytab2 %} + + + +{% block bodytab3 %} +{% endblock bodytab3 %} + + + +{% block bodytab4 %} +{% endblock bodytab4 %} From 69b351ad2dfb0c8a2764997ff998b6d7c7b7d87d Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sat, 18 May 2019 16:36:09 +0200 Subject: [PATCH 038/200] update methods for 1.6 --- avdevice/AVDeviceInit.py | 10 ++-- avdevice/README.md | 7 +++ avdevice/__init__.py | 42 ++++++------- avdevice/avdevice_webif.png | Bin avdevice/denon-avr6300.txt | 115 ------------------------------------ avdevice/plugin.yaml | 47 +++++++-------- avdevice/requirements.txt | 0 7 files changed, 55 insertions(+), 166 deletions(-) mode change 100644 => 100755 avdevice/avdevice_webif.png delete mode 100644 avdevice/denon-avr6300.txt mode change 100644 => 100755 avdevice/requirements.txt diff --git a/avdevice/AVDeviceInit.py b/avdevice/AVDeviceInit.py index 13383f86b..a8256ad34 100755 --- a/avdevice/AVDeviceInit.py +++ b/avdevice/AVDeviceInit.py @@ -65,7 +65,7 @@ def get_items(self, zone): itemlist.append(_result) if not item == 'dependson': try: - sortedlist.append(_result.id()) + sortedlist.append(_result.property.name) except Exception: sortedlist.append(_result) sortedlist.sort() @@ -280,7 +280,7 @@ def _dependstage3(self, dependson_list, problems, finaldepend): 'Group': depend_group, 'Function': depend_function}]}) try: - finaldepend['Slave_item'][zone][self._items[zone][entry].get('Item').id()].append( + finaldepend['Slave_item'][zone][self._items[zone][entry].get('Item').property.name].append( {'Item': item, 'Dependvalue': depend_value, 'Compare': depend_compare, @@ -289,7 +289,7 @@ def _dependstage3(self, dependson_list, problems, finaldepend): 'Function': depend_function}) except Exception: finaldepend['Slave_item'][zone].update( - {self._items[zone][entry].get('Item').id(): + {self._items[zone][entry].get('Item').property.name: [{'Item': item, 'Dependvalue': depend_value, 'Compare': depend_compare, @@ -299,7 +299,7 @@ def _dependstage3(self, dependson_list, problems, finaldepend): try: finaldepend['Master_item'][depend_zone][ self._items[depend_zone][dependson_list[zone][entry][count]['Function']].get( - 'Item').id()].append( + 'Item').property.name].append( {'Item': self._items[zone][entry].get('Item'), 'Function': entry, 'Compare': depend_compare, @@ -309,7 +309,7 @@ def _dependstage3(self, dependson_list, problems, finaldepend): except Exception: finaldepend['Master_item'][depend_zone].update( {self._items[depend_zone][dependson_list[zone][entry][count]['Function']].get( - 'Item').id(): + 'Item').property.name: [{'Item': self._items[zone][entry].get('Item'), 'Function': entry, 'Compare': depend_compare, diff --git a/avdevice/README.md b/avdevice/README.md index cbd82ba42..7e91e8aae 100755 --- a/avdevice/README.md +++ b/avdevice/README.md @@ -13,6 +13,13 @@ Hopefully several different AV devices based on TCP or Serial RS232 connections Tested with Pioneer (< 2016 models) and Denon AV receivers, Epson projector Oppo Bluray player ## Changelog +### v1.6.1 +* use property.name instead of id() +* fix folder for command files reading + +### v1.6.0 +* Implement struct features +* fixed dependency check ### v1.5.0 * Minor code re-write using smartplugin methods and logging diff --git a/avdevice/__init__.py b/avdevice/__init__.py index 494202d75..a15c52bc6 100755 --- a/avdevice/__init__.py +++ b/avdevice/__init__.py @@ -52,7 +52,7 @@ class AVDevice(SmartPlugin): ALLOW_MULTIINSTANCE = True - PLUGIN_VERSION = "1.6.0" + PLUGIN_VERSION = "1.6.1" def __init__(self, smarthome): self.itemsApi = Items.get_instance() @@ -425,7 +425,7 @@ def _parse_depend_item(self, item, info, zone): def _logics_dependencies(self, zone=None, item=None): deps = {'a': [], 'b':[], 'c':[], 'd':[]} try: - info = item.id() + info = item.property.name search = 'Slave_item' except Exception: search = 'Slave_function' @@ -1116,7 +1116,7 @@ def _checkdependency(self, dep_function, dep_type): totest = self._dependencies['Slave_query'] elif dep_type == 'update': totest = self._dependencies['Slave_item'] - dep_function = dep_function.id() + dep_function = dep_function.property.name elif dep_type == 'keepcommand': totest = self._dependencies['Slave_item'] try: @@ -1202,7 +1202,7 @@ def _checkdependency(self, dep_function, dep_type): grouptotal = {'a': 0, 'b': 0, 'c': 0, 'd': 0} additional_zone = entry['Zone'] try: - for additional in self._dependencies['Slave_item'][additional_zone][dependitem.id()]: + for additional in self._dependencies['Slave_item'][additional_zone][dependitem.property.name]: dependitem = additional['Item'] dependvalue = dependitem() expectedvalue = additional['Dependvalue'] @@ -1349,10 +1349,10 @@ def _checkdependency(self, dep_function, dep_type): else: depending = True try: - item = self.itemsApi.return_item(dep_function).id() + item = self.itemsApi.return_item(dep_function).property.name except Exception: - item = dep_function.id() - if not item == self._dependson.id(): + item = dep_function.property.name + if not item == self._dependson.property.name: self.logger.log(VERBOSE2, "Checking Dependency {}: Starting to reset item: {}.".format(self._name, item)) self._resetitem(item) @@ -2230,7 +2230,7 @@ def _replace_setcommand(replace_commandinfo, replace_dict, replace_command, repl responsecommand, _ = CreateResponse(commandinfo, '', '', self._name, self._specialparse, self.logger).response_standard() appendcommand = '{},{},{};{}'.format(commandinfo[2], commandinfo[3], - responsecommand, item.id()) + responsecommand, item.property.name) cond1 = appendcommand not in self._query_commands cond2 = appendcommand not in self._special_commands['Display']['Command'] if appendcommand in self._send_commands: @@ -2264,7 +2264,7 @@ def _replace_setcommand(replace_commandinfo, replace_dict, replace_command, repl commandinfo = self._functions['zone{}'.format(zone)][command] replacedresponse, _ = CreateResponse(commandinfo, '', '', self._name, self._specialparse, self.logger).response_standard() - appendcommand = '{},{},{};{}'.format(commandinfo[2], commandinfo[3], replacedresponse, item.id()) + appendcommand = '{},{},{};{}'.format(commandinfo[2], commandinfo[3], replacedresponse, item.property.name) cond1 = appendcommand not in self._query_commands cond2 = appendcommand not in self._special_commands['Display']['Command'] if appendcommand in self._send_commands: @@ -2299,9 +2299,9 @@ def _replace_setcommand(replace_commandinfo, replace_dict, replace_command, repl try: reverseitem = self._items['zone{}'.format(zone)][command.replace('+', '-', 1)].get('Item') except Exception: - reverseitem = item.id() + reverseitem = item.property.name - appendcommand = '{},{},{};{}'.format(commandinfo[2], commandinfo[3], replacedresponse, item.id()) + appendcommand = '{},{},{};{}'.format(commandinfo[2], commandinfo[3], replacedresponse, item.property.name) reversecommand = '{},{},{};{}'.format(reverseinfo[2], reverseinfo[3], replacedreverse, reverseitem) self.logger.log(VERBOSE2, @@ -2352,9 +2352,9 @@ def _replace_setcommand(replace_commandinfo, replace_dict, replace_command, repl try: reverseitem = self._items['zone{}'.format(zone)][command.replace('-', '+', 1)].get('Item') except Exception: - reverseitem = item.id() + reverseitem = item.property.name - appendcommand = '{},{},{};{}'.format(commandinfo[2], commandinfo[3], replacedresponse, item.id()) + appendcommand = '{},{},{};{}'.format(commandinfo[2], commandinfo[3], replacedresponse, item.property.name) reversecommand = '{},{},{};{}'.format(reverseinfo[2], reverseinfo[3], replacedreverse, reverseitem) self.logger.log(VERBOSE2, @@ -2397,8 +2397,8 @@ def _replace_setcommand(replace_commandinfo, replace_dict, replace_command, repl replacedresponse, replacedreverse = CreateResponse( commandinfo, reverseinfo, '', self._name, self._specialparse, self.logger).response_on() - appendcommand = '{},{},{};{}'.format(commandinfo[2], commandinfo[3], replacedresponse, item.id()) - reversecommand = '{},{},{};{}'.format(reverseinfo[2], reverseinfo[3], replacedreverse, item.id()) + appendcommand = '{},{},{};{}'.format(commandinfo[2], commandinfo[3], replacedresponse, item.property.name) + reversecommand = '{},{},{};{}'.format(reverseinfo[2], reverseinfo[3], replacedreverse, item.property.name) self.logger.log(VERBOSE2, "Updating Item {}: Appendcommand on: {}, Reversecommand: {}, Send Commands: {}".format( @@ -2464,8 +2464,8 @@ def _replace_setcommand(replace_commandinfo, replace_dict, replace_command, repl replacedresponse, replacedreverse = CreateResponse( commandinfo, reverseinfo, '', self._name, self._specialparse, self.logger).response_off() - appendcommand = '{},{},{};{}'.format(commandinfo[2], commandinfo[3], replacedresponse, item.id()) - reversecommand = '{},{},{};{}'.format(reverseinfo[2], reverseinfo[3], replacedreverse, item.id()) + appendcommand = '{},{},{};{}'.format(commandinfo[2], commandinfo[3], replacedresponse, item.property.name) + reversecommand = '{},{},{};{}'.format(reverseinfo[2], reverseinfo[3], replacedreverse, item.property.name) self.logger.log(VERBOSE1, "Updating Item {}: Appendcommand off: {}. Reversecommand: {} Send Commands: {}".format( @@ -2595,7 +2595,7 @@ def _replace_setcommand(replace_commandinfo, replace_dict, replace_command, repl poweritem = self._items['zone0'][powerinfo[1]].get('Item') appendcommand = '{},{},{};{}'.format(powerinfo[2], powerinfo[3], replacedresponse, - poweritem.id()) + poweritem.property.name) self._send_commands.insert(0, appendcommand) self._sendingcommand = appendcommand self.logger.debug( @@ -2624,7 +2624,7 @@ def _replace_setcommand(replace_commandinfo, replace_dict, replace_command, repl if not self._send_commands == [] and setting is True: appendcommand = '{},{},{};{}'.format(command_re, commandinfo[3], response, - item.id()) + item.property.name) setting = False appending = _replace_setcommand(commandinfo, self._send_commands, appendcommand, value, 'append') removefromkeeping = _replace_setcommand(commandinfo, self._keep_commands, appendcommand, value, 'keep') @@ -2655,7 +2655,7 @@ def _replace_setcommand(replace_commandinfo, replace_dict, replace_command, repl self._name, zone, commandinfo[2], item, command_re)) elif setting is True: appendcommand = '{},{},{};{}'.format(command_re, commandinfo[3], response, - item.id()) + item.property.name) removefromkeeping = _replace_setcommand(commandinfo, self._keep_commands, appendcommand, value, 'keep') for i in removefromkeeping: self.logger.log(VERBOSE1, @@ -2714,7 +2714,7 @@ def _replace_setcommand(replace_commandinfo, replace_dict, replace_command, repl for zone in range(self._number_of_zones, -1, -1): for entry in self._init_commands['zone{}'.format(zone)]: try: - compareitem = self._init_commands['zone{}'.format(zone)][entry].get('Item').id() + compareitem = self._init_commands['zone{}'.format(zone)][entry].get('Item').property.name self.logger.log(VERBOSE2, "Updating Item {}: Compare {} with {}.".format(self._name, commanditem, compareitem)) if commanditem == compareitem: diff --git a/avdevice/avdevice_webif.png b/avdevice/avdevice_webif.png old mode 100644 new mode 100755 diff --git a/avdevice/denon-avr6300.txt b/avdevice/denon-avr6300.txt deleted file mode 100644 index 5300530a0..000000000 --- a/avdevice/denon-avr6300.txt +++ /dev/null @@ -1,115 +0,0 @@ -ZONE; FUNCTION; FUNCTIONTYPE; SEND; QUERY; RESPONSE; READWRITE; INVERTRESPONSE; MINVALUE; MAXVALUE; RESPONSETYPE - -# General Commands -0; power; on; PWON|PWON; PW?; PW**; RW -0; power; off; PWSTANDBY; PW?; PW*******; RW -0; eco; set; ECO*; ECO?; ECO*; RW; ; ; ; str|bool -0; up; ; MNCUP; ; ; W -0; down; ; MNCDN; ; ; W -0; left; ; MNCLT; ; ; W -0; right; ; MNCRT; ; ; W -0; enter; ; MNENT; ; ; W -0; info; ; MNINF; ; ; W -0; menu; on; MNMEN ON; MNMEN?; MNMEN **; RW -0; menu; off; MNMEN OFF; MNMEN?; MNMEN ***; RW -# Firmware response often hast problems. Not recommended to implement this command. -#0; firmware; ; ; UGIDN; UGIDN ************|UGIDN **; R -# The display command is only working with receivers without HEOS -#0; display; ; NSE; NSE; NSA*|NSE*; RW; ; ; ; str - - -# Zone 1 -1; power; on; ZMON; ZM?; ZM**; RW -1; power; off; ZMOFF; ZM?; ZM***; RW -1; mute; on; MUON; MU?; MU**; RW -1; mute; off; MUOFF; MU?; MU***; RW -1; sleep; set; SLP***; SLP?; SLP***; RW; ; 0; 120; num|bool -1; standby; set; STBY***; STBY?; STBY***; RW; ; ; ; ; denon_standby -1; volume; set; MV**; MV?; MV**|MV***; RW; ; 30; 90; num; denon_volume -1; volume+; increase; MVUP; ; MV; W -1; volume-; decrease; MVDOWN; ; MV; W -1; volumelow; ; MV50; MV?; MV50; W; ; ; ; num -1; volumehigh; ; MV75; MV?; MV75; W; ; ; ; num -1; volumemax; set; MVMAX **; MV?; MVMAX **|MVMAX ***; RW; ; ; ; ; denon_volume -1; input; set; SI*; SI?; SI*; RW; ; ; ; str -1; mode; set; MS*; MS?; MS*; RW; ; ; ; str -1; audioinput; set; SD*; SD?; SD*; RW; ; ; ; str -1; videoinput; set; SV*; SV?; SV*; RW; ; ; ; str|bool - -# Finetuning -1; tone; on; PSTONE CTRL ON; PSTONE CTRL ?; PSTONE CTRL **; RW -1; tone; off; PSTONE CTRL OFF; PSTONE CTRL ?; PSTONE CTRL ***; RW -1; bass; set; PSBAS **; PSBAS ?; PSBAS **; RW; ; 40; 60 -1; trebble; set; PSTRE **; PSTRE ?; PSTRE **; RW; ; 40; 60 -1; bass+; increase; PSBAS UP; ; PSBAS; W -1; bass-; decrease; PSBAS DOWN; ; PSBAS; W -1; trebble+; increase; PSTRE UP; ; PSTRE; W -1; trebble-; decrease; PSTRE DOWN; ; PSTRE; W -1; dialogtoggle; on; PSDIL ON; PSDIL ?; PSDIL **; RW -1; dialogtoggle; off; PSDIL OFF; PSDIL ?; PSDIL ***; RW -1; dialog; set; PSDIL **; PSDIL ?; PSDIL **; RW; ; 0; 62 -1; subwoofertoggle; on; PSSWL ON; PSSWL ?; PSSWL **; RW -1; subwoofertoggle; off; PSSWL OFF; PSSWL ?; PSSWL ***; RW -1; subwoofer; set; PSSWL **; PSSWL ?; PSSWL **; RW; ; 0; 62 -1; cinemaeq; on; PSCINEMA EQ.ON; PSCINEMA EQ. ?; PSCINEMA EQ.**; RW -1; cinemaeq; off; PSCINEMA EQ.OFF; PSCINEMA EQ. ?; PSCINEMA EQ.***; RW -1; mainspeakers; set; PSSP:*; PSSP: ?; PSSP:*; RW; ; ; ; str -1; dynamicrange+; increase; PVENH UP; PVENH ?; PVENH; W -1; dynamicrange-; decrease; PVENH DOWN; PVENH ?; PVENH; W -1; dynamicrange; set; PVENH **; PVENH ?; PVENH **; RW; ; 0; 12 - -# Seperate Volume Control -1; volumefl; set; CVFL **; CV?; CVFL **|CVFL ***; RW; ; 0; 62; num; denon_volume -1; volumefl+; increase; CVFL UP; CV?; CVFL; W -1; volumefl-; decrease; CVFL DOWN; CV?; CVFL; W -1; volumefr; set; CVFR **; CV?; CVFR **|CVFR ***; RW; ; 0; 62; num; denon_volume -1; volumefr+; increase; CVFL UP; CV?; CVFR; W -1; volumefr-; decrease; CVFR DOWN; CV?; CVFR; W -1; volumec; set; CVC **; CV?; CVC **|CVC ***; RW; ; 0; 62; num; denon_volume -1; volumec+; increase; CVC UP; CV?; CVC; W -1; volumec-; decrease; CVC DOWN; CV?; CVC; W -1; volumec; set; CVC **; CV?; CVC **|CVC ***; RW; ; 0; 62; num; denon_volume -1; volumec+; increase; CVC UP; CV?; CVC; W -1; volumec-; decrease; CVC DOWN; CV?; CVC; W -1; volumesl; set; CVSL **; CV?; CVSL **|CVSL ***; RW; ; 0; 62; num; denon_volume -1; volumesl+; increase; CVSL UP; CV?; CVSL; W -1; volumesl-; decrease; CVSL DOWN; CV?; CVSL; W -1; volumesr; set; CVSR **; CV?; CVSR **|CVSR ***; RW; ; 0; 62; num; denon_volume -1; volumesr+; increase; CVSR UP; CV?; CVSR; W -1; volumesr-; decrease; CVSR DOWN; CV?; CVSR; W - -# Videoparams -1; aspectratio; set; VSASP*; VSASP ?; VSASP*; RW; ; ; ; str -1; monitorout; set; VSMONI*; VSMONI ?; VSMONI*; RW; ; ; ; int|str -1; resolution; set; VSSC*; VSSC ?; VSSC*; RW; ; ; ; str -1; audioout; set; VSAUDIO *; VSAUDIO ?; VSAUDIO *; RW; ; ; ; str -1; videoprocessing; set; VSVPM*; VSVPM ?; VSVPM*; RW; ; ; ; str -1; stretch; set; VSVST*; VSVST ?; VSVST*; RW; ; ; ; bool - -# Zone 2 -2; power; on; Z2ON; Z2?; Z2**; RW -2; power; off; Z2OFF; Z2?; Z2***; RW -2; input; set; Z2*; Z2?; Z2*; RW; ; ; ; str -2; mute; on; Z2MUON; Z2MU?; Z2MU**; RW -2; mute; off; Z2MUOFF; Z2MU?; Z2MU***; RW -2; volume+; increase; Z2UP; ; Z2; W -2; volume-; decrease; Z2DOWN; ; Z2; W -2; volumelow; ; Z250; MV?; Z250; W; ; ; ; num -2; volumehigh; ; Z275; MV?; Z275; W; ; ; ; num -2; volume; set; Z2**; Z2?; Z2**; RW; num; 0; 90 -2; standby; set; Z2STBY*; Z2STBY?; Z2STBY*; RW; ; ; ; str|bool -2; sleep; set; Z2SLP***; Z2SLP?; Z2SLP***; RW; ; 0; 120; num|bool - -# Zone 3 -3; power; on; Z3ON; Z3?; Z3**; RW -3; power; off; Z3OFF; Z3?; Z3***; RW -3; input; set; Z3*; Z3?; Z3*; RW; ; ; ; str -3; mute; on; Z3MUON; Z3MU?; Z3MU**; RW -3; mute; off; Z3MUOFF; Z3MU?; Z3MU***; RW -3; volume+; increase; Z3UP; ; Z3; W -3; volume-; decrease; Z3DOWN; ; Z3; W -3; volumelow; ; Z350; MV?; Z350; W; ; ; ; num -3; volumehigh; ; Z375; MV?; Z375; W; ; ; ; num -3; volume; set; Z3**; Z3?; Z3**; RW; num; 0; 90 -3; standby; set; Z3STBY*; Z3STBY?; Z3STBY*; RW; ; ; ; str|bool -3; sleep; set; Z3SLP***; Z3SLP?; Z3SLP***; RW; ; 0; 120; num|bool diff --git a/avdevice/plugin.yaml b/avdevice/plugin.yaml index e58170dc6..bfb6353c3 100755 --- a/avdevice/plugin.yaml +++ b/avdevice/plugin.yaml @@ -6,21 +6,19 @@ plugin: de: 'Steuerung von diversen AV Geräten über TCP/IP und RS232 Schnittstelle' en: 'Controlling AV devices via TCP/IP and RS232' description_long: - de: 'Steuerung von diversen AV Geräten über TCP/IP und RS232 Schnittstelle.\n - Das Plugin unterstützt eine Vielzahl von AV-Geräten und wurde mit folgenden Geräten getestet:\n - \n - - Pioneer AV Receiver < 2016\n - - Denon AV Receiver > 2016\n - - Epson Projektor < 2010\n - - Oppo UHD Player\n + de: 'Steuerung von diversen AV Geräten über TCP/IP und RS232 Schnittstelle. + Das Plugin unterstützt eine Vielzahl von AV-Geräten und wurde mit folgenden Geräten getestet: + - Pioneer AV Receiver < 2016 + - Denon AV Receiver > 2016 + - Epson Projektor < 2010 + - Oppo UHD Player ' - en: 'Controlling AV devices via TCP/IP and RS232\n - The plugin supports a variety of AV devices and was tested with the following models:\n - \n - - Pioneer AV Receiver < 2016\n - - Denon AV Receiver > 2016\n - - Epson Projektor < 2010\n - - Oppo UHD Player\n + en: 'Controlling AV devices via TCP/IP and RS232 + The plugin supports a variety of AV devices and was tested with the following models: + - Pioneer AV Receiver < 2016 + - Denon AV Receiver > 2016 + - Epson Projektor < 2010 + - Oppo UHD Player ' requirements: de: 'pyserial Python Modul' @@ -33,7 +31,7 @@ plugin: # documentation: https://github.com/smarthomeNG/smarthome/wiki/CLI-Plugin # url of documentation (wiki) page support: https://knx-user-forum.de/forum/supportforen/smarthome-py/1097870-neues-plugin-av-device-f%C3%BCr-yamaha-pioneer-denon-etc - version: 1.6.0 # Plugin version + version: 1.6.1 # Plugin version sh_minversion: 1.6 # minimum shNG version to use this plugin # sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) multi_instance: True # plugin supports multi instance @@ -327,29 +325,28 @@ item_attributes: de: 'Das Attribut muss mit dem Kommando ergänzt werden, das in der Text Datei im Ordner models hinterlegt ist, zB power oder volume' en: 'This attribute has to be followed by one of the commands declared in the device text file in the models folders like power or volume' description_long: - de: 'Das Attribut muss mit dem Kommando ergänzt werden, das in der Text Datei im Ordner models hinterlegt ist, zB power oder volume\n - Außerdem gibt es zwei spezielle Parameter, die bei Bedarf eingesetzt werden können:\n - \n + de: 'Das Attribut muss mit dem Kommando ergänzt werden, das in der Text Datei im Ordner models hinterlegt ist, zB power oder volume + Außerdem gibt es zwei spezielle Parameter, die bei Bedarf eingesetzt werden können: - **avdevice: statusupdate**: Dieses Item wird genutzt, um eine komplette Statusabfrage durchzuführen. Es werden alle Query-Kommandos an das Gerät geschickt, was vor allem nach dem - Einschalten einer geschaltenen Steckdose relevant ist.\n + Einschalten einer geschaltenen Steckdose relevant ist. - **avdevice: reload**: Dieses Item wird genutzt, um die Textkonfiguration neu zu laden. Dadurch werden das Kommando-File im models Ordner sowie die Dateien im translations Ordner - neu gelesen. So ist ein Ausbessern von Befehlen ohne Plugin-Neustart möglich.\n + neu gelesen. So ist ein Ausbessern von Befehlen ohne Plugin-Neustart möglich. ' en: 'This attribute has to be followed by one of the commands declared in the - device text file in the models folders like power or volume\n - You can use two special avdevice attribute values if you want:\n - \n + device text file in the models folders like power or volume + You can use two special avdevice attribute values if you want: + - **avdevice: statusupdate**: Use this item to trigger a full statusupdate. All query commands regarding the currently powered on zones are sent. This is especially useful if you have a power socket you - can switch on or off and want to update all items on connection.\n + can switch on or off and want to update all items on connection. - **avdevice: reload**: Use this item to reload your text configurations. This re-reads the config as well as translation files and recreates all functions and commands. This is useful if you find an error in your configuration file or if you want to add new commands while smarthomeNG - is running. You don’t need to restart the plugin to reload the config!\n + is running. You don’t need to restart the plugin to reload the config! ' avdevice_zone0: diff --git a/avdevice/requirements.txt b/avdevice/requirements.txt old mode 100644 new mode 100755 From 044392272f43d3648042c83020a9083db4ae4154 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sat, 18 May 2019 16:41:12 +0200 Subject: [PATCH 039/200] Update plugin.yaml --- avdevice/plugin.yaml | 1 - 1 file changed, 1 deletion(-) diff --git a/avdevice/plugin.yaml b/avdevice/plugin.yaml index bfb6353c3..e37a09463 100755 --- a/avdevice/plugin.yaml +++ b/avdevice/plugin.yaml @@ -337,7 +337,6 @@ item_attributes: en: 'This attribute has to be followed by one of the commands declared in the device text file in the models folders like power or volume You can use two special avdevice attribute values if you want: - - **avdevice: statusupdate**: Use this item to trigger a full statusupdate. All query commands regarding the currently powered on zones are sent. This is especially useful if you have a power socket you From 0ec88436482e312affbf7001672ce6de06035db3 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sat, 18 May 2019 16:53:53 +0200 Subject: [PATCH 040/200] change property.name to property.path --- avdevice/AVDeviceInit.py | 10 +++++----- avdevice/README.md | 2 +- avdevice/__init__.py | 40 ++++++++++++++++++++-------------------- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/avdevice/AVDeviceInit.py b/avdevice/AVDeviceInit.py index a8256ad34..146f5b104 100755 --- a/avdevice/AVDeviceInit.py +++ b/avdevice/AVDeviceInit.py @@ -65,7 +65,7 @@ def get_items(self, zone): itemlist.append(_result) if not item == 'dependson': try: - sortedlist.append(_result.property.name) + sortedlist.append(_result.property.path) except Exception: sortedlist.append(_result) sortedlist.sort() @@ -280,7 +280,7 @@ def _dependstage3(self, dependson_list, problems, finaldepend): 'Group': depend_group, 'Function': depend_function}]}) try: - finaldepend['Slave_item'][zone][self._items[zone][entry].get('Item').property.name].append( + finaldepend['Slave_item'][zone][self._items[zone][entry].get('Item').property.path].append( {'Item': item, 'Dependvalue': depend_value, 'Compare': depend_compare, @@ -289,7 +289,7 @@ def _dependstage3(self, dependson_list, problems, finaldepend): 'Function': depend_function}) except Exception: finaldepend['Slave_item'][zone].update( - {self._items[zone][entry].get('Item').property.name: + {self._items[zone][entry].get('Item').property.path: [{'Item': item, 'Dependvalue': depend_value, 'Compare': depend_compare, @@ -299,7 +299,7 @@ def _dependstage3(self, dependson_list, problems, finaldepend): try: finaldepend['Master_item'][depend_zone][ self._items[depend_zone][dependson_list[zone][entry][count]['Function']].get( - 'Item').property.name].append( + 'Item').property.path].append( {'Item': self._items[zone][entry].get('Item'), 'Function': entry, 'Compare': depend_compare, @@ -309,7 +309,7 @@ def _dependstage3(self, dependson_list, problems, finaldepend): except Exception: finaldepend['Master_item'][depend_zone].update( {self._items[depend_zone][dependson_list[zone][entry][count]['Function']].get( - 'Item').property.name: + 'Item').property.path: [{'Item': self._items[zone][entry].get('Item'), 'Function': entry, 'Compare': depend_compare, diff --git a/avdevice/README.md b/avdevice/README.md index 7e91e8aae..9c44d9e42 100755 --- a/avdevice/README.md +++ b/avdevice/README.md @@ -14,7 +14,7 @@ Tested with Pioneer (< 2016 models) and Denon AV receivers, Epson projector Oppo ## Changelog ### v1.6.1 -* use property.name instead of id() +* use property.path instead of id() * fix folder for command files reading ### v1.6.0 diff --git a/avdevice/__init__.py b/avdevice/__init__.py index a15c52bc6..ef8836c54 100755 --- a/avdevice/__init__.py +++ b/avdevice/__init__.py @@ -425,7 +425,7 @@ def _parse_depend_item(self, item, info, zone): def _logics_dependencies(self, zone=None, item=None): deps = {'a': [], 'b':[], 'c':[], 'd':[]} try: - info = item.property.name + info = item.property.path search = 'Slave_item' except Exception: search = 'Slave_function' @@ -1116,7 +1116,7 @@ def _checkdependency(self, dep_function, dep_type): totest = self._dependencies['Slave_query'] elif dep_type == 'update': totest = self._dependencies['Slave_item'] - dep_function = dep_function.property.name + dep_function = dep_function.property.path elif dep_type == 'keepcommand': totest = self._dependencies['Slave_item'] try: @@ -1202,7 +1202,7 @@ def _checkdependency(self, dep_function, dep_type): grouptotal = {'a': 0, 'b': 0, 'c': 0, 'd': 0} additional_zone = entry['Zone'] try: - for additional in self._dependencies['Slave_item'][additional_zone][dependitem.property.name]: + for additional in self._dependencies['Slave_item'][additional_zone][dependitem.property.path]: dependitem = additional['Item'] dependvalue = dependitem() expectedvalue = additional['Dependvalue'] @@ -1349,10 +1349,10 @@ def _checkdependency(self, dep_function, dep_type): else: depending = True try: - item = self.itemsApi.return_item(dep_function).property.name + item = self.itemsApi.return_item(dep_function).property.path except Exception: - item = dep_function.property.name - if not item == self._dependson.property.name: + item = dep_function.property.path + if not item == self._dependson.property.path: self.logger.log(VERBOSE2, "Checking Dependency {}: Starting to reset item: {}.".format(self._name, item)) self._resetitem(item) @@ -2230,7 +2230,7 @@ def _replace_setcommand(replace_commandinfo, replace_dict, replace_command, repl responsecommand, _ = CreateResponse(commandinfo, '', '', self._name, self._specialparse, self.logger).response_standard() appendcommand = '{},{},{};{}'.format(commandinfo[2], commandinfo[3], - responsecommand, item.property.name) + responsecommand, item.property.path) cond1 = appendcommand not in self._query_commands cond2 = appendcommand not in self._special_commands['Display']['Command'] if appendcommand in self._send_commands: @@ -2264,7 +2264,7 @@ def _replace_setcommand(replace_commandinfo, replace_dict, replace_command, repl commandinfo = self._functions['zone{}'.format(zone)][command] replacedresponse, _ = CreateResponse(commandinfo, '', '', self._name, self._specialparse, self.logger).response_standard() - appendcommand = '{},{},{};{}'.format(commandinfo[2], commandinfo[3], replacedresponse, item.property.name) + appendcommand = '{},{},{};{}'.format(commandinfo[2], commandinfo[3], replacedresponse, item.property.path) cond1 = appendcommand not in self._query_commands cond2 = appendcommand not in self._special_commands['Display']['Command'] if appendcommand in self._send_commands: @@ -2299,9 +2299,9 @@ def _replace_setcommand(replace_commandinfo, replace_dict, replace_command, repl try: reverseitem = self._items['zone{}'.format(zone)][command.replace('+', '-', 1)].get('Item') except Exception: - reverseitem = item.property.name + reverseitem = item.property.path - appendcommand = '{},{},{};{}'.format(commandinfo[2], commandinfo[3], replacedresponse, item.property.name) + appendcommand = '{},{},{};{}'.format(commandinfo[2], commandinfo[3], replacedresponse, item.property.path) reversecommand = '{},{},{};{}'.format(reverseinfo[2], reverseinfo[3], replacedreverse, reverseitem) self.logger.log(VERBOSE2, @@ -2352,9 +2352,9 @@ def _replace_setcommand(replace_commandinfo, replace_dict, replace_command, repl try: reverseitem = self._items['zone{}'.format(zone)][command.replace('-', '+', 1)].get('Item') except Exception: - reverseitem = item.property.name + reverseitem = item.property.path - appendcommand = '{},{},{};{}'.format(commandinfo[2], commandinfo[3], replacedresponse, item.property.name) + appendcommand = '{},{},{};{}'.format(commandinfo[2], commandinfo[3], replacedresponse, item.property.path) reversecommand = '{},{},{};{}'.format(reverseinfo[2], reverseinfo[3], replacedreverse, reverseitem) self.logger.log(VERBOSE2, @@ -2397,8 +2397,8 @@ def _replace_setcommand(replace_commandinfo, replace_dict, replace_command, repl replacedresponse, replacedreverse = CreateResponse( commandinfo, reverseinfo, '', self._name, self._specialparse, self.logger).response_on() - appendcommand = '{},{},{};{}'.format(commandinfo[2], commandinfo[3], replacedresponse, item.property.name) - reversecommand = '{},{},{};{}'.format(reverseinfo[2], reverseinfo[3], replacedreverse, item.property.name) + appendcommand = '{},{},{};{}'.format(commandinfo[2], commandinfo[3], replacedresponse, item.property.path) + reversecommand = '{},{},{};{}'.format(reverseinfo[2], reverseinfo[3], replacedreverse, item.property.path) self.logger.log(VERBOSE2, "Updating Item {}: Appendcommand on: {}, Reversecommand: {}, Send Commands: {}".format( @@ -2464,8 +2464,8 @@ def _replace_setcommand(replace_commandinfo, replace_dict, replace_command, repl replacedresponse, replacedreverse = CreateResponse( commandinfo, reverseinfo, '', self._name, self._specialparse, self.logger).response_off() - appendcommand = '{},{},{};{}'.format(commandinfo[2], commandinfo[3], replacedresponse, item.property.name) - reversecommand = '{},{},{};{}'.format(reverseinfo[2], reverseinfo[3], replacedreverse, item.property.name) + appendcommand = '{},{},{};{}'.format(commandinfo[2], commandinfo[3], replacedresponse, item.property.path) + reversecommand = '{},{},{};{}'.format(reverseinfo[2], reverseinfo[3], replacedreverse, item.property.path) self.logger.log(VERBOSE1, "Updating Item {}: Appendcommand off: {}. Reversecommand: {} Send Commands: {}".format( @@ -2595,7 +2595,7 @@ def _replace_setcommand(replace_commandinfo, replace_dict, replace_command, repl poweritem = self._items['zone0'][powerinfo[1]].get('Item') appendcommand = '{},{},{};{}'.format(powerinfo[2], powerinfo[3], replacedresponse, - poweritem.property.name) + poweritem.property.path) self._send_commands.insert(0, appendcommand) self._sendingcommand = appendcommand self.logger.debug( @@ -2624,7 +2624,7 @@ def _replace_setcommand(replace_commandinfo, replace_dict, replace_command, repl if not self._send_commands == [] and setting is True: appendcommand = '{},{},{};{}'.format(command_re, commandinfo[3], response, - item.property.name) + item.property.path) setting = False appending = _replace_setcommand(commandinfo, self._send_commands, appendcommand, value, 'append') removefromkeeping = _replace_setcommand(commandinfo, self._keep_commands, appendcommand, value, 'keep') @@ -2655,7 +2655,7 @@ def _replace_setcommand(replace_commandinfo, replace_dict, replace_command, repl self._name, zone, commandinfo[2], item, command_re)) elif setting is True: appendcommand = '{},{},{};{}'.format(command_re, commandinfo[3], response, - item.property.name) + item.property.path) removefromkeeping = _replace_setcommand(commandinfo, self._keep_commands, appendcommand, value, 'keep') for i in removefromkeeping: self.logger.log(VERBOSE1, @@ -2714,7 +2714,7 @@ def _replace_setcommand(replace_commandinfo, replace_dict, replace_command, repl for zone in range(self._number_of_zones, -1, -1): for entry in self._init_commands['zone{}'.format(zone)]: try: - compareitem = self._init_commands['zone{}'.format(zone)][entry].get('Item').property.name + compareitem = self._init_commands['zone{}'.format(zone)][entry].get('Item').property.path self.logger.log(VERBOSE2, "Updating Item {}: Compare {} with {}.".format(self._name, commanditem, compareitem)) if commanditem == compareitem: From fa4cea5e5a65fab246d8c87935c0d52df72d6322 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sat, 18 May 2019 16:59:03 +0200 Subject: [PATCH 041/200] change property.name to property.path --- stateengine/StateEngineAction.py | 38 +++++++++---------- stateengine/StateEngineActions.py | 2 +- stateengine/StateEngineCondition.py | 2 +- stateengine/StateEngineConditionSet.py | 4 +- stateengine/StateEngineEval.py | 4 +- stateengine/StateEngineItem.py | 16 ++++---- stateengine/StateEngineLogger.py | 2 +- stateengine/StateEngineState.py | 10 ++--- stateengine/StateEngineTools.py | 6 +-- stateengine/StateEngineValue.py | 6 +-- stateengine/__init__.py | 6 +-- stateengine/_pv_1_4_2/StateEngineAction.py | 38 +++++++++---------- stateengine/_pv_1_4_2/StateEngineActions.py | 2 +- stateengine/_pv_1_4_2/StateEngineCondition.py | 2 +- .../_pv_1_4_2/StateEngineConditionSet.py | 4 +- stateengine/_pv_1_4_2/StateEngineEval.py | 4 +- stateengine/_pv_1_4_2/StateEngineItem.py | 16 ++++---- stateengine/_pv_1_4_2/StateEngineLogger.py | 2 +- stateengine/_pv_1_4_2/StateEngineState.py | 10 ++--- stateengine/_pv_1_4_2/StateEngineTools.py | 6 +-- stateengine/_pv_1_4_2/StateEngineValue.py | 6 +-- stateengine/_pv_1_4_2/__init__.py | 6 +-- 22 files changed, 96 insertions(+), 96 deletions(-) diff --git a/stateengine/StateEngineAction.py b/stateengine/StateEngineAction.py index 3e74b818f..1cca2ad47 100755 --- a/stateengine/StateEngineAction.py +++ b/stateengine/StateEngineAction.py @@ -176,15 +176,15 @@ def complete(self, item_state): if self.__item is not None: self.__value.set_cast(self.__item.cast) self.__mindelta.set_cast(self.__item.cast) - self._scheduler_name = self.__item.property.name + "-SeItemDelayTimer" - if self._abitem.id == self.__item.property.name: + self._scheduler_name = self.__item.property.path + "-SeItemDelayTimer" + if self._abitem.id == self.__item.property.path: self.__caller += '_self' # Write action to logger def write_to_logger(self): SeActionBase.write_to_logger(self) if self.__item is not None: - self._log_debug("item: {0}", self.__item.property.name) + self._log_debug("item: {0}", self.__item.property.path) self.__mindelta.write_to_logger() self.__value.write_to_logger() @@ -212,10 +212,10 @@ def _execute(self, actionname: str, repeat_text: str = ""): delta = float(abs(self.__item() - value)) if delta < mindelta: text = "{0}: Not setting '{1}' to '{2}' because delta '{3:.2}' is lower than mindelta '{4}'" - self._log_debug(text, actionname, self.__item.property.name, value, delta, mindelta) + self._log_debug(text, actionname, self.__item.property.path, value, delta, mindelta) return - self._log_debug("{0}: Set '{1}' to '{2}'.{3}", actionname, self.__item.property.name, value, repeat_text) + self._log_debug("{0}: Set '{1}' to '{2}'.{3}", actionname, self.__item.property.path, value, repeat_text) # noinspection PyCallingNonCallable self.__item(value, caller=self.__caller) @@ -249,7 +249,7 @@ def write_to_logger(self): def _execute(self, actionname: str, repeat_text: str = ""): self._log_info("{0}: Setting values by attribute '{1}'.{2}", actionname, self.__byattr, repeat_text) for item in self.items.find_items(self.__byattr): - self._log_info("\t{0} = {1}", item.property.name, item.conf[self.__byattr]) + self._log_info("\t{0} = {1}", item.property.path, item.conf[self.__byattr]) item(item.conf[self.__byattr], caller=StateEngineDefaults.plugin_identification) @@ -378,13 +378,13 @@ def complete(self, item_state): if self.__item is not None: self.__value.set_cast(self.__item.cast) self.__mindelta.set_cast(self.__item.cast) - self._scheduler_name = self.__item.property.name + "-SeItemDelayTimer" + self._scheduler_name = self.__item.property.path + "-SeItemDelayTimer" # Write action to logger def write_to_logger(self): SeActionBase.write_to_logger(self) if self.__item is not None: - self._log_debug("item: {0}", self.__item.property.name) + self._log_debug("item: {0}", self.__item.property.path) self.__mindelta.write_to_logger() self.__value.write_to_logger() self._log_debug("force update: yes") @@ -414,34 +414,34 @@ def _execute(self, actionname: str, repeat_text: str = ""): delta = float(abs(self.__item() - value)) if delta < mindelta: text = "{0}: Not setting '{1}' to '{2}' because delta '{3:.2}' is lower than mindelta '{4}'" - self._log_debug(text, actionname, self.__item.property.name, value, delta, mindelta) + self._log_debug(text, actionname, self.__item.property.path, value, delta, mindelta) return # Set to different value first ("force") if self.__item() == value: if self.__item._type == 'bool': - self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.name, not value) + self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.path, not value) self.__item(not value, caller=StateEngineDefaults.plugin_identification) elif self.__item._type == 'str': if value != '': - self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.name, '') + self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.path, '') self.__item('', caller=StateEngineDefaults.plugin_identification) else: - self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.name, '-') + self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.path, '-') self.__item('-', caller=StateEngineDefaults.plugin_identification) elif self.__item._type == 'num': if value != 0: - self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.name, 0) + self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.path, 0) self.__item(0, caller=StateEngineDefaults.plugin_identification) else: - self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.name, 1) + self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.path, 1) self.__item(1, caller=StateEngineDefaults.plugin_identification) else: self._log_warning("{0}: Force not implemented for item type '{1}'", actionname, self.__item._type) else: self._log_debug("{0}: New value differs from old value, no force required.", actionname) - self._log_debug("{0}: Set '{1}' to '{2}'.{3}", actionname, self.__item.property.name, value, repeat_text) + self._log_debug("{0}: Set '{1}' to '{2}'.{3}", actionname, self.__item.property.path, value, repeat_text) # noinspection PyCallingNonCallable self.__item(value, caller=StateEngineDefaults.plugin_identification) @@ -506,19 +506,19 @@ def suspend_get_value(self, value): if manual_item is None: raise ValueError("Action {0}: Manual item '{1}' not found!", self._name, manual) - return [suspend_item, manual_item.property.name] + return [suspend_item, manual_item.property.path] def suspend_execute(self): suspend_item = self.__value[0] if self._abitem.get_update_trigger_source() == self.__value[1]: # triggered by manual-item: Update suspend item if suspend_item(): - self._log_debug("Set '{0}' to '{1}' (Force)", suspend_item.property.name, False) + self._log_debug("Set '{0}' to '{1}' (Force)", suspend_item.property.path, False) suspend_item(False) - self._log_debug("Set '{0}' to '{1}'.", suspend_item.property.name, True) + self._log_debug("Set '{0}' to '{1}'.", suspend_item.property.path, True) suspend_item(True) else: - self._log_debug("Leaving '{0}' untouched.", suspend_item.property.name) + self._log_debug("Leaving '{0}' untouched.", suspend_item.property.path) # determine remaining suspend time and write to variable item.suspend_remaining suspend_time = self._abitem.get_variable("item.suspend_time") diff --git a/stateengine/StateEngineActions.py b/stateengine/StateEngineActions.py index 073684df6..039a088b6 100755 --- a/stateengine/StateEngineActions.py +++ b/stateengine/StateEngineActions.py @@ -221,7 +221,7 @@ def complete(self, item_state): try: self.__actions[name].complete(item_state) except ValueError as ex: - raise ValueError("State '{0}', Action '{1}': {2}".format(item_state.property.name, name, str(ex))) + raise ValueError("State '{0}', Action '{1}': {2}".format(item_state.property.path, name, str(ex))) # Execute all actions # is_repeat: Inidicate if this is a repeated action without changing the state diff --git a/stateengine/StateEngineCondition.py b/stateengine/StateEngineCondition.py index cf6e46036..c54d22ff9 100755 --- a/stateengine/StateEngineCondition.py +++ b/stateengine/StateEngineCondition.py @@ -173,7 +173,7 @@ def write_to_logger(self): if self.__error is not None: self._log_debug("error: {0}", self.__error) if self.__item is not None: - self._log_debug("item: {0}", self.__item.property.name) + self._log_debug("item: {0}", self.__item.property.path) if self.__eval is not None: self._log_debug("eval: {0}", StateEngineTools.get_eval_name(self.__eval)) self.__value.write_to_logger() diff --git a/stateengine/StateEngineConditionSet.py b/stateengine/StateEngineConditionSet.py index de2364ce1..99821a2e9 100755 --- a/stateengine/StateEngineConditionSet.py +++ b/stateengine/StateEngineConditionSet.py @@ -76,7 +76,7 @@ def update(self, item, grandparent_item): self.__conditions[name].set(func, grandparent_item.conf[attribute]) except ValueError as ex: text = "Item '{0}', Attribute '{1}': {2}" - raise ValueError(text.format(grandparent_item.property.name, attribute, str(ex))) + raise ValueError(text.format(grandparent_item.property.path, attribute, str(ex))) # Check the condition set, optimize and complete it # item_state: item to read from @@ -90,7 +90,7 @@ def complete(self, item_state): continue except ValueError as ex: text = "State '{0}', Condition Set '{1}', Condition '{2}': {3}" - raise ValueError(text.format(item_state.property.name, self.name, name, str(ex))) + raise ValueError(text.format(item_state.property.path, self.name, name, str(ex))) # Remove incomplete conditions for name in conditions_to_remove: diff --git a/stateengine/StateEngineEval.py b/stateengine/StateEngineEval.py index a2575553f..196ea9d06 100755 --- a/stateengine/StateEngineEval.py +++ b/stateengine/StateEngineEval.py @@ -80,7 +80,7 @@ def get_relative_itemid(self, subitem_id): self._log_debug("Executing method 'get_relative_itemid({0})'", subitem_id) try: item = self._abitem.return_item(subitem_id) - return item.property.name + return item.property.path except Exception as ex: self.__logger.warning("Problem evaluating name of {}: {}".format(subitem_id, ex)) #self._log_exception(ex) @@ -112,7 +112,7 @@ def insert_suspend_time(self, suspend_item_id, suspend_text="Ausgesetzt bis %X") if suspend_item is None: text = "Eval-Method 'insert_suspend_time': Suspend Item {0} not found!" raise ValueError(text.format(suspend_item_id)) - self._log_debug("Suspend item is {0}", suspend_item.property.name) + self._log_debug("Suspend item is {0}", suspend_item.property.path) suspend_over = suspend_item.age() self._log_debug("Current suspend age: {0}", suspend_over) suspend_remaining = suspend_time - suspend_over diff --git a/stateengine/StateEngineItem.py b/stateengine/StateEngineItem.py index 4e6031d68..f7bdd7554 100755 --- a/stateengine/StateEngineItem.py +++ b/stateengine/StateEngineItem.py @@ -55,7 +55,7 @@ def __init__(self, smarthome, item): self.shtime = Shtime.get_instance() self.__sh = smarthome self.__item = item - self.__id = self.__item.property.name + self.__id = self.__item.property.path self.__name = str(self.__item) # initialize logging self.__logger = SeLogger.create(self.__item) @@ -105,7 +105,7 @@ def __init__(self, smarthome, item): try: self.__states.append(StateEngineState.SeState(self, item_state)) except ValueError as ex: - self.__logger.error("Ignoring state {0} because: {1}".format(item_state.property.name, str(ex))) + self.__logger.error("Ignoring state {0} because: {1}".format(item_state.property.path, str(ex))) if len(self.__states) == 0: raise ValueError("{0}: No states defined!".format(self.id)) @@ -138,25 +138,25 @@ def update_state(self, item, caller=None, source=None, dest=None): self.__logger.update_logfile() self.__logger.header("Update state of item {0}".format(self.__name)) if caller: - item_id = item.property.name if item is not None else "(no item)" + item_id = item.property.path if item is not None else "(no item)" self.__logger.debug("Update triggered by {0} (item={1} source={2} dest={3})", caller, item_id, source, dest) # Find out what initially caused the update to trigger if the caller is "Eval" orig_caller, orig_source, orig_item = StateEngineTools.get_original_caller(self.sh, caller, source, item) if orig_caller != caller: text = "Eval initially triggered by {0} (item={1} source={2})" - self.__logger.debug(text, orig_caller, orig_item.property.name, orig_source) + self.__logger.debug(text, orig_caller, orig_item.property.path, orig_source) if orig_caller == StateEngineDefaults.plugin_identification or caller == StateEngineDefaults.plugin_identification: self.__logger.debug("Ignoring changes from {0}", StateEngineDefaults.plugin_identification) self.__update_in_progress = False return - self.__update_trigger_item = item.property.name + self.__update_trigger_item = item.property.path self.__update_trigger_caller = caller self.__update_trigger_source = source self.__update_trigger_dest = dest - self.__update_original_item = orig_item.property.name + self.__update_original_item = orig_item.property.path self.__update_original_caller = orig_caller self.__update_original_source = orig_source @@ -351,9 +351,9 @@ def __write_to_log(self): # log laststate settings if self.__laststate_item_id is not None: - self.__logger.info("Item 'Laststate Id': {0}", self.__laststate_item_id.property.name) + self.__logger.info("Item 'Laststate Id': {0}", self.__laststate_item_id.property.path) if self.__laststate_item_name is not None: - self.__logger.info("Item 'Laststate Name': {0}", self.__laststate_item_name.property.name) + self.__logger.info("Item 'Laststate Name': {0}", self.__laststate_item_name.property.path) # log states for state in self.__states: diff --git a/stateengine/StateEngineLogger.py b/stateengine/StateEngineLogger.py index ab3e77b9a..a1861e4ec 100755 --- a/stateengine/StateEngineLogger.py +++ b/stateengine/StateEngineLogger.py @@ -95,7 +95,7 @@ def create(item): # item: item for which the detailed log is (used as part of file name) def __init__(self, item): self.logger = logging.getLogger(__name__) - self.__section = item.property.name.replace(".", "_").replace("/", "") + self.__section = item.property.path.replace(".", "_").replace("/", "") self.__indentlevel = 0 self.__date = None self.__filename = "" diff --git a/stateengine/StateEngineState.py b/stateengine/StateEngineState.py index d372c064a..8276f8ce2 100755 --- a/stateengine/StateEngineState.py +++ b/stateengine/StateEngineState.py @@ -47,7 +47,7 @@ def text(self): def __init__(self, abitem, item_state): super().__init__(abitem) self.__item = item_state - self.__id = self.__item.property.name + self.__id = self.__item.property.path self.__name = "" self.__text = StateEngineValue.SeValue(self._abitem, "State Name", False, "str") self.__conditions = StateEngineConditionSets.SeConditionSets(self._abitem) @@ -55,7 +55,7 @@ def __init__(self, abitem, item_state): self.__actions_enter = StateEngineActions.SeActions(self._abitem) self.__actions_stay = StateEngineActions.SeActions(self._abitem) self.__actions_leave = StateEngineActions.SeActions(self._abitem) - self._log_info("Init state {}", item_state.property.name) + self._log_info("Init state {}", item_state.property.path) self._log_increase_indent() try: self.__fill(self.__item, 0) @@ -136,7 +136,7 @@ def run_leave(self, allow_item_repeat: bool): # abitem_object: Related SeItem instance for later determination of current age and current delay def __fill(self, item_state, recursion_depth): if recursion_depth > 5: - self._log_error("{0}/{1}: too many levels of 'use'", self.id, item_state.property.name) + self._log_error("{0}/{1}: too many levels of 'use'", self.id, item_state.property.path) return # Import data from other item if attribute "use" is found @@ -146,7 +146,7 @@ def __fill(self, item_state, recursion_depth): if use_item is not None: self.__fill(use_item, recursion_depth + 1) else: - self._log_error("{0}: Referenced item '{1}' not found!", item_state.property.name, item_state.conf["se_use"]) + self._log_error("{0}: Referenced item '{1}' not found!", item_state.property.path, item_state.conf["se_use"]) # Get action sets and condition sets parent_item = item_state.return_parent() @@ -177,7 +177,7 @@ def __fill(self, item_state, recursion_depth): # if an item name is given, or if we do not have a name after returning from all recursions, # use item name as state name - if str(item_state) != item_state.property.name or (self.__name == "" and recursion_depth == 0): + if str(item_state) != item_state.property.path or (self.__name == "" and recursion_depth == 0): self.__name = str(item_state) if "se_name" in item_state.conf: self.__text.set_from_attr(item_state, "se_name", self.__text.get(None)) diff --git a/stateengine/StateEngineTools.py b/stateengine/StateEngineTools.py index 21cebd1dd..ea7b56eee 100755 --- a/stateengine/StateEngineTools.py +++ b/stateengine/StateEngineTools.py @@ -30,9 +30,9 @@ # child_id: Id of child item to search (without prefixed id of "item") # returns: child item if found, otherwise None def get_child_item(item, child_id): - search_id = item.property.name + "." + child_id + search_id = item.property.path + "." + child_id for child in item.return_children(): - if child.property.name == search_id: + if child.property.path == search_id: return child return None @@ -41,7 +41,7 @@ def get_child_item(item, child_id): # item: Item for which the last part of the id should be returned # returns: last part of item id def get_last_part_of_item_id(item): - return item.property.name.rsplit(".", 1)[1] + return item.property.path.rsplit(".", 1)[1] # cast a value as numeric. Throws ValueError if cast not possible diff --git a/stateengine/StateEngineValue.py b/stateengine/StateEngineValue.py index d23fcb7e6..b054ea4aa 100755 --- a/stateengine/StateEngineValue.py +++ b/stateengine/StateEngineValue.py @@ -132,7 +132,7 @@ def write_to_logger(self): if self.__value is not None: self._log_debug("{0}: {1}", self.__name, self.__value) elif self.__item is not None: - self._log_debug("{0} from item: {1}", self.__name, self.__item.property.name) + self._log_debug("{0} from item: {1}", self.__name, self.__item.property.path) elif self.__eval is not None: self._log_debug("{0} from eval: {1}", self.__name, self.__eval) elif self.__varname is not None: @@ -145,7 +145,7 @@ def get_text(self, prefix=None, suffix=None): if self.__value is not None: value = "{0}: {1}".format(self.__name, self.__value, prefix, suffix) elif self.__item is not None: - value = "{0} from item: {1}".format(self.__name, self.__item.property.name) + value = "{0} from item: {1}".format(self.__name, self.__item.property.path) elif self.__eval is not None: value = "{0} from eval: {1}".format(self.__name, self.__eval) elif self.__varname is not None: @@ -203,7 +203,7 @@ def __get_from_item(self): # noinspection PyCallingNonCallable value = self.__item() except Exception as ex: - self._log_info("Problem while reading item '{0}': {1}.", self.__item.property.name, str(ex)) + self._log_info("Problem while reading item '{0}': {1}.", self.__item.property.path, str(ex)) return None return self.__do_cast(value) diff --git a/stateengine/__init__.py b/stateengine/__init__.py index 2b34210ad..e19ab426a 100755 --- a/stateengine/__init__.py +++ b/stateengine/__init__.py @@ -85,9 +85,9 @@ def __init__(self, sh): # noinspection PyMethodMayBeStatic def parse_item(self, item): if "se_manual_include" in item.conf or "se_manual_exclude" in item.conf: - item._eval = "sh.stateengine_plugin_functions.manual_item_update_eval('" + item.property.name + "', caller, source)" + item._eval = "sh.stateengine_plugin_functions.manual_item_update_eval('" + item.property.path + "', caller, source)" elif "se_manual_invert" in item.conf: - item._eval = "not sh." + item.property.name + "()" + item._eval = "not sh." + item.property.path + "()" return None @@ -101,7 +101,7 @@ def run(self): ab_item = StateEngineItem.SeItem(self.get_sh(), item) self.__items[ab_item.id] = ab_item except ValueError as ex: - self.logger.error("Item: {0}: {1}".format(item.property.name, str(ex))) + self.logger.error("Item: {0}: {1}".format(item.property.path, str(ex))) if len(self.__items) > 0: self.logger.info("Using StateEngine for {} items".format(len(self.__items))) diff --git a/stateengine/_pv_1_4_2/StateEngineAction.py b/stateengine/_pv_1_4_2/StateEngineAction.py index 3e74b818f..1b586e8bb 100755 --- a/stateengine/_pv_1_4_2/StateEngineAction.py +++ b/stateengine/_pv_1_4_2/StateEngineAction.py @@ -176,15 +176,15 @@ def complete(self, item_state): if self.__item is not None: self.__value.set_cast(self.__item.cast) self.__mindelta.set_cast(self.__item.cast) - self._scheduler_name = self.__item.property.name + "-SeItemDelayTimer" - if self._abitem.id == self.__item.property.name: + self._scheduler_name = self.__item.id() + "-SeItemDelayTimer" + if self._abitem.id == self.__item.id(): self.__caller += '_self' # Write action to logger def write_to_logger(self): SeActionBase.write_to_logger(self) if self.__item is not None: - self._log_debug("item: {0}", self.__item.property.name) + self._log_debug("item: {0}", self.__item.id()) self.__mindelta.write_to_logger() self.__value.write_to_logger() @@ -212,10 +212,10 @@ def _execute(self, actionname: str, repeat_text: str = ""): delta = float(abs(self.__item() - value)) if delta < mindelta: text = "{0}: Not setting '{1}' to '{2}' because delta '{3:.2}' is lower than mindelta '{4}'" - self._log_debug(text, actionname, self.__item.property.name, value, delta, mindelta) + self._log_debug(text, actionname, self.__item.id(), value, delta, mindelta) return - self._log_debug("{0}: Set '{1}' to '{2}'.{3}", actionname, self.__item.property.name, value, repeat_text) + self._log_debug("{0}: Set '{1}' to '{2}'.{3}", actionname, self.__item.id(), value, repeat_text) # noinspection PyCallingNonCallable self.__item(value, caller=self.__caller) @@ -249,7 +249,7 @@ def write_to_logger(self): def _execute(self, actionname: str, repeat_text: str = ""): self._log_info("{0}: Setting values by attribute '{1}'.{2}", actionname, self.__byattr, repeat_text) for item in self.items.find_items(self.__byattr): - self._log_info("\t{0} = {1}", item.property.name, item.conf[self.__byattr]) + self._log_info("\t{0} = {1}", item.id(), item.conf[self.__byattr]) item(item.conf[self.__byattr], caller=StateEngineDefaults.plugin_identification) @@ -378,13 +378,13 @@ def complete(self, item_state): if self.__item is not None: self.__value.set_cast(self.__item.cast) self.__mindelta.set_cast(self.__item.cast) - self._scheduler_name = self.__item.property.name + "-SeItemDelayTimer" + self._scheduler_name = self.__item.id() + "-SeItemDelayTimer" # Write action to logger def write_to_logger(self): SeActionBase.write_to_logger(self) if self.__item is not None: - self._log_debug("item: {0}", self.__item.property.name) + self._log_debug("item: {0}", self.__item.id()) self.__mindelta.write_to_logger() self.__value.write_to_logger() self._log_debug("force update: yes") @@ -414,34 +414,34 @@ def _execute(self, actionname: str, repeat_text: str = ""): delta = float(abs(self.__item() - value)) if delta < mindelta: text = "{0}: Not setting '{1}' to '{2}' because delta '{3:.2}' is lower than mindelta '{4}'" - self._log_debug(text, actionname, self.__item.property.name, value, delta, mindelta) + self._log_debug(text, actionname, self.__item.id(), value, delta, mindelta) return # Set to different value first ("force") if self.__item() == value: if self.__item._type == 'bool': - self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.name, not value) + self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.id(), not value) self.__item(not value, caller=StateEngineDefaults.plugin_identification) elif self.__item._type == 'str': if value != '': - self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.name, '') + self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.id(), '') self.__item('', caller=StateEngineDefaults.plugin_identification) else: - self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.name, '-') + self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.id(), '-') self.__item('-', caller=StateEngineDefaults.plugin_identification) elif self.__item._type == 'num': if value != 0: - self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.name, 0) + self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.id(), 0) self.__item(0, caller=StateEngineDefaults.plugin_identification) else: - self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.name, 1) + self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.id(), 1) self.__item(1, caller=StateEngineDefaults.plugin_identification) else: self._log_warning("{0}: Force not implemented for item type '{1}'", actionname, self.__item._type) else: self._log_debug("{0}: New value differs from old value, no force required.", actionname) - self._log_debug("{0}: Set '{1}' to '{2}'.{3}", actionname, self.__item.property.name, value, repeat_text) + self._log_debug("{0}: Set '{1}' to '{2}'.{3}", actionname, self.__item.id(), value, repeat_text) # noinspection PyCallingNonCallable self.__item(value, caller=StateEngineDefaults.plugin_identification) @@ -506,19 +506,19 @@ def suspend_get_value(self, value): if manual_item is None: raise ValueError("Action {0}: Manual item '{1}' not found!", self._name, manual) - return [suspend_item, manual_item.property.name] + return [suspend_item, manual_item.id()] def suspend_execute(self): suspend_item = self.__value[0] if self._abitem.get_update_trigger_source() == self.__value[1]: # triggered by manual-item: Update suspend item if suspend_item(): - self._log_debug("Set '{0}' to '{1}' (Force)", suspend_item.property.name, False) + self._log_debug("Set '{0}' to '{1}' (Force)", suspend_item.id(), False) suspend_item(False) - self._log_debug("Set '{0}' to '{1}'.", suspend_item.property.name, True) + self._log_debug("Set '{0}' to '{1}'.", suspend_item.id(), True) suspend_item(True) else: - self._log_debug("Leaving '{0}' untouched.", suspend_item.property.name) + self._log_debug("Leaving '{0}' untouched.", suspend_item.id()) # determine remaining suspend time and write to variable item.suspend_remaining suspend_time = self._abitem.get_variable("item.suspend_time") diff --git a/stateengine/_pv_1_4_2/StateEngineActions.py b/stateengine/_pv_1_4_2/StateEngineActions.py index 073684df6..fd9679d72 100755 --- a/stateengine/_pv_1_4_2/StateEngineActions.py +++ b/stateengine/_pv_1_4_2/StateEngineActions.py @@ -221,7 +221,7 @@ def complete(self, item_state): try: self.__actions[name].complete(item_state) except ValueError as ex: - raise ValueError("State '{0}', Action '{1}': {2}".format(item_state.property.name, name, str(ex))) + raise ValueError("State '{0}', Action '{1}': {2}".format(item_state.id(), name, str(ex))) # Execute all actions # is_repeat: Inidicate if this is a repeated action without changing the state diff --git a/stateengine/_pv_1_4_2/StateEngineCondition.py b/stateengine/_pv_1_4_2/StateEngineCondition.py index cf6e46036..ba7090d8c 100755 --- a/stateengine/_pv_1_4_2/StateEngineCondition.py +++ b/stateengine/_pv_1_4_2/StateEngineCondition.py @@ -173,7 +173,7 @@ def write_to_logger(self): if self.__error is not None: self._log_debug("error: {0}", self.__error) if self.__item is not None: - self._log_debug("item: {0}", self.__item.property.name) + self._log_debug("item: {0}", self.__item.id()) if self.__eval is not None: self._log_debug("eval: {0}", StateEngineTools.get_eval_name(self.__eval)) self.__value.write_to_logger() diff --git a/stateengine/_pv_1_4_2/StateEngineConditionSet.py b/stateengine/_pv_1_4_2/StateEngineConditionSet.py index de2364ce1..4e1a970a0 100755 --- a/stateengine/_pv_1_4_2/StateEngineConditionSet.py +++ b/stateengine/_pv_1_4_2/StateEngineConditionSet.py @@ -76,7 +76,7 @@ def update(self, item, grandparent_item): self.__conditions[name].set(func, grandparent_item.conf[attribute]) except ValueError as ex: text = "Item '{0}', Attribute '{1}': {2}" - raise ValueError(text.format(grandparent_item.property.name, attribute, str(ex))) + raise ValueError(text.format(grandparent_item.id(), attribute, str(ex))) # Check the condition set, optimize and complete it # item_state: item to read from @@ -90,7 +90,7 @@ def complete(self, item_state): continue except ValueError as ex: text = "State '{0}', Condition Set '{1}', Condition '{2}': {3}" - raise ValueError(text.format(item_state.property.name, self.name, name, str(ex))) + raise ValueError(text.format(item_state.id(), self.name, name, str(ex))) # Remove incomplete conditions for name in conditions_to_remove: diff --git a/stateengine/_pv_1_4_2/StateEngineEval.py b/stateengine/_pv_1_4_2/StateEngineEval.py index 363c66d5d..f9a738dc3 100755 --- a/stateengine/_pv_1_4_2/StateEngineEval.py +++ b/stateengine/_pv_1_4_2/StateEngineEval.py @@ -80,7 +80,7 @@ def get_relative_itemid(self, subitem_id): self._log_debug("Executing method 'get_relative_itemid({0})'", subitem_id) try: item = self._abitem.return_item(subitem_id) - return item.property.name + return item.id() except Exception as ex: self._log_exception(ex) @@ -110,7 +110,7 @@ def insert_suspend_time(self, suspend_item_id, suspend_text="Ausgesetzt bis %X") if suspend_item is None: text = "Eval-Method 'insert_suspend_time': Suspend Item {0} not found!" raise ValueError(text.format(suspend_item_id)) - self._log_debug("Suspend item is {0}", suspend_item.property.name) + self._log_debug("Suspend item is {0}", suspend_item.id()) suspend_over = suspend_item.age() self._log_debug("Current suspend age: {0}", suspend_over) suspend_remaining = suspend_time - suspend_over diff --git a/stateengine/_pv_1_4_2/StateEngineItem.py b/stateengine/_pv_1_4_2/StateEngineItem.py index 4e6031d68..788e3ce69 100755 --- a/stateengine/_pv_1_4_2/StateEngineItem.py +++ b/stateengine/_pv_1_4_2/StateEngineItem.py @@ -55,7 +55,7 @@ def __init__(self, smarthome, item): self.shtime = Shtime.get_instance() self.__sh = smarthome self.__item = item - self.__id = self.__item.property.name + self.__id = self.__item.id() self.__name = str(self.__item) # initialize logging self.__logger = SeLogger.create(self.__item) @@ -105,7 +105,7 @@ def __init__(self, smarthome, item): try: self.__states.append(StateEngineState.SeState(self, item_state)) except ValueError as ex: - self.__logger.error("Ignoring state {0} because: {1}".format(item_state.property.name, str(ex))) + self.__logger.error("Ignoring state {0} because: {1}".format(item_state.id(), str(ex))) if len(self.__states) == 0: raise ValueError("{0}: No states defined!".format(self.id)) @@ -138,25 +138,25 @@ def update_state(self, item, caller=None, source=None, dest=None): self.__logger.update_logfile() self.__logger.header("Update state of item {0}".format(self.__name)) if caller: - item_id = item.property.name if item is not None else "(no item)" + item_id = item.id() if item is not None else "(no item)" self.__logger.debug("Update triggered by {0} (item={1} source={2} dest={3})", caller, item_id, source, dest) # Find out what initially caused the update to trigger if the caller is "Eval" orig_caller, orig_source, orig_item = StateEngineTools.get_original_caller(self.sh, caller, source, item) if orig_caller != caller: text = "Eval initially triggered by {0} (item={1} source={2})" - self.__logger.debug(text, orig_caller, orig_item.property.name, orig_source) + self.__logger.debug(text, orig_caller, orig_item.id(), orig_source) if orig_caller == StateEngineDefaults.plugin_identification or caller == StateEngineDefaults.plugin_identification: self.__logger.debug("Ignoring changes from {0}", StateEngineDefaults.plugin_identification) self.__update_in_progress = False return - self.__update_trigger_item = item.property.name + self.__update_trigger_item = item.id() self.__update_trigger_caller = caller self.__update_trigger_source = source self.__update_trigger_dest = dest - self.__update_original_item = orig_item.property.name + self.__update_original_item = orig_item.id() self.__update_original_caller = orig_caller self.__update_original_source = orig_source @@ -351,9 +351,9 @@ def __write_to_log(self): # log laststate settings if self.__laststate_item_id is not None: - self.__logger.info("Item 'Laststate Id': {0}", self.__laststate_item_id.property.name) + self.__logger.info("Item 'Laststate Id': {0}", self.__laststate_item_id.id()) if self.__laststate_item_name is not None: - self.__logger.info("Item 'Laststate Name': {0}", self.__laststate_item_name.property.name) + self.__logger.info("Item 'Laststate Name': {0}", self.__laststate_item_name.id()) # log states for state in self.__states: diff --git a/stateengine/_pv_1_4_2/StateEngineLogger.py b/stateengine/_pv_1_4_2/StateEngineLogger.py index ab3e77b9a..132167646 100755 --- a/stateengine/_pv_1_4_2/StateEngineLogger.py +++ b/stateengine/_pv_1_4_2/StateEngineLogger.py @@ -95,7 +95,7 @@ def create(item): # item: item for which the detailed log is (used as part of file name) def __init__(self, item): self.logger = logging.getLogger(__name__) - self.__section = item.property.name.replace(".", "_").replace("/", "") + self.__section = item.id().replace(".", "_").replace("/", "") self.__indentlevel = 0 self.__date = None self.__filename = "" diff --git a/stateengine/_pv_1_4_2/StateEngineState.py b/stateengine/_pv_1_4_2/StateEngineState.py index d372c064a..adc3ca409 100755 --- a/stateengine/_pv_1_4_2/StateEngineState.py +++ b/stateengine/_pv_1_4_2/StateEngineState.py @@ -47,7 +47,7 @@ def text(self): def __init__(self, abitem, item_state): super().__init__(abitem) self.__item = item_state - self.__id = self.__item.property.name + self.__id = self.__item.id() self.__name = "" self.__text = StateEngineValue.SeValue(self._abitem, "State Name", False, "str") self.__conditions = StateEngineConditionSets.SeConditionSets(self._abitem) @@ -55,7 +55,7 @@ def __init__(self, abitem, item_state): self.__actions_enter = StateEngineActions.SeActions(self._abitem) self.__actions_stay = StateEngineActions.SeActions(self._abitem) self.__actions_leave = StateEngineActions.SeActions(self._abitem) - self._log_info("Init state {}", item_state.property.name) + self._log_info("Init state {}", item_state.id()) self._log_increase_indent() try: self.__fill(self.__item, 0) @@ -136,7 +136,7 @@ def run_leave(self, allow_item_repeat: bool): # abitem_object: Related SeItem instance for later determination of current age and current delay def __fill(self, item_state, recursion_depth): if recursion_depth > 5: - self._log_error("{0}/{1}: too many levels of 'use'", self.id, item_state.property.name) + self._log_error("{0}/{1}: too many levels of 'use'", self.id, item_state.id()) return # Import data from other item if attribute "use" is found @@ -146,7 +146,7 @@ def __fill(self, item_state, recursion_depth): if use_item is not None: self.__fill(use_item, recursion_depth + 1) else: - self._log_error("{0}: Referenced item '{1}' not found!", item_state.property.name, item_state.conf["se_use"]) + self._log_error("{0}: Referenced item '{1}' not found!", item_state.id(), item_state.conf["se_use"]) # Get action sets and condition sets parent_item = item_state.return_parent() @@ -177,7 +177,7 @@ def __fill(self, item_state, recursion_depth): # if an item name is given, or if we do not have a name after returning from all recursions, # use item name as state name - if str(item_state) != item_state.property.name or (self.__name == "" and recursion_depth == 0): + if str(item_state) != item_state.id() or (self.__name == "" and recursion_depth == 0): self.__name = str(item_state) if "se_name" in item_state.conf: self.__text.set_from_attr(item_state, "se_name", self.__text.get(None)) diff --git a/stateengine/_pv_1_4_2/StateEngineTools.py b/stateengine/_pv_1_4_2/StateEngineTools.py index 21cebd1dd..1b0bfeec3 100755 --- a/stateengine/_pv_1_4_2/StateEngineTools.py +++ b/stateengine/_pv_1_4_2/StateEngineTools.py @@ -30,9 +30,9 @@ # child_id: Id of child item to search (without prefixed id of "item") # returns: child item if found, otherwise None def get_child_item(item, child_id): - search_id = item.property.name + "." + child_id + search_id = item.id() + "." + child_id for child in item.return_children(): - if child.property.name == search_id: + if child.id() == search_id: return child return None @@ -41,7 +41,7 @@ def get_child_item(item, child_id): # item: Item for which the last part of the id should be returned # returns: last part of item id def get_last_part_of_item_id(item): - return item.property.name.rsplit(".", 1)[1] + return item.id().rsplit(".", 1)[1] # cast a value as numeric. Throws ValueError if cast not possible diff --git a/stateengine/_pv_1_4_2/StateEngineValue.py b/stateengine/_pv_1_4_2/StateEngineValue.py index d23fcb7e6..a380182d3 100755 --- a/stateengine/_pv_1_4_2/StateEngineValue.py +++ b/stateengine/_pv_1_4_2/StateEngineValue.py @@ -132,7 +132,7 @@ def write_to_logger(self): if self.__value is not None: self._log_debug("{0}: {1}", self.__name, self.__value) elif self.__item is not None: - self._log_debug("{0} from item: {1}", self.__name, self.__item.property.name) + self._log_debug("{0} from item: {1}", self.__name, self.__item.id()) elif self.__eval is not None: self._log_debug("{0} from eval: {1}", self.__name, self.__eval) elif self.__varname is not None: @@ -145,7 +145,7 @@ def get_text(self, prefix=None, suffix=None): if self.__value is not None: value = "{0}: {1}".format(self.__name, self.__value, prefix, suffix) elif self.__item is not None: - value = "{0} from item: {1}".format(self.__name, self.__item.property.name) + value = "{0} from item: {1}".format(self.__name, self.__item.id()) elif self.__eval is not None: value = "{0} from eval: {1}".format(self.__name, self.__eval) elif self.__varname is not None: @@ -203,7 +203,7 @@ def __get_from_item(self): # noinspection PyCallingNonCallable value = self.__item() except Exception as ex: - self._log_info("Problem while reading item '{0}': {1}.", self.__item.property.name, str(ex)) + self._log_info("Problem while reading item '{0}': {1}.", self.__item.id(), str(ex)) return None return self.__do_cast(value) diff --git a/stateengine/_pv_1_4_2/__init__.py b/stateengine/_pv_1_4_2/__init__.py index cc7708084..191e5ad6a 100755 --- a/stateengine/_pv_1_4_2/__init__.py +++ b/stateengine/_pv_1_4_2/__init__.py @@ -85,9 +85,9 @@ def __init__(self, sh): # noinspection PyMethodMayBeStatic def parse_item(self, item): if "se_manual_include" in item.conf or "se_manual_exclude" in item.conf: - item._eval = "sh.stateengine_plugin_functions.manual_item_update_eval('" + item.property.name + "', caller, source)" + item._eval = "sh.stateengine_plugin_functions.manual_item_update_eval('" + item.id() + "', caller, source)" elif "se_manual_invert" in item.conf: - item._eval = "not sh." + item.property.name + "()" + item._eval = "not sh." + item.id() + "()" return None @@ -101,7 +101,7 @@ def run(self): ab_item = StateEngineItem.SeItem(self.get_sh(), item) self.__items[ab_item.id] = ab_item except ValueError as ex: - self.logger.error("Item: {0}: {1}".format(item.property.name, str(ex))) + self.logger.error("Item: {0}: {1}".format(item.id(), str(ex))) if len(self.__items) > 0: self.logger.info("Using StateEngine for {} items".format(len(self.__items))) From 8a43c5475c2247a4a68b30a5c6cf620368b141ff Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 19 May 2019 23:54:13 +0200 Subject: [PATCH 042/200] Huge update with lots of fixes and improvements see README for details. media state and title query not working yet. --- kodi/README.md | 156 ++-------------------- kodi/__init__.py | 300 ++++++++++++++++++++++++++----------------- kodi/plugin.yaml | 94 ++++++++++++-- kodi/user_doc.rst | 87 +++++++++++++ kodi/user_doc_en.rst | 95 ++++++++++++++ 5 files changed, 459 insertions(+), 273 deletions(-) create mode 100755 kodi/user_doc.rst create mode 100755 kodi/user_doc_en.rst diff --git a/kodi/README.md b/kodi/README.md index 631b552f2..b8b9f7549 100644 --- a/kodi/README.md +++ b/kodi/README.md @@ -1,147 +1,13 @@ # Kodi -## Requirements - -You only need one or more Kodi (12 a.k.a. Frodo or above) with -System-Settings-Service "Allow programs on other systems to control Kodi" enabled. - -## Configuration - -### plugin.conf (deprecated) / plugin.yaml - -``` -# /etc/plugin.conf -[kodi] - class_name = Kodi - class_path = plugins.kodi - instance = mediacenter - host = xxx.xxx.xxx.xxx - port = 9090 -``` - -```yaml -# /etc/plugin.yaml -kodi: - class_name: Kodi - class_path: plugins.kodi - instance: mediacenter - host: xxx.xxx.xxx.xxx - port: 9090 -``` - -#### host -This attribute is mandatory. You have to provide the IP address of the Kodi system. - -#### port -The port to connect to. This must be Kodi's TCP port not its HTTP port (see [Kodi JSON-RPC API](http://kodi.wiki/?title=JSON-RPC_API)). Default is 9090. - -### items.conf (deprecated) / items.yaml -You can register an item to the plugin by adding a field named `kodi_item` augmented with the respective plugin instance you want to register the item to: -``` -# /items/items.conf -[living] - [[kodi]] - type = str - kodi_item@mediacenter = state - [[[title]]] - type = str - kodi_item@mediacenter = title - [[[media]]] - type = str - kodi_item@mediacenter = media - [[[volume]]] - type = num - kodi_item@mediacenter = volume - [[[mute]]] - type = bool - kodi_item@mediacenter = mute -... -``` - -```yaml -# /items/items.yaml -living: - kodi: - volume: - type: num - kodi_item@mediacenter: volume - mute: - type: bool - kodi_item@mediacenter: mute - title: - type: str - kodi_item@mediacenter: title - state: - type: str - kodi_item@mediacenter: state - media: - type: str - kodi_item@mediacenter: media - favorites: - type: dict - kodi_item@mediacenter: favorites - input: - type: str - enforce_updates: true - kodi_item@mediacenter: input - on_off: - type: bool - kodi_item@mediacenter: on_off -``` - -#### kodi_item -If an item carries a `kodi_item` it should be of a specific type. Listed below are the types depending on the value that is assigned to `kodi_item`: - -##### on_off -Item type `bool`. If the item is set to `False`, a shutdown request is send to Kodi. If the item is set to `True`, the plugin tries to establish a connection to Kodi (this does not include Wake on LAN or anything else). - -##### volume -Item type `num`. Changing the item controls the volume of Kodi. The allowed range is 0 to 100. - -##### mute -Item type `bool`. Changing the item controls muting the Kodi player. - -##### title -Item type `str`. This item displays information about the currently playing element's title in Kodi. Changing its value has no effect as it is only set by the plugin and not read on updates. - -##### media -Item type `str`. This item displays information about the currently playing element's media type in Kodi. Changing its value has no effect as it is only set by the plugin and not read on updates. - -##### state -Item type `str`. This item displays information about the current state of Kodi (Playing, Stopped, Screensaver,...). Changing its value has no effect as it is only set by the plugin and not read on updates. - -##### favorites -Item type `dict`. The item stores information about favorites defined in Kodi in a dictionary. Changing its value has no effect as it is only set by the plugin and not read on updates. - -##### input -Item type `str`. This item gives complete control over sending inputs to Kodi and can be seen as simulating keyboard events and shortcuts. -If the item is set to an allowed Kodi input action, the respective action is send to Kodi. -The item should be set to enforce updates in order to allow for sending consecutive commands of the same action. -There is a huge amount of actions possible. Listed below are a number of oft-used input actions this item may be set to. For all allowed actions see the plugin's source code (most of them are pretty self-explanatory). - - * `play` start the current Kodi player - * `pause` pause the current Kodi player - * `playpause` toggle the current Kodi player (if paused play, if playing pause) - * `stop` stop the current Kodi player - * `osd` show the On Screen Display for the current Kodi player - * `left` highlight the element left of the current one (same as hitting the left arrow key on a keyboard) - * `right` highlight the element right of the current one (same as hitting the right arrow key on a keyboard) - * `up` highlight the element above the current one (same as hitting the up arrow key on a keyboard) - * `down` highlight the element above the current one (same as hitting the down arrow key on a keyboard) - * `select` select the currently highlighted element - * `contextmenu` show the context menu for the currently highlighted element - * `home` go to the home menu - * `back` go to the previous menu - * `volumeup` increase the volume - * `volumedown` decrease the volume - -### logic.conf - -Nothing so far - -## Functions -This plugin provides the function to send notification messages to Kodi. - -```python -sh.living.kodi.notify('Door', 'Ding Dong') -``` +## Changelog + +### v1.5.0 +* Einbinden von Makros (Abfolgen von Befehlen) +* Befehle werden in eine Warteschleife gelegt, die in der korrekten Reihenfolge abgearbeitet werden +* Weitere Parameter zum Einstellen von Verbindungsversuchen, etc. +* Befehle werden erneut gesendet, wenn eine direkte Antwort nicht mit dem Befehl übereinstimmt (sofern es sich um keine Fehlermeldung handelt) +* Beim Verbindungsaufbau werden Initialisierungsbefehle gesendet, auch nachdem die Verbindung unterbrochen wurde +* Bug Fix: on_off, Mute, etc. funktionieren nun sowohl mit True als auch False Werten +* Sendet Kodi mehrere Antworten gleichzeitig, werden diese nacheinander abgearbeitet (führte früher zu einem Freeze des Plugins) +* Optimierungen von Logging und Code diff --git a/kodi/__init__.py b/kodi/__init__.py index 55cd2108b..91322519a 100755 --- a/kodi/__init__.py +++ b/kodi/__init__.py @@ -26,6 +26,7 @@ import threading import json import re +from collections import OrderedDict from lib.model.smartplugin import SmartPlugin from lib.network import Tcp_client @@ -38,7 +39,7 @@ class Kodi(SmartPlugin): the update functions for the items ''' - PLUGIN_VERSION = '1.4.0' + PLUGIN_VERSION = '1.5.0' ALLOW_MULTIINSTANCE = True # list of all possible input actions for Kodi @@ -77,14 +78,23 @@ class Kodi(SmartPlugin): 'nextchannelgroup', 'playpvr', 'playpvrtv', 'playpvrradio', 'record', 'togglecommskip', 'showtimerrule', 'leftclick', 'rightclick', 'middleclick', 'doubleclick', 'longclick', 'wheelup', 'wheeldown', 'mousedrag', 'mousemove', 'tap', 'longpress', 'pangesture', - 'zoomgesture', 'rotategesture', 'swipeleft', 'swiperight', 'swipeup', 'swipedown', 'error', 'noop'] + 'zoomgesture', 'rotategesture', 'swipeleft', 'swiperight', 'swipeup', 'swipedown', 'error', 'noop', 'resume'] - _get_items = ['volume', 'mute', 'title', 'media', 'state', 'favorites'] + _get_items = ['volume', 'mute', 'title', 'media', 'state', 'favourites'] _set_items = {'volume': dict(method='Application.SetVolume', params=dict(volume='ITEM_VALUE')), 'mute' : dict(method='Application.SetMute', params=dict(mute='ITEM_VALUE')), 'input' : dict(method='Input.ExecuteAction', params=dict(action='ITEM_VALUE')), - 'on_off': dict(method='System.Shutdown', params=None)} + 'on_off': dict(method='System.Shutdown', params=None), + 'player': dict(method='Player.GetActivePlayers', params=None)} + + _macro = {'resume': {"play": dict(method='Input.ExecuteAction', params=dict(action='play')), "resume": dict(method='Input.ExecuteAction', params=dict(action='select'))}, + 'beginning': {"play": dict(method='Input.ExecuteAction', params=dict(action='play')), + "down": dict(method='Input.ExecuteAction', params=dict(action='down')), "select": dict(method='Input.ExecuteAction', params=dict(action='select'))}} + + _initcommands = {"ping": {"method": "JSONRPC.Ping"}, "getvolume": {"method": 'Application.GetProperties', "params": dict(properties=['volume', 'muted'])}, + "favourites": {"method": 'Favourites.GetFavourites', "params": dict(properties=['window', 'path', 'thumbnail', 'windowparameter'])}, + "player": {"method": "Player.GetActivePlayers"} } def __init__(self, sh, *args, **kwargs): ''' @@ -105,7 +115,7 @@ def __init__(self, sh, *args, **kwargs): autoreconnect=self.autoreconnect, connect_retries=self.connect_retries, connect_cycle=self.connect_cycle) - self.kodi_tcp_connection.set_callbacks(connected=self.connect_to_kodi, + self.kodi_tcp_connection.set_callbacks(connected=self.on_connect, data_received=self.received_data, disconnected=self.on_disconnect) self.kodi_server_alive = False @@ -114,11 +124,13 @@ def __init__(self, sh, *args, **kwargs): self.message_id = 1 self.response_id = None self.sendingcommand = None - self.sendingretries = 0 + self.senderrors = {} self.cmd_lock = threading.Lock() self.reply_lock = threading.Condition() self.reply = None - self.registered_items = {key: [] for key in set(list(Kodi._set_items.keys()) + Kodi._get_items)} + + self.sendcommands = [] + self.registered_items = {key: [] for key in set(list(Kodi._set_items.keys()) + ['macro'] + Kodi._get_items)} def run(self): ''' @@ -137,41 +149,23 @@ def stop(self): self.kodi_server_alive = False self.alive = False - def on_connect(self, by): + def on_connect(self, by=None): ''' This method is called on a succesful connect to Kodi On a connect first check if the JSON-RPC API is available. If this is the case initialize all items with values extracted from Kodi ''' # check if API is available - self.logger.debug("Kodi running onconnect started by {}. Connection: {}.".format(by, self.kodi_server_alive)) - result = self.send_kodi_rpc(method='JSONRPC.Ping') - self.logger.debug("Kodi self reply: {}.".format(self.reply)) - if result is None or result['result'] != 'pong': - self.logger.error('Kodi JSON-RPC API not available on {}:{}'.format(self.host, self.port)) - #self.stop() - else: - # API available -> init items - # - # get volume and mute state - result = self.send_kodi_rpc(method='Application.GetProperties', - params=dict(properties=['volume', 'muted']))['result'] - for elem in self.registered_items['mute']: - elem(result['muted'], caller='Kodi') - for elem in self.registered_items['volume']: - elem(result['volume'], caller='Kodi') - # get the list of favorites - result = self.send_kodi_rpc(method='Favourites.GetFavourites', - params=dict(properties=['window', 'path', 'thumbnail', 'windowparameter']))['result'] - item_dict = dict() - if result['favourites'] is not None: - item_dict = {elem['title']: elem for elem in result['favourites']} - for elem in self.registered_items['favorites']: - elem(item_dict, caller='Kodi') - # parse active player (if present) - self._get_player_info() + self.kodi_server_alive = True + if isinstance(by, (dict, Tcp_client)): + by = 'TCP_Connect' + self.logger.debug("Kodi running onconnect started by {}. Connection: {}. Selfcommands {}".format(by, self.kodi_server_alive, self.sendcommands)) + if len(self.sendcommands) == 0: + for command in self._initcommands: + self.logger.debug("Sending command after connect: {}".format(self._initcommands.get(command))) + self.send_kodi_rpc(method=self._initcommands.get(command).get('method'), params=self._initcommands.get(command).get('params'), wait=False) - def on_disconnect(self, obj): + def on_disconnect(self, obj=None): ''' function called when TCP connection to Kodi is disconnected ''' self.logger.debug('Received disconnect from Kodi') self.kodi_server_alive = False @@ -197,7 +191,7 @@ def connect_to_kodi(self, by): self.kodi_server_alive = False else: self.kodi_server_alive = True - self.on_connect(by) + #self.on_connect(by) for elem in self.registered_items['on_off']: elem(self.kodi_server_alive, caller='Kodi') @@ -210,15 +204,12 @@ def parse_item(self, item): ''' if self.has_iattr(item.conf, 'kodi_item'): kodi_item = self.get_iattr_value(item.conf, 'kodi_item') - self.logger.debug('Plugin \'%s\', instance \'%s\': registering item: %s', - self.get_shortname(), - self.get_instance_name(), - item) + self.logger.debug('Registering item: {}'.format(item)) if kodi_item in self.registered_items: self.registered_items[kodi_item].append(item) else: - self.logger.warning('I do not know the kodi_item \'%s\', skipping!', kodi_item) - if kodi_item in Kodi._set_items: + self.logger.warning('I do not know the kodi_item {}, skipping!'.format(kodi_item)) + if kodi_item in Kodi._set_items or kodi_item == 'macro': return self.update_item def parse_logic(self, logic): @@ -237,35 +228,45 @@ def update_item(self, item, caller=None, source=None, dest=None): :param dest: if given it represents the dest ''' item_value = item() - if item_value is not None: - if caller != 'Kodi' and self.has_iattr(item.conf, 'kodi_item'): - # update item was triggered from something else then this plugin -> send to Kodi - kodi_item = self.get_iattr_value(item.conf, 'kodi_item') + if item_value is not None and caller != 'Kodi' and self.has_iattr(item.conf, 'kodi_item'): + # update item was triggered from something else then this plugin -> send to Kodi + kodi_item = self.get_iattr_value(item.conf, 'kodi_item') + self.logger.debug("Updating item {} using kodi command {}".format(item, kodi_item)) - if kodi_item == 'on_off' and item(): - # handle the on_off item as special case: - # if item is on, try to establish a connection to Kodi - self.connect_to_kodi('update') - # if item is off send shutdown command to Kodi. This is - # handled in the standard block below though - elif kodi_item in Kodi._set_items: - if kodi_item == 'input' and item() not in self._possible_input_actions: - self.logger.error('The action \'%s\' for the kodi_item \'input\' is not allowed, skipping!', item_value) - else: - self.logger.debug('Plugin \'%s\': update_item was called with item \'%s\' from caller \'%s\', source \'%s\' and dest \'%s\'', - self.get_shortname(), item, caller, source, dest) - method = self._set_items[kodi_item]['method'] - params = self._set_items[kodi_item]['params'] - if params is not None: - # copy so we don't interfer with the class variable - params = params.copy() - # replace the wild card ITEM_VALUE with the item's value - for key, value in params.items(): - if value == 'ITEM_VALUE': - params[key] = item_value - self.send_kodi_rpc(method, params, wait=False) + if kodi_item == 'on_off' and item(): + # handle the on_off item as special case: + # if item is on, try to establish a connection to Kodi + self.connect_to_kodi('update') + # if item is off send shutdown command to Kodi. This is + # handled in the standard block below though + elif kodi_item == 'macro' and item() in self._macro: + macro = item() + for command in self._macro.get(macro): + method = self._macro.get(macro).get(command).get('method') + params = self._macro.get(macro).get(command).get('params') + self.logger.debug("Command - Method: {}, Params: {}".format(method, params)) + self.send_kodi_rpc(method=method, params=params, wait=False) + elif kodi_item in Kodi._set_items: + if kodi_item == 'player': + for elem in self.registered_items['player']: + elem(0, caller='Kodi') + if kodi_item == 'input' and item() not in self._possible_input_actions: + self.logger.error('The action \'%s\' for the kodi_item \'input\' is not allowed, skipping!', item_value) else: - self.logger.info('kodi_item \'%s\' not in send_keys, skipping!', kodi_item) + self.logger.debug('Plugin \'%s\': update_item was called with item \'%s\' from caller \'%s\', source \'%s\' and dest \'%s\'', + self.get_shortname(), item, caller, source, dest) + method = self._set_items[kodi_item]['method'] + params = self._set_items[kodi_item]['params'] + if params is not None: + # copy so we don't interfer with the class variable + params = params.copy() + # replace the wild card ITEM_VALUE with the item's value + for key, value in params.items(): + if value == 'ITEM_VALUE': + params[key] = item_value + self.send_kodi_rpc(method, params, wait=False) + else: + self.logger.info('kodi_item \'%s\' not in send_keys, skipping!', kodi_item) def notify(self, title, message, image=None, display_time=10000): ''' @@ -302,14 +303,18 @@ def send_kodi_rpc(self, method, params=None, message_id=None, wait=True): message_id = self.message_id if message_id > 99: self.message_id = 0 + message_id = "{}_{}".format(method, message_id) self.response_id = message_id if params is not None: data = {'jsonrpc': '2.0', 'id': message_id, 'method': method, 'params': params} else: data = {'jsonrpc': '2.0', 'id': message_id, 'method': method} + if not data in self.sendcommands: + self.sendcommands.append(data) + self.logger.debug('Sendcommands while sending: {0}'.format(self.sendcommands)) self.reply_lock.acquire() + self.sendingcommand = json.dumps(data, separators=(',', ':')) self.logger.debug('Kodi sending: {0}'.format(json.dumps(data, separators=(',', ':')))) - self.sendingcommand = data self.kodi_tcp_connection.send((json.dumps(data, separators=(',', ':')) + '\r\n').encode()) if wait: self.logger.debug("Waiting for reply_lock..") @@ -328,33 +333,65 @@ def received_data(self, connection, data): Kodi. ''' self.logger.debug('Kodi receiving: {0}'.format(data)) - text_data = '[' + re.sub(r'\}\{', '},{', data) + ']' - events = json.loads(text_data) + try: + events = (re.sub(r'\}\{', '}-#-{', data)).split("-#-") + events = list(OrderedDict((x, True) for x in events).keys()) + except Exception as err: + self.logger.error(err) for event in events: + event = json.loads(event) if len(events) > 1: self.logger.debug('Kodi checking from multianswer: {0}'.format(event)) if 'id' in event: self.reply_lock.acquire() - if event['id'] == self.response_id or event['result'] == 'pong': - self.response_id = None - self.sendingcommand = None - self.reply = event - self.logger.debug("Kodi command {} sent successfully".format(event['id'])) - self.reply_lock.notify() - self.reply_lock.release() - else: - self.sendingretries += 1 - self.reply_lock.release() - if self.sendingretries <= self.send_retries: - self.logger.debug("Kodi resend {}".format(self.sendingcommand)) - self.send_kodi_rpc(self.sendingcommand.get('method'), params=self.sendingcommand.get('params'), message_id=self.sendingcommand.get('id')) - else: - self.logger.warning("Kodi giving up command {}".format(self.sendingcommand)) + templist = [] + templist = self.sendcommands + for entry in templist: + if entry.get('id') == event.get('id'): + if entry.get('method') == 'Player.GetActivePlayers': + if len(event.get('result')) > 0: + for elem in self.registered_items['player']: + elem(event.get('result')[0].get('playerid'), caller='Kodi') + self.logger.debug("Getting player info for {}".format(event.get('result'))) + self._get_player_info(event.get('result')) + self.sendcommands.remove(entry) + if 'error' in event: + self.logger.warning("There was a problem with the {} command: {}. Removing from queue.".format(event.get('id'), event.get('error').get('message'))) + elif event.get('result') and entry.get('method').startswith('Application.GetProperties'): + muted = event['result'].get('muted') + volume = event['result'].get('volume') + self.logger.debug("Received GetProperties: Change mute to {} and volume to {}".format(muted, volume)) + for elem in self.registered_items['mute']: + elem(muted, caller='Kodi') + for elem in self.registered_items['volume']: + elem(volume, caller='Kodi') + elif event.get('result') and entry.get('method').startswith('Favourites.GetFavourites'): + item_dict = dict() + if event.get('result').get('favourites') is None: + self.logger.debug("No favourites found.") + else: + item_dict = {elem['title']: elem for elem in event.get('result').get('favourites')} + self.logger.debug("Favourites found: {}".format(item_dict)) + for elem in self.registered_items['favourites']: + elem(item_dict, caller='Kodi') + else: + self.logger.debug("Sent successfully {}.".format(entry)) + self.reply_lock.notify() + self.reply_lock.release() + self.logger.debug('Sendcommands after receiving: {0}'.format(self.sendcommands)) + elif 'favourites' in event: + item_dict = dict() + item_dict = {elem['title']: elem for elem in result['favourites']} + self.logger.debug("Favourites queried: {}".format(item_dict)) + for elem in self.registered_items['favourites']: + elem(item_dict, caller='Kodi') elif 'method' in event: if event['method'] == 'Player.OnPause': + self.logger.debug("Paused Player") for elem in self.registered_items['state']: elem('Pause', caller='Kodi') elif event['method'] == 'Player.OnStop': + self.logger.debug("Stopped Player") for elem in self.registered_items['state']: elem('Stopped Player', caller='Kodi') for elem in self.registered_items['media']: @@ -362,16 +399,39 @@ def received_data(self, connection, data): for elem in self.registered_items['title']: elem('', caller='Kodi') elif event['method'] == 'GUI.OnScreensaverActivated': + self.logger.debug("Activate Screensaver") for elem in self.registered_items['state']: elem('Screensaver', caller='Kodi') - if event['method'] in ['Player.OnPlay']: + if event['method'] in ['Player.OnPlay', 'Player.OnAVChange']: # use a different thread for event handling - self.get_sh().trigger('kodi-player-start', self._get_player_info, 'Kodi') + self.logger.debug("Getting player info after player started") + self.scheduler_trigger('kodi-player-start', self.send_kodi_rpc, 'Kodi', 'OnPlay', {"method": "Player.GetActivePlayers"}) elif event['method'] in ['Application.OnVolumeChanged']: + self.logger.debug("Change mute to {} and volume to {}".format(event['params']['data']['muted'], event['params']['data']['volume'])) for elem in self.registered_items['mute']: elem(event['params']['data']['muted'], caller='Kodi') for elem in self.registered_items['volume']: elem(event['params']['data']['volume'], caller='Kodi') + if len(self.sendcommands) > 0: + id = self.sendcommands[0].get('id') + if self.senderrors.get(id): + self.senderrors[id] += 1 + else: + self.senderrors[id] = 1 + if self.senderrors.get(id) <= self.send_retries: + self.logger.debug("Sending again: {}. Retry {}/{}".format(self.sendcommands[0], self.senderrors.get(id), self.send_retries)) + self.send_kodi_rpc(self.sendcommands[0].get('method'), params=self.sendcommands[0].get('params'), message_id=self.sendcommands[0].get('id')) + else: + try: + self.senderrors.pop(id) + except Exception: + pass + self.logger.debug("Gave up resending {} because maximum retries {} reached. Error list: {}".format( + self.sendcommands[0], self.send_retries, self.senderrors)) + self.sendcommands.remove(self.sendcommands[0]) + if len(self.sendcommands) > 0: + self.logger.debug("Sending next command: {}".format(self.sendcommands[0])) + self.send_kodi_rpc(self.sendcommands[0].get('method'), params=self.sendcommands[0].get('params'), message_id=self.sendcommands[0].get('id')) def _send_player_command(self, kodi_item): ''' @@ -380,27 +440,32 @@ def _send_player_command(self, kodi_item): the active Kodi players ''' # get the currently active players - result = self.send_kodi_rpc(method='Player.GetActivePlayers') - result = result['result'] - if len(result) == 0: - self.logger.warning('Kodi: no active player found, skipping request!') - else: - if len(result) > 1: - self.logger.info('Kodi: there is more than one active player. Sending request to each player!') - for player in result: - player_id = player['playerid'] - self.send_kodi_rpc(method=self._set_items[kodi_item]['method'], - params=dict(playerid=player_id), - wait=False) + self.logger.debug("Getting player command") + if 1 == 2: + result = self.send_kodi_rpc(method='Player.GetActivePlayers') + result = result['result'] + if len(result) == 0: + self.logger.warning('No active player found, skipping request!') + else: + if len(result) > 1: + self.logger.info('There is more than one active player. Sending request to each player!') + for player in result: + player_id = player['playerid'] + self.send_kodi_rpc(method=self._set_items[kodi_item]['method'], + params=dict(playerid=player_id), + wait=False) - def _get_player_info(self): + def _get_player_info(self, result=None): ''' Extract information from Kodi regarding the active player and save it to the respective items ''' - result = self.send_kodi_rpc(method='Player.GetActivePlayers')['result'] + #result = self.send_kodi_rpc(method='Player.GetActivePlayers')['result'] + self.logger.debug("Getting player info. Checking {}".format(result)) + if not isinstance(result, list): + return if len(result) == 0: - self.logger.info('Kodi: no active player found.') + self.logger.info('No active player found.') for elem in self.registered_items['title']: elem('', caller='Kodi') for elem in self.registered_items['media']: @@ -408,20 +473,25 @@ def _get_player_info(self): for elem in self.registered_items['state']: elem('No Active Player', caller='Kodi') return - playerid = result[0]['playerid'] - typ = result[0]['type'] + playerid = result[0].get('playerid') + typ = result[0].get('type') for elem in self.registered_items['state']: elem('Playing', caller='Kodi') - if typ == 'video': - result = self.send_kodi_rpc(method='Player.GetItem', + self.logger.debug("Now checking player item") + if typ == 'video2': + self.send_kodi_rpc(method='Player.GetItem', params=dict(properties=['title'], playerid=playerid), message_id='VideoGetItem')['result'] - title = result['item']['title'] - typ = result['item']['type'] - if not title and 'label' in result['item']: - title = result['item']['label'] - for elem in self.registered_items['media']: - elem(typ.capitalize(), caller='Kodi') + try: + self.logger.debug(result) + title = result['item'].get('title') + typ = result['item'].get('type') + if not title and 'label' in result['item']: + title = result['item']['label'] + for elem in self.registered_items['media']: + elem(typ.capitalize(), caller='Kodi') + except Exception as err: + self.logger.error(err) elif typ == 'audio': for elem in self.registered_items['media']: elem('Audio', caller='Kodi') @@ -438,7 +508,7 @@ def _get_player_info(self): elem('Picture', caller='Kodi') title = '' else: - self.logger.warning('Kodi: Unknown type: {0}'.format(typ)) + self.logger.warning('Unknown type: {0}'.format(typ)) return for elem in self.registered_items['title']: elem(title, caller='Kodi') diff --git a/kodi/plugin.yaml b/kodi/plugin.yaml index d49dd4454..e3955ecac 100755 --- a/kodi/plugin.yaml +++ b/kodi/plugin.yaml @@ -3,17 +3,21 @@ plugin: # Global plugin attributes type: interface # plugin type (gateway, interface, protocol, system, web) description: - de: 'Anbindung von Kodi (ehemals XBMC) v12 (Frodo) oder neuer' - en: 'Connecting Kodi (formerly XBMC) v12 (Frode) or newer' - maintainer: ggf. msinn - tester: onkelandy - state: develop - keywords: mediacenter -# documentation: https://github.com/smarthomeNG/plugins/blob/develop/mqtt/README.md # url of documentation (wiki) page -# support: https://knx-user-forum.de/forum/supportforen/smarthome-py + de: 'Anbindung von Kodi (ehemals XBMC)' + en: 'Connecting Kodi (formerly XBMC)' + requirements: + de: 'Es ist eine Kodi Installation v12 oder höher notwendig, bei der in den Einstellungen "Allow programs on other systems to control Kodi" aktiviert ist.' + en: 'You only need one or more Kodi (12 a.k.a. Frodo or above) with + System-Settings-Service "Allow programs on other systems to control Kodi" enabled.' + maintainer: onkelandy + tester: psilo + state: ready + keywords: mediacenter kodi xmbc + documentation: http://smarthomeng.de/user/plugins/kodi/user_doc.html + support: https://knx-user-forum.de/forum/supportforen/smarthome-py/1364598-supportthread-für-kodi-plugin # Following entries are for Smart-Plugins: - version: 1.4.0 # Plugin version + version: 1.5.0 # Plugin version sh_minversion: 1.4 # minimum shNG version to use this plugin # sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) multi_instance: True @@ -70,12 +74,76 @@ parameters: item_attributes: # Definition of item attributes defined by this plugin - kody_item: + kodi_item: type: str - valid_list: ['on_off', 'volume', 'mute', 'title', 'media', 'state', 'favorites', 'input'] + valid_list: ['on_off', 'volume', 'mute', 'title', 'media', 'state', 'favourites', 'input', 'macro', 'player'] description: - de: '' - en: '' + de: 'Der Attributwert hängt von der gewünschten Funktion ab. Siehe Dokumentation für Details.' + en: 'The attribute value is dependant on the wanted function. Look at the documentation for details.' + +item_structs: + query: + name: Vorlage-Struktur für Kodi Infos, die nicht aktiv verämndert werden können. + + state: + kodi_item@instance: state + type: str + visu_acl: ro + + title: + kodi_item@instance: title + type: str + visu_acl: ro + + media: + kodi_item@instance: media + type: str + visu_acl: ro + + player: + kodi_item@instance: player + type: num + visu_acl: rw + enforce_updates: true + + control: + name: Vorlage-Struktur für Kodi Befehle zum Steuern + + mute: + kodi_item@instance: mute + type: bool + visu_acl: rw + enforce_updates: true + + volume: + kodi_item@instance: volume + type: num + visu_acl: rw + enforce_updates: true + + on_off: + kodi_item@instance: on_off + enforce_updates: true + type: bool + visu_acl: rw + + input: + kodi_item@instance: input + type: str + visu_acl: rw + enforce_updates: true + + favourites: + kodi_item@instance: favourites + type: str + visu_acl: rw + enforce_updates: true + + macro: + kodi_item@instance: macro + type: str + visu_acl: rw + enforce_updates: true logic_parameters: NONE # Definition of logic parameters defined by this plugin diff --git a/kodi/user_doc.rst b/kodi/user_doc.rst new file mode 100755 index 000000000..1602c0fcd --- /dev/null +++ b/kodi/user_doc.rst @@ -0,0 +1,87 @@ +.. index:: Plugins; kodi +.. index:: kodi + +kodi +#### + +Konfiguration +============= + +.. important:: + + Die Informationen zur Konfiguration des Plugins sind unter :doc:``/plugins_doc/config/kodi`` beschrieben. + +.. code-block:: yaml + + # etc/plugin.yaml + kodi: + plugin_name: kodi + host: 10.0.0.1 + #instance: kodi_one + #autoreconnect: False + #connect_retries: 10 + #connect_cycle: 5 + #send_retries: 5 + +Items +===== + +kodi_item@[Instanz]: [Funktion] +------------------------------- +Folgende Funktionen werden aktuell unterstützt: +**on_off** +Item type ``bool``. Wird das Item auf "False" gesetzt, wird Kodi heruntergefahren. Bei einem "True" versucht das Plugin, eine Verbindung zu Kodi herzustellen (ohne Wake on LAN o.ä.) + +**volume** +Item type ``num``. Einstellen der Lautstärke in Prozent, ein Wert zwischen 0 und 100. + +**mute** +Item type ``bool``. Stummschalten. + +**player** +Item type ``num``. Erhält automatisch die Player ID des aktuellen Players. Durch Schreiben eines Wert (empfohlen: 0) wird der aktuelle Player abgefragt. Achtung: Ohne aktiven Player sind die Befehle Play, Pause, etc. nicht funktionsfähig. + +**title** +Item type ``str``. Der Titel des aktuell gespielten Elements. Wird vom Plugin automatisch bei Änderungen aktualisiert. + +**media** +Item type ``str``. Der Medientyp des aktuell gespielten Elements. Wird vom Plugin automatisch bei Änderungen aktualisiert. + +**macro** +Item type ``str``. Eine Abfolge von Befehlen. Aktuell werden folgende Makros unterstützt, die beim Abspielen eines Elements relevant sind: +- resume: Falls ein Medium eine gewisse Zeit gelaufen ist, ist es möglich, an der gleichen Stelle fortzusetzen. +- beginning: Auch wenn ein Medium bereits eine gewisse Zeit gelaufen ist, wird von vorne begonnen. + +**state** +Item type ``str``. Informaation zum aktuellen Status von Kodi (Playing, Stopped, Screensaver,...). + +**favourites** +Item type ``dict``. Die in Kodi definierten Favoriten werden als Dictionary in dieses Item gespeichert. Ein Ändern der Einträge ist nicht möglich. + +**input** +Item type ``str``. Diese Funktion ermöglicht die Kontrolle über Kodi wie mit einer Fernbedienung. Für dieses Item sollte ``enforce_updates`` aktiviert werden. Eine Ãœbersicht über mögliche Aktion ist auf der `Kodi Wiki Seite `_ +Ein Auszug der wichtigsten Aktionen: + +- ``play`` Abspielen. Es muss ein aktiver Player vorhanden sein! +- ``pause`` Pausieren. Es muss ein aktiver Player vorhanden sein! +- ``playpause`` Umschalten zwischen Abspielen und Pause. Es muss ein aktiver Player vorhanden sein! +- ``stop`` Stoppen. Es muss ein aktiver Player vorhanden sein! +- ``osd`` On Screen Display anzeigen +- ``left`` Cursor nach links +- ``right`` Cursor nach rechts +- ``up`` Cursor nach oben +- ``down`` Cursor nach unten +- ``select`` Aktuelles Navigationselement aktivieren +- ``contextmenu`` Anzeigen des Kontextmenüs +- ``home`` Home Menu +- ``back`` Einen Schritt zurück +- ``volumeup`` Erhöhen der Lautstärke +- ``volumedown`` Verringern der Lautstärke + +Struct Vorlagen +=============== + +Ab smarthomeNG 1.6 können Vorlagen aus dem Plugin einfach eingebunden werden. Dabei stehen folgende Vorlagen zur Verfügung: + +- query: Enthält Funktionen, die zur Abfrage von Kodi Infos dienen. +- control: Enthält Funktionen, mit denen Kodi gesteuert werden kann. diff --git a/kodi/user_doc_en.rst b/kodi/user_doc_en.rst new file mode 100755 index 000000000..38fab9b64 --- /dev/null +++ b/kodi/user_doc_en.rst @@ -0,0 +1,95 @@ +.. index:: Plugins; kodi +.. index:: kodi + +kodi +#### + +Konfiguration +============= + +.. important:: + + Die Informationen zur Konfiguration des Plugins sind unter :doc:`/plugins_doc/config/kodi` beschrieben. + +.. code-block:: yaml + + # etc/plugin.yaml + kodi: + plugin_name: kodi + host: 10.0.0.1 + #instance: kodi_one + #autoreconnect: False + #connect_retries: 10 + #connect_cycle: 5 + #send_retries: 5 + +Items +===== + +kodi_item@[Instanz]: [Funktion] +------------------------------- +Folgende Funktionen werden aktuell unterstützt: +**on_off** +Item Type `bool`. If the item is set to `False`, a shutdown request is send to Kodi. If the item is set to `True`, the plugin tries to establish a connection to Kodi (this does not include Wake on LAN or anything else). + +##### volume +Item type `num`. Changing the item controls the volume of Kodi. The allowed range is 0 to 100. + +##### mute +Item type `bool`. Changing the item controls muting the Kodi player. + +##### mute +Item type `num`. Set to 0 to query the current player id. Will also get updated automatically as soon as a player is active. + +##### title +Item type `str`. This item displays information about the currently playing element's title in Kodi. Changing its value has no effect as it is only set by the plugin and not read on updates. + +##### media +Item type `str`. This item displays information about the currently playing element's media type in Kodi. Changing its value has no effect as it is only set by the plugin and not read on updates. + +##### macro +Item type `str`. Currently you can use the values "resume" and "beginning". If a movie has been played for a while and stopped, Kodi won't let you just play the movie. You have to choose if you want to start from the beginning or if you want to resume at the last playback position. There might be other macros coming. They are basically just a sequence of commands. + +##### state +Item type `str`. This item displays information about the current state of Kodi (Playing, Stopped, Screensaver,...). Changing its value has no effect as it is only set by the plugin and not read on updates. + +##### favorites +Item type `dict`. The item stores information about favorites defined in Kodi in a dictionary. Changing its value has no effect as it is only set by the plugin and not read on updates. + +##### input +Item type `str`. This item gives complete control over sending inputs to Kodi and can be seen as simulating keyboard events and shortcuts. +If the item is set to an allowed Kodi input action, the respective action is send to Kodi. +The item should be set to enforce updates in order to allow for sending consecutive commands of the same action. +There is a huge amount of actions possible. Listed below are a number of oft-used input actions this item may be set to. For all allowed actions see the plugin's source code (most of them are pretty self-explanatory). + + * `play` start the current Kodi player + * `pause` pause the current Kodi player + * `playpause` toggle the current Kodi player (if paused play, if playing pause) + * `stop` stop the current Kodi player + * `osd` show the On Screen Display for the current Kodi player + * `left` highlight the element left of the current one (same as hitting the left arrow key on a keyboard) + * `right` highlight the element right of the current one (same as hitting the right arrow key on a keyboard) + * `up` highlight the element above the current one (same as hitting the up arrow key on a keyboard) + * `down` highlight the element above the current one (same as hitting the down arrow key on a keyboard) + * `select` select the currently highlighted element + * `contextmenu` show the context menu for the currently highlighted element + * `home` go to the home menu + * `back` go to the previous menu + * `volumeup` increase the volume + * `volumedown` decrease the volume + + + +Struct Vorlagen +=============== + +Ab smarthomeNG 1.6 können Vorlagen aus dem Plugin einfach eingebunden werden. Dabei stehen folgende Vorlagen zur Verfügung: + +- general: Display, Menü, Cursorssteuerung, Statusupdate, Neuladen der Konfiguration, etc. +- speaker_selection: Zur Auswahl von Speaker A, B oder beide +- individual_volume: Zur Einstellung der Lautstärke für jeden einzelnen Lautsprecher +- sound_settings: Listening Mode, Bass und Höhen, dynamische Kompression, etc. +- video_settings: Aspect Ratio, Monitorout, etc. +- zone1, zone2, zone3: Sämtliche für die Zonen relevante Features wie Quelle, Lautstärke, etc. + +Die Vorlagen beinhalten möglicherweise zu viele Items bzw. Items, die vom Gerät nicht unterstützt werden. Wenn aber kein entsprechendes Kommando im models/model.txt File hinterlegt ist, werden die betroffenen Items einfach ignoriert. Also kein Problem! From 4a16ac22ef3f1156190a74ad39a1f5b0e19fbafe Mon Sep 17 00:00:00 2001 From: onkelandy Date: Mon, 20 May 2019 20:48:52 +0200 Subject: [PATCH 043/200] Update plugin.yaml --- uzsu/plugin.yaml | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/uzsu/plugin.yaml b/uzsu/plugin.yaml index 56a0cc814..536282643 100755 --- a/uzsu/plugin.yaml +++ b/uzsu/plugin.yaml @@ -25,6 +25,8 @@ plugin: de: 'Das Plugin benötigt die folgende Software:\n \n - libatlas-base-dev: Zumindest auf einem Raspberry Pi mit Debian Stretch ist der Befehl nötig: ``sudo apt install libatlas-base-dev``\n + - Bei neueren SciPy Versionen kann auf einem Raspi der Build trotzdem scheitern. Es ist dann empfohlen, die aktuellste passende Datei (armv6 = Raspi1, armv7 = Rest) + von hier herunterzuladen und ``pip3 install scipy*.whl`` zu starten: https://www.piwheels.org/simple/scipy/\n - Python Modul scipy: ``pip3 install scipy``. Es wird empfohlen, zuerst die Pythonmodule zu aktualisieren, aber unbedingt darauf zu achten, dass die Requirements von SmarthomeNG erfüllt bleiben! Sollte die Installation via pip nicht funktionieren: ``sudo apt update && sudo apt install -y python3-scipy``\n @@ -32,6 +34,8 @@ plugin: en: 'This plugin needs the following software to be installed and running:\n \n - libatlas-base-dev: On Raspberry Pi debian stretch you also have to run ``sudo apt install libatlas-base-dev``\n + - With newer SciPy versions build can still fail on Raspis. It is recommended to download the most recent file (armv6 = Raspi1, armv7 = others) from here and run + ``pip3 install scipy*.whl``: https://www.piwheels.org/simple/scipy/\n - Python module scipy: ``pip3 install scipy``. Update your Python packages first (but make sure they still meet the requirements for smarthomeng)! If that does not work you can use: ``sudo apt update && sudo apt install -y python3-scipy``\n @@ -40,7 +44,7 @@ plugin: tester: Sandman60, cmalo, schuma # keywords: iot xyz documentation: https://www.smarthomeng.de/user/plugins/uzsu/user_doc.html - support: https://knx-user-forum.de/forum/supportforen/smarthome-py/1270230-uzsu-neue-version-von-onkelandy + support: https://knx-user-forum.de/forum/supportforen/smarthome-py/1364692-supportthread-für-uzsu-plugin version: 1.5.3 # Plugin version sh_minversion: 1.5 # minimum shNG version to use this plugin From fc9498ef33b74b5a80efabb70ea4cf14e1038128 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Mon, 20 May 2019 20:50:03 +0200 Subject: [PATCH 044/200] subfolder models --- avdevice/AVDeviceInit.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/avdevice/AVDeviceInit.py b/avdevice/AVDeviceInit.py index 146f5b104..dd63976e7 100755 --- a/avdevice/AVDeviceInit.py +++ b/avdevice/AVDeviceInit.py @@ -719,7 +719,7 @@ def read_commandfile(self): self._specialparse = {} self.logger.debug("Initializing {}: Starting to read file {}. Functions: {}".format( self._name, self._model, self._functions)) - filename = '{}/{}.txt'.format(os.path.abspath(os.path.dirname(__file__)), self._model) + filename = '{}/models/{}.txt'.format(os.path.abspath(os.path.dirname(__file__)), self._model) with open(filename, encoding='utf-8') as commands: zones = [0] From 5656921deaf59b998ba7a6708a4c098150c35dee Mon Sep 17 00:00:00 2001 From: onkelandy Date: Tue, 21 May 2019 00:38:35 +0200 Subject: [PATCH 045/200] include title query and player commands --- kodi/__init__.py | 173 ++++++++++++++++++++++++++++++----------------- 1 file changed, 110 insertions(+), 63 deletions(-) diff --git a/kodi/__init__.py b/kodi/__init__.py index 91322519a..d2519d326 100755 --- a/kodi/__init__.py +++ b/kodi/__init__.py @@ -88,6 +88,9 @@ class Kodi(SmartPlugin): 'on_off': dict(method='System.Shutdown', params=None), 'player': dict(method='Player.GetActivePlayers', params=None)} + _player_items = {'stop': dict(method='Player.Stop', params=None), + 'speed': dict(method='Player.SetSpeed', params=dict(speed='ITEM_VALUE'))} + _macro = {'resume': {"play": dict(method='Input.ExecuteAction', params=dict(action='play')), "resume": dict(method='Input.ExecuteAction', params=dict(action='select'))}, 'beginning': {"play": dict(method='Input.ExecuteAction', params=dict(action='play')), "down": dict(method='Input.ExecuteAction', params=dict(action='down')), "select": dict(method='Input.ExecuteAction', params=dict(action='select'))}} @@ -96,6 +99,7 @@ class Kodi(SmartPlugin): "favourites": {"method": 'Favourites.GetFavourites', "params": dict(properties=['window', 'path', 'thumbnail', 'windowparameter'])}, "player": {"method": "Player.GetActivePlayers"} } + def __init__(self, sh, *args, **kwargs): ''' Initalizes the plugin. @@ -125,12 +129,12 @@ def __init__(self, sh, *args, **kwargs): self.response_id = None self.sendingcommand = None self.senderrors = {} - self.cmd_lock = threading.Lock() + self.cmd_lock = threading.Condition() self.reply_lock = threading.Condition() self.reply = None - + self.activeplayers = [] self.sendcommands = [] - self.registered_items = {key: [] for key in set(list(Kodi._set_items.keys()) + ['macro'] + Kodi._get_items)} + self.registered_items = {key: [] for key in set(list(Kodi._set_items.keys()) + ['macro'] + Kodi._get_items + list(Kodi._player_items.keys()))} def run(self): ''' @@ -209,7 +213,7 @@ def parse_item(self, item): self.registered_items[kodi_item].append(item) else: self.logger.warning('I do not know the kodi_item {}, skipping!'.format(kodi_item)) - if kodi_item in Kodi._set_items or kodi_item == 'macro': + if kodi_item in Kodi._set_items or kodi_item == 'macro' or kodi_item in Kodi._player_items: return self.update_item def parse_logic(self, logic): @@ -264,7 +268,20 @@ def update_item(self, item, caller=None, source=None, dest=None): for key, value in params.items(): if value == 'ITEM_VALUE': params[key] = item_value - self.send_kodi_rpc(method, params, wait=False) + self._send_player_command(method, params, kodi_item) + elif kodi_item in Kodi._player_items: + self.logger.debug('Plugin \'%s\': update_item was called with item \'%s\' from caller \'%s\', source \'%s\' and dest \'%s\'', + self.get_shortname(), item, caller, source, dest) + method = self._player_items[kodi_item]['method'] + params = self._player_items[kodi_item]['params'] or {} + if params is not None: + # copy so we don't interfer with the class variable + params = params.copy() + # replace the wild card ITEM_VALUE with the item's value + for key, value in params.items(): + if value == 'ITEM_VALUE': + params[key] = item_value + self._send_player_command(method, params, kodi_item) else: self.logger.info('kodi_item \'%s\' not in send_keys, skipping!', kodi_item) @@ -295,15 +312,21 @@ def send_kodi_rpc(self, method, params=None, message_id=None, wait=True): response from Kodi ''' reply = None + self.logger.debug("Sending method {}. Alive: {}".format(method, self.kodi_server_alive)) if self.kodi_server_alive: self.cmd_lock.acquire() + self.logger.debug("Command lock acquired") self.reply = None + ''' if message_id is None: self.message_id += 1 message_id = self.message_id if message_id > 99: self.message_id = 0 - message_id = "{}_{}".format(method, message_id) + message_id = "{}_{}".format(method, message_id) + ''' + message_id = method + self.logger.debug('Sendcommands while sending: {0}'.format(self.sendcommands)) self.response_id = message_id if params is not None: data = {'jsonrpc': '2.0', 'id': message_id, 'method': method, 'params': params} @@ -311,11 +334,17 @@ def send_kodi_rpc(self, method, params=None, message_id=None, wait=True): data = {'jsonrpc': '2.0', 'id': message_id, 'method': method} if not data in self.sendcommands: self.sendcommands.append(data) + else: + self.sendcommands[self.sendcommands.index(data)] = data self.logger.debug('Sendcommands while sending: {0}'.format(self.sendcommands)) self.reply_lock.acquire() - self.sendingcommand = json.dumps(data, separators=(',', ':')) - self.logger.debug('Kodi sending: {0}'.format(json.dumps(data, separators=(',', ':')))) - self.kodi_tcp_connection.send((json.dumps(data, separators=(',', ':')) + '\r\n').encode()) + try: + self.sendingcommand = json.dumps(data, separators=(',', ':')) + except Exception as err: + self.sendingcommand = data + self.logger.error("Problem with json.dumps: {}".format(err)) + self.logger.debug('Kodi sending: {0}'.format(self.sendingcommand)) + self.kodi_tcp_connection.send((self.sendingcommand + '\r\n').encode()) if wait: self.logger.debug("Waiting for reply_lock..") self.reply_lock.wait(1) @@ -323,6 +352,7 @@ def send_kodi_rpc(self, method, params=None, message_id=None, wait=True): reply = self.reply self.reply = None self.cmd_lock.release() + self.logger.debug("Command lock released") else: self.logger.debug('JSON-RPC command requested without an established connection to Kodi.') return reply @@ -337,9 +367,12 @@ def received_data(self, connection, data): events = (re.sub(r'\}\{', '}-#-{', data)).split("-#-") events = list(OrderedDict((x, True) for x in events).keys()) except Exception as err: - self.logger.error(err) + self.logger.warning("Could not optimize reply. Error: {}".format(err)) for event in events: - event = json.loads(event) + try: + event = json.loads(event) + except Exception as err: + self.logger.warning("Could not json.load reply. Error: {}".format(err)) if len(events) > 1: self.logger.debug('Kodi checking from multianswer: {0}'.format(event)) if 'id' in event: @@ -348,16 +381,26 @@ def received_data(self, connection, data): templist = self.sendcommands for entry in templist: if entry.get('id') == event.get('id'): - if entry.get('method') == 'Player.GetActivePlayers': - if len(event.get('result')) > 0: - for elem in self.registered_items['player']: - elem(event.get('result')[0].get('playerid'), caller='Kodi') - self.logger.debug("Getting player info for {}".format(event.get('result'))) - self._get_player_info(event.get('result')) - self.sendcommands.remove(entry) + if self.senderrors.get(event.get('id')): + self.senderrors[event.get('id')] = 0 if 'error' in event: self.logger.warning("There was a problem with the {} command: {}. Removing from queue.".format(event.get('id'), event.get('error').get('message'))) - elif event.get('result') and entry.get('method').startswith('Application.GetProperties'): + elif event.get('id').startswith('Player.GetActivePlayers'): + if len(event.get('result')) > 1: + self.logger.info('There is more than one active player. Sending request to each player!') + self.activeplayers = [] + for player in event.get('result'): + self.activeplayers.append(player.get('playerid')) + self._get_player_info(player) + elif len(event.get('result')) > 0: + self.activeplayers = [event.get('result')[0].get('playerid')] + self.logger.debug("Getting player info for {}".format(event.get('result'))) + self._get_player_info(event.get('result')) + for elem in self.registered_items['player']: + elem(event.get('result')[0].get('playerid'), caller='Kodi') + else: + self.activeplayers = [] + elif event.get('result') and event.get('id').startswith('Application.GetProperties'): muted = event['result'].get('muted') volume = event['result'].get('volume') self.logger.debug("Received GetProperties: Change mute to {} and volume to {}".format(muted, volume)) @@ -365,7 +408,7 @@ def received_data(self, connection, data): elem(muted, caller='Kodi') for elem in self.registered_items['volume']: elem(volume, caller='Kodi') - elif event.get('result') and entry.get('method').startswith('Favourites.GetFavourites'): + elif event.get('result') and event.get('id').startswith('Favourites.GetFavourites'): item_dict = dict() if event.get('result').get('favourites') is None: self.logger.debug("No favourites found.") @@ -374,11 +417,28 @@ def received_data(self, connection, data): self.logger.debug("Favourites found: {}".format(item_dict)) for elem in self.registered_items['favourites']: elem(item_dict, caller='Kodi') + elif event.get('result') and event.get('id').startswith('Player.GetItem'): + title = event.get('result')['item'].get('title') + typ = event.get('result')['item'].get('type') + if not title and 'label' in event.get('result')['item']: + title = event.get('result')['item']['label'] + for elem in self.registered_items['media']: + elem(typ.capitalize(), caller='Kodi') + if event.get('result')['item'].get('artist'): + artist = 'unknown' if len(event.get('result')['item'].get('artist')) == 0 else event.get('result')['item'].get('artist')[0] + title = artist + ' - ' + title + for elem in self.registered_items['title']: + elem(title, caller='Kodi') + self.logger.debug("Updated player info: title={}, type={}".format(title, typ)) else: self.logger.debug("Sent successfully {}.".format(entry)) + try: + self.sendcommands.remove(entry) + except Exception as err: + self.logger.error(err) self.reply_lock.notify() self.reply_lock.release() - self.logger.debug('Sendcommands after receiving: {0}'.format(self.sendcommands)) + self.logger.debug('Sendcommands after receiving: {0}'.format(self.sendcommands)) elif 'favourites' in event: item_dict = dict() item_dict = {elem['title']: elem for elem in result['favourites']} @@ -405,7 +465,12 @@ def received_data(self, connection, data): if event['method'] in ['Player.OnPlay', 'Player.OnAVChange']: # use a different thread for event handling self.logger.debug("Getting player info after player started") - self.scheduler_trigger('kodi-player-start', self.send_kodi_rpc, 'Kodi', 'OnPlay', {"method": "Player.GetActivePlayers"}) + data = {'jsonrpc': '2.0', 'id': 'Player.GetActivePlayers', 'method': 'Player.GetActivePlayers'} + if not data in self.sendcommands: + self.sendcommands.append(data) + else: + self.sendcommands[self.sendcommands.index(data)] = data + #self.scheduler_trigger('kodi-player-start', self.send_kodi_rpc, 'Kodi', 'OnPlay', {"method": "Player.GetActivePlayers"}) elif event['method'] in ['Application.OnVolumeChanged']: self.logger.debug("Change mute to {} and volume to {}".format(event['params']['data']['muted'], event['params']['data']['volume'])) for elem in self.registered_items['mute']: @@ -433,34 +498,30 @@ def received_data(self, connection, data): self.logger.debug("Sending next command: {}".format(self.sendcommands[0])) self.send_kodi_rpc(self.sendcommands[0].get('method'), params=self.sendcommands[0].get('params'), message_id=self.sendcommands[0].get('id')) - def _send_player_command(self, kodi_item): + def _send_player_command(self, method, params, kodi_item): ''' This method should only be called from the update item method in a new thread in order to handle Play/Pause and Stop commands to the active Kodi players ''' - # get the currently active players - self.logger.debug("Getting player command") - if 1 == 2: - result = self.send_kodi_rpc(method='Player.GetActivePlayers') - result = result['result'] - if len(result) == 0: - self.logger.warning('No active player found, skipping request!') - else: - if len(result) > 1: - self.logger.info('There is more than one active player. Sending request to each player!') - for player in result: - player_id = player['playerid'] - self.send_kodi_rpc(method=self._set_items[kodi_item]['method'], - params=dict(playerid=player_id), - wait=False) + self.logger.debug("Active players: {}".format(self.activeplayers)) + if len(self.activeplayers) == 0: + self.logger.warning('Kodi: no active player found, skipping request!') + else: + if len(self.activeplayers) > 1: + self.logger.info('Kodi: there is more than one active player. Sending request to each player!') + params = params or {} + for player in self.activeplayers: + params.update({'playerid':player}) + self.send_kodi_rpc(method=method, + params=params, + wait=False) def _get_player_info(self, result=None): ''' Extract information from Kodi regarding the active player and save it to the respective items ''' - #result = self.send_kodi_rpc(method='Player.GetActivePlayers')['result'] self.logger.debug("Getting player info. Checking {}".format(result)) if not isinstance(result, list): return @@ -477,38 +538,24 @@ def _get_player_info(self, result=None): typ = result[0].get('type') for elem in self.registered_items['state']: elem('Playing', caller='Kodi') - self.logger.debug("Now checking player item") - if typ == 'video2': + self.logger.debug("Now checking player item for player with id {}".format(playerid)) + if typ == 'video': self.send_kodi_rpc(method='Player.GetItem', - params=dict(properties=['title'], playerid=playerid), - message_id='VideoGetItem')['result'] - try: - self.logger.debug(result) - title = result['item'].get('title') - typ = result['item'].get('type') - if not title and 'label' in result['item']: - title = result['item']['label'] - for elem in self.registered_items['media']: - elem(typ.capitalize(), caller='Kodi') - except Exception as err: - self.logger.error(err) + params=dict(properties=['title'], playerid=playerid), + message_id='Player.GetItem_Video') elif typ == 'audio': for elem in self.registered_items['media']: elem('Audio', caller='Kodi') - result = self.send_kodi_rpc(method='Player.GetItem', - params=dict(properties=['title', 'artist'], playerid=playerid), - message_id='AudioGetItem')['result'] - if len(result['item']['artist']) == 0: - artist = 'unknown' - else: - artist = result['item']['artist'][0] - title = artist + ' - ' + result['item']['title'] + self.send_kodi_rpc(method='Player.GetItem', + params=dict(properties=['title', 'artist'], playerid=playerid), + message_id='Player.GetItem_Audio') + elif typ == 'picture': for elem in self.registered_items['media']: elem('Picture', caller='Kodi') title = '' + for elem in self.registered_items['title']: + elem(title, caller='Kodi') else: self.logger.warning('Unknown type: {0}'.format(typ)) return - for elem in self.registered_items['title']: - elem(title, caller='Kodi') From 8ca818fbce61b40b4bf47e9ec8e23817eb7fd7bd Mon Sep 17 00:00:00 2001 From: onkelandy Date: Tue, 21 May 2019 07:44:07 +0200 Subject: [PATCH 046/200] avoid scipy updates above 1.2.1 There is only one option at the time to install scipy successfully on a Raspi and that version is 1.2.1 (or lower) --- uzsu/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uzsu/requirements.txt b/uzsu/requirements.txt index 99953f2f6..f61559001 100644 --- a/uzsu/requirements.txt +++ b/uzsu/requirements.txt @@ -1,2 +1,2 @@ numpy -scipy>=1.1.0 \ No newline at end of file +scipy>=1.1.0<=1.2.1 From 6453ce33ec66ea6ffebde036a762baa84583b3ea Mon Sep 17 00:00:00 2001 From: onkelandy Date: Tue, 21 May 2019 09:24:16 +0200 Subject: [PATCH 047/200] additional commands, small fixes --- kodi/README.md | 1 + kodi/__init__.py | 6 +++++- kodi/plugin.yaml | 24 ++++++++++++++++++++++++ kodi/user_doc.rst | 12 ++++++++++++ 4 files changed, 42 insertions(+), 1 deletion(-) diff --git a/kodi/README.md b/kodi/README.md index b8b9f7549..c38a548b2 100644 --- a/kodi/README.md +++ b/kodi/README.md @@ -11,3 +11,4 @@ * Bug Fix: on_off, Mute, etc. funktionieren nun sowohl mit True als auch False Werten * Sendet Kodi mehrere Antworten gleichzeitig, werden diese nacheinander abgearbeitet (führte früher zu einem Freeze des Plugins) * Optimierungen von Logging und Code +* zusätzliche Kommandos diff --git a/kodi/__init__.py b/kodi/__init__.py index d2519d326..6e8e5db98 100755 --- a/kodi/__init__.py +++ b/kodi/__init__.py @@ -88,7 +88,9 @@ class Kodi(SmartPlugin): 'on_off': dict(method='System.Shutdown', params=None), 'player': dict(method='Player.GetActivePlayers', params=None)} - _player_items = {'stop': dict(method='Player.Stop', params=None), + _player_items = {'audiostream': dict(method='Player.SetAudioStream', params=dict(stream='ITEM_VALUE')), + 'subtitle': dict(method='Player.SetAudioStream', params=dict(subtitle='ITEM_VALUE[0]', enable='ITEM_VALUE[1]')), + 'seek': dict(method='Player.Seek', params=dict(value='ITEM_VALUE')), 'speed': dict(method='Player.SetSpeed', params=dict(speed='ITEM_VALUE'))} _macro = {'resume': {"play": dict(method='Input.ExecuteAction', params=dict(action='play')), "resume": dict(method='Input.ExecuteAction', params=dict(action='select'))}, @@ -400,6 +402,8 @@ def received_data(self, connection, data): elem(event.get('result')[0].get('playerid'), caller='Kodi') else: self.activeplayers = [] + for elem in self.registered_items['state']: + elem('No Active Player', caller='Kodi') elif event.get('result') and event.get('id').startswith('Application.GetProperties'): muted = event['result'].get('muted') volume = event['result'].get('volume') diff --git a/kodi/plugin.yaml b/kodi/plugin.yaml index e3955ecac..0ad6dbed6 100755 --- a/kodi/plugin.yaml +++ b/kodi/plugin.yaml @@ -121,6 +121,12 @@ item_structs: visu_acl: rw enforce_updates: true + speed: + kodi_item@instance: speed + type: num + visu_acl: rw + enforce_updates: true + on_off: kodi_item@instance: on_off enforce_updates: true @@ -145,6 +151,24 @@ item_structs: visu_acl: rw enforce_updates: true + audiostream: + kodi_item@instance: audiostream + type: foo + visu_acl: rw + enforce_updates: true + + subtitle: + kodi_item@instance: subtitle + type: list + visu_acl: rw + enforce_updates: true + + seek: + kodi_item@instance: seek + type: num + visu_acl: rw + enforce_updates: true + logic_parameters: NONE # Definition of logic parameters defined by this plugin diff --git a/kodi/user_doc.rst b/kodi/user_doc.rst index 1602c0fcd..b5bf258c0 100755 --- a/kodi/user_doc.rst +++ b/kodi/user_doc.rst @@ -35,6 +35,12 @@ Item type ``bool``. Wird das Item auf "False" gesetzt, wird Kodi heruntergefahre **volume** Item type ``num``. Einstellen der Lautstärke in Prozent, ein Wert zwischen 0 und 100. +**speed** +Item type ``num``. Einstellen der Abspielgeschwindigkeit. Muss einen gültigen geraden Wert enthalten, also zB 2, 4, etc. (oder 1 für Normalgeschwindigkeit) + +**seek** +Item type ``num``. Zu einem bestimmten Punkt des aktuellen Mediums springen, in Prozent + **mute** Item type ``bool``. Stummschalten. @@ -58,6 +64,12 @@ Item type ``str``. Informaation zum aktuellen Status von Kodi (Playing, Stopped, **favourites** Item type ``dict``. Die in Kodi definierten Favoriten werden als Dictionary in dieses Item gespeichert. Ein Ändern der Einträge ist nicht möglich. +**audiostream** +Item type ``foo``. Ändern der Tonspur, entweder next, previous oder eine Zahl zur Direktanwahl + +**subtitle** +Item type ``list``. Einstellen des Untertitels als Liste. Der erste Wert muss die Untertitelspur deklarieren, der zweite ist True oder False + **input** Item type ``str``. Diese Funktion ermöglicht die Kontrolle über Kodi wie mit einer Fernbedienung. Für dieses Item sollte ``enforce_updates`` aktiviert werden. Eine Ãœbersicht über mögliche Aktion ist auf der `Kodi Wiki Seite `_ Ein Auszug der wichtigsten Aktionen: From 0799a36b497e37e85cc808d37be0c354edc3f9b0 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Tue, 21 May 2019 10:22:12 +0200 Subject: [PATCH 048/200] Update requirements.txt --- uzsu/requirements.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/uzsu/requirements.txt b/uzsu/requirements.txt index f61559001..a7579394b 100644 --- a/uzsu/requirements.txt +++ b/uzsu/requirements.txt @@ -1,2 +1,2 @@ numpy -scipy>=1.1.0<=1.2.1 +scipy>=1.1.0,<=1.2.1 From 7c7cac29ceb3d559511f0623b53d91336f0f4d2a Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Wed, 22 May 2019 11:21:57 +0200 Subject: [PATCH 049/200] Some fixes --- artnet/__init__.py | 109 ++++++++++++++++-------------- artnet/plugin.yaml | 69 ++++++++++++++++--- artnet/webif/templates/index.html | 12 ++-- 3 files changed, 124 insertions(+), 66 deletions(-) diff --git a/artnet/__init__.py b/artnet/__init__.py index 5434ee167..f396c3add 100755 --- a/artnet/__init__.py +++ b/artnet/__init__.py @@ -22,6 +22,7 @@ # along with SmartHomeNG. If not, see . ######################################################################### +import cherrypy import logging import socket import struct @@ -29,19 +30,20 @@ from lib.model.smartplugin import * from lib.module import Modules + class ArtNet_Model: - def __init__(self, host, port, universe, net, subnet, instance_name, update_cycle): + def __init__(self, host, port, net, subnet, universe, instance_name, update_cycle): self._host = host self._port = port - + self._universe = universe self._net = net self._subnet = subnet self._instance_name = instance_name self._update_cycle = update_cycle - - self._items = [] + + self._items = [] def get_ip(self): """ @@ -74,7 +76,7 @@ def get_net(self): :return: net of the device, as set in plugin.conf """ return self._net - + def get_subnet(self): """ Returns the Subnet of the ArtNet node @@ -82,7 +84,7 @@ def get_subnet(self): :return: Subnet of the device, as set in plugin.conf """ return self._subnet - + def get_items(self): """ Returns added items @@ -91,79 +93,95 @@ def get_items(self): """ return self._items + class ArtNet(SmartPlugin): ALLOW_MULTIINSTANCE = True - PLUGIN_VERSION = "1.5.1" + PLUGIN_VERSION = "1.6.0" ADDR_ATTR = 'artnet_address' packet_counter = 1 dmxdata = [0, 0] - + def __init__(self, sh, *args, **kwargs): """ Initalizes the plugin. The parameters describe for this method are pulled from the entry in plugin.conf. """ - # self.logger = logging.getLogger(__name__) self.logger.info('Init ArtNet Plugin') - - self._model = ArtNet_Model(self.get_parameter_value('ip') or '127.0.0.1', - port=int(self.get_parameter_value('port') or 6454), - universe=int(self.get_parameter_value('artnet_universe') or 0), - net=int(self.get_parameter_value('artnet_net') or 0), - subnet=int(self.get_parameter_value('artnet_subnet') or 0), + + self._model = ArtNet_Model(self.get_parameter_value('ip') or '127.0.0.1', + port=int(self.get_parameter_value( + 'port') or 6454), + net=int(self.get_parameter_value( + 'artnet_net') or 0), + subnet=int(self.get_parameter_value( + 'artnet_subnet') or 0), + universe=int(self.get_parameter_value( + 'artnet_universe') or 0), instance_name=self.get_instance_name(), - update_cycle=int(self.get_parameter_value('update_cycle') or 0), + update_cycle=int( + self.get_parameter_value('update_cycle') or 0), ) self.s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.init_webinterface() - self.logger.debug("Init ArtNet Plugin for %s done" % self._model._instance_name) + self.logger.debug("Init ArtNet Plugin for %s done" % + self._model._instance_name) def parse_item(self, item): - # items bound to this artnet-subnet + # items bound to this artnet-universe if self.has_iattr(item.conf, self.ADDR_ATTR): adr = int(self.get_iattr_value(item.conf, self.ADDR_ATTR)) if adr > 0 and adr < 513: while len(self.dmxdata) < (adr - 1): self.dmxdata.append(0) - + self.logger.debug("Bound address %s to item %s" % (adr, item)) self._model._items.append(item) return self.update_item else: - self.logger.error("Invalid address %s in item %s" % (adr, item)) + self.logger.error( + "Invalid address %s in item %s" % (adr, item)) def update_item(self, item, caller=None, source=None, dest=None): if caller != 'ArtNet': adr = int(self.get_iattr_value(item.conf, self.ADDR_ATTR)) if item() < 0 or item() > 255: - self.logger.warning("Impossible to update address: %s to value %s from item %s, value has to be >=0 and <=255" % (adr, item(), item)) + self.logger.warning( + "Impossible to update address: %s to value %s from item %s, value has to be >=0 and <=255" % (adr, item(), item)) else: - self.logger.debug("Updating address: %s to value %s" % (adr, item())) + self.logger.debug( + "Updating address: %s to value %s" % (adr, item())) self.send_single_value(adr, item()) - - + + def _update_loop(self): + if not self.alive: + return + if len(self.dmxdata) < 1: + return + self.__ArtDMX_broadcast() + def run(self): """ Run method for the plugin """ self.logger.debug("run method called") if self._model._update_cycle > 0: - self.scheduler_add('updateArtnet', self._update_loop, prio=5, cycle=self._model._update_cycle, offset=2) + self.scheduler_add('updateArtnet', self._update_loop, + prio=5, cycle=self._model._update_cycle, offset=2) self.alive = True for it in self._model._items: adr = int(self.get_iattr_value(it.conf, self.ADDR_ATTR)) val = it() if val < 0 or val > 255: - self.logger.warning("Impossible to update address: %s to value %s from item %s, value has to be >=0 and <=255" % (adr, val, it)) + self.logger.warning( + "Impossible to update address: %s to value %s from item %s, value has to be >=0 and <=255" % (adr, val, it)) else: - self.logger.debug("Updating address: %s to value %s" % (adr, vaL)) - set_address_value(adr, val) + self.logger.debug( + "Updating address: %s to value %s" % (adr, val)) + self.set_address_value(adr, val) self.__ArtDMX_broadcast() - - def stop(self): self.s.close() @@ -177,24 +195,17 @@ def __call__(self, var1=None, var2=None): if type(var1) == list and type(var2) == type(None): self.send_frame(var1) - def _update_loop(self): - if not self.alive: - return - if len(self.dmxdata) < 1: - return - self.__ArtDMX_broadcast() - def get_address_value(self, req_adr): adr = int(req_adr) while len(self.dmxdata) < adr: self.dmxdata.append(0) return self.dmxdata[adr - 1] - + def set_address_value(self, req_adr, val): while len(self.dmxdata) < req_adr: self.dmxdata.append(0) - self.dmxdata[adr - 1] = value - + self.dmxdata[req_adr - 1] = val + def send_single_value(self, adr, value): if adr < 1 or adr > 512: self.logger.error("DMX address %s invalid" % adr) @@ -206,7 +217,7 @@ def send_single_value(self, adr, value): def send_frame_starting_at(self, adr, values): if adr < 1 or adr > (512 - len(values) + 1): self.logger.error("DMX address %s with length %s invalid" % - (adr, len(values))) + (adr, len(values))) return while len(self.dmxdata) < (adr + len(values) - 1): @@ -225,8 +236,6 @@ def send_frame(self, dmxframe): self.__ArtDMX_broadcast() def __ArtDMX_broadcast(self): -# self.logger.info("Incomming DMX: %s"%self.dmxdata) - # New Array data = [] # Fix ID 7byte + 0x00 data.append("Art-Net\x00") @@ -256,9 +265,9 @@ def __ArtDMX_broadcast(self): result = result + token.encode('utf-8', 'ignore') except: # Handels all bytes result = result + token -# data = "".join(data) + # data = "".join(data) # debug -# self.logger.info("Outgoing Artnet:%s"%(':'.join(x.encode('hex') for x in data))) + # self.logger.info("Outgoing Artnet:%s"%(':'.join(x.encode('hex') for x in data))) # send over ethernet self.s.sendto(result, (self._model._host, self._model._port)) @@ -274,7 +283,8 @@ def init_webinterface(self): except: self.mod_http = None if self.mod_http == None: - self.logger.error("Plugin '{}': Not initializing the web interface".format(self.get_shortname())) + self.logger.error( + "Plugin '{}': Not initializing the web interface".format(self.get_shortname())) return False # set application configuration for cherrypy @@ -302,14 +312,13 @@ def init_webinterface(self): # Webinterface of the plugin # ------------------------------------------ -import cherrypy class WebInterface(SmartPluginWebIf): def __init__(self, webif_dir, plugin): """ Initialization of instance of class WebInterface - + :param webif_dir: directory where the webinterface of the plugin resides :param plugin: instance of the plugin :type webif_dir: str @@ -333,8 +342,8 @@ def index(self, reload=None): tabcount = 1 tmpl = self.tplenv.get_template('index.html') - return tmpl.render(plugin_shortname=self.plugin.get_shortname(), + return tmpl.render(plugin_shortname=self.plugin.get_shortname(), plugin_version=self.plugin.get_version(), - plugin_info=self.plugin.get_info(), + plugin_info=self.plugin.get_info(), tabcount=tabcount, p=self.plugin) diff --git a/artnet/plugin.yaml b/artnet/plugin.yaml index 6683c2158..47da3fdd6 100755 --- a/artnet/plugin.yaml +++ b/artnet/plugin.yaml @@ -37,14 +37,6 @@ parameters: description: de: 'Gibt an, wie oft (Sekunden) die aktuelle Lichtsituation neu verschickt werden soll (optional, 0 deaktiviert dies)' en: 'Defines Refresh-cycle for re-sending the current setting in seconds, 0 deactivates this' - artnet_universe: - type: int - default: 0 - description: - de: 'Gibt das Art-Net Universe an' - en: 'Specifies the Art-Net Universe to use' - valid_min: 0 - valid_max: 15 artnet_net: type: int default: 0 @@ -61,6 +53,15 @@ parameters: en: 'Specifies the Art-Net Sub-Net to use' valid_min: 0 valid_max: 15 + artnet_universe: + type: int + default: 0 + description: + de: 'Gibt das Art-Net Universe an' + en: 'Specifies the Art-Net Universe to use' + valid_min: 0 + valid_max: 15 + item_attributes: artnet_address: @@ -74,7 +75,55 @@ item_attributes: logic_parameters: NONE -plugin_functions: NONE - # Definition of function interface of the plugin +plugin_functions: + send_single_value: + type: void + description: + de: "Sendet einen einzelnen DMX Kanalwert" + en: "Sends a single DMX Channel-Value" + parameters: + adr: + type: num + valid_min: 1 + valid_max: 512 + description: + de: "Zu adressierender DMX-Kanal" + en: "DMX Channel to be addressed" + value: + type: num + valid_min: 0 + valid_max: 255 + description: + de: "Wert auf den der Kanal gesetzt werden soll" + en: "Value this Channel is to be set to" + send_frame_starting_at: + type: void + description: + de: "Sendet einen Satz an DMX Kanalwerten, beginnend bei einer Startadresse" + en: "Sends a set of DMX-channel-value starting from a certain address" + parameters: + adr: + type: num + valid_min: 1 + valid_max: 512 + description: + de: "Erster zu adressierender DMX-Kanal" + en: "First DMX-channel to be addressed" + values: + type: list(num) + description: + de: "Werte die ab dem Startkanal gesetzt werden sollen" + en: "Values to be transferred" + send_frame: + type: void + description: + de: "Sendet einen vollständingen DMX-Frame" + en: "Sends a full DMX-Frame" + parameters: + values: + type: list(num) + description: + de: "Wertemenge" + en: "Values to be transferred" item_structs: NONE diff --git a/artnet/webif/templates/index.html b/artnet/webif/templates/index.html index fb7bab96c..ca68db485 100644 --- a/artnet/webif/templates/index.html +++ b/artnet/webif/templates/index.html @@ -11,20 +11,20 @@     - {{ _('Universum') }} - {{ p._model.get_universe() }} + {{ _('Netz') }} + {{ p._model.get_net() }} {{ _('Host') }} {{ p._model.get_ip() }} - {{ _('Netz') }} - {{ p._model.get_net() }} + {{ _('Subnetz') }} + {{ p._model.get_subnet() }} {{ _('Port') }} {{ p._model.get_port() }} - {{ _('Subnetz') }} - {{ p._model.get_subnet() }} + {{ _('Universum') }} + {{ p._model.get_universe() }} From 0fd06fbf7d43556141fe29480c7f3ec0a110faa6 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Wed, 22 May 2019 12:00:19 +0200 Subject: [PATCH 050/200] Fix thread issues, add more struct items, improve macros --- kodi/__init__.py | 44 +++++++++++++++++++++++++++++--------------- kodi/plugin.yaml | 41 +++++++++++++++++++++++++++++++++++++++++ kodi/user_doc.rst | 3 +-- 3 files changed, 71 insertions(+), 17 deletions(-) diff --git a/kodi/__init__.py b/kodi/__init__.py index 6e8e5db98..3683210ac 100755 --- a/kodi/__init__.py +++ b/kodi/__init__.py @@ -86,18 +86,20 @@ class Kodi(SmartPlugin): 'mute' : dict(method='Application.SetMute', params=dict(mute='ITEM_VALUE')), 'input' : dict(method='Input.ExecuteAction', params=dict(action='ITEM_VALUE')), 'on_off': dict(method='System.Shutdown', params=None), + 'home': dict(method='Input.Home', params=None), 'player': dict(method='Player.GetActivePlayers', params=None)} _player_items = {'audiostream': dict(method='Player.SetAudioStream', params=dict(stream='ITEM_VALUE')), - 'subtitle': dict(method='Player.SetAudioStream', params=dict(subtitle='ITEM_VALUE[0]', enable='ITEM_VALUE[1]')), + 'subtitle': dict(method='Player.SetSubtitle', params=dict(subtitle='ITEM_VALUE[0]', enable='ITEM_VALUE[1]')), 'seek': dict(method='Player.Seek', params=dict(value='ITEM_VALUE')), 'speed': dict(method='Player.SetSpeed', params=dict(speed='ITEM_VALUE'))} - _macro = {'resume': {"play": dict(method='Input.ExecuteAction', params=dict(action='play')), "resume": dict(method='Input.ExecuteAction', params=dict(action='select'))}, - 'beginning': {"play": dict(method='Input.ExecuteAction', params=dict(action='play')), + _macro = {'resume': {"play": dict(method='Input.ExecuteAction', params=dict(action='play')), "wait": 1, "resume": dict(method='Input.ExecuteAction', params=dict(action='select'))}, + 'beginning': {"play": dict(method='Input.ExecuteAction', params=dict(action='play')), "wait": 1, "down": dict(method='Input.ExecuteAction', params=dict(action='down')), "select": dict(method='Input.ExecuteAction', params=dict(action='select'))}} - _initcommands = {"ping": {"method": "JSONRPC.Ping"}, "getvolume": {"method": 'Application.GetProperties', "params": dict(properties=['volume', 'muted'])}, + _initcommands = {"ping": {"method": "JSONRPC.Ping"}, + "getvolume": {"method": 'Application.GetProperties', "params": dict(properties=['volume', 'muted'])}, "favourites": {"method": 'Favourites.GetFavourites', "params": dict(properties=['window', 'path', 'thumbnail', 'windowparameter'])}, "player": {"method": "Player.GetActivePlayers"} } @@ -131,7 +133,7 @@ def __init__(self, sh, *args, **kwargs): self.response_id = None self.sendingcommand = None self.senderrors = {} - self.cmd_lock = threading.Condition() + self.cmd_lock = threading.Lock() self.reply_lock = threading.Condition() self.reply = None self.activeplayers = [] @@ -248,10 +250,15 @@ def update_item(self, item, caller=None, source=None, dest=None): elif kodi_item == 'macro' and item() in self._macro: macro = item() for command in self._macro.get(macro): - method = self._macro.get(macro).get(command).get('method') - params = self._macro.get(macro).get(command).get('params') - self.logger.debug("Command - Method: {}, Params: {}".format(method, params)) - self.send_kodi_rpc(method=method, params=params, wait=False) + if command == "wait": + waittime = int(self._macro.get(macro).get(command)) + self.logger.debug("Macro waiting for {} second(s)".format(waittime)) + time.sleep(waittime) + else: + method = self._macro.get(macro).get(command).get('method') + params = self._macro.get(macro).get(command).get('params') + self.logger.debug("Command - Method: {}, Params: {}".format(method, params)) + self.send_kodi_rpc(method=method, params=params, wait=False) elif kodi_item in Kodi._set_items: if kodi_item == 'player': for elem in self.registered_items['player']: @@ -381,6 +388,7 @@ def received_data(self, connection, data): self.reply_lock.acquire() templist = [] templist = self.sendcommands + query_playerinfo = [] for entry in templist: if entry.get('id') == event.get('id'): if self.senderrors.get(event.get('id')): @@ -391,17 +399,18 @@ def received_data(self, connection, data): if len(event.get('result')) > 1: self.logger.info('There is more than one active player. Sending request to each player!') self.activeplayers = [] + query_playerinfo = True for player in event.get('result'): self.activeplayers.append(player.get('playerid')) - self._get_player_info(player) + query_playerinfo.append(player.get('playerid')) elif len(event.get('result')) > 0: self.activeplayers = [event.get('result')[0].get('playerid')] - self.logger.debug("Getting player info for {}".format(event.get('result'))) - self._get_player_info(event.get('result')) + query_playerinfo = [event.get('result')[0].get('playerid')] for elem in self.registered_items['player']: elem(event.get('result')[0].get('playerid'), caller='Kodi') else: self.activeplayers = [] + query_playerinfo = [] for elem in self.registered_items['state']: elem('No Active Player', caller='Kodi') elif event.get('result') and event.get('id').startswith('Application.GetProperties'): @@ -439,9 +448,12 @@ def received_data(self, connection, data): try: self.sendcommands.remove(entry) except Exception as err: - self.logger.error(err) + self.logger.error("Could not remove sent command from queue. Error: {}". format(err)) self.reply_lock.notify() self.reply_lock.release() + for player in query_playerinfo: + self.logger.debug("Getting player info for {}".format(event.get('result'))) + self._get_player_info(player) self.logger.debug('Sendcommands after receiving: {0}'.format(self.sendcommands)) elif 'favourites' in event: item_dict = dict() @@ -508,15 +520,17 @@ def _send_player_command(self, method, params, kodi_item): a new thread in order to handle Play/Pause and Stop commands to the active Kodi players ''' + self.send_kodi_rpc(method='Player.GetActivePlayers', params=None, message_id='Player.GetActivePlayers') self.logger.debug("Active players: {}".format(self.activeplayers)) if len(self.activeplayers) == 0: self.logger.warning('Kodi: no active player found, skipping request!') else: + params = params or {} if len(self.activeplayers) > 1: self.logger.info('Kodi: there is more than one active player. Sending request to each player!') - params = params or {} for player in self.activeplayers: - params.update({'playerid':player}) + if len(self.activeplayers) > 1: + params.update({'playerid':player}) self.send_kodi_rpc(method=method, params=params, wait=False) diff --git a/kodi/plugin.yaml b/kodi/plugin.yaml index 0ad6dbed6..944312225 100755 --- a/kodi/plugin.yaml +++ b/kodi/plugin.yaml @@ -169,6 +169,47 @@ item_structs: visu_acl: rw enforce_updates: true + home: + kodi_item@instance: home + type: bool + visu_acl: rw + enforce_updates: true + + stop: + type: bool + eval: sh...input('stop') + enforce_updates: True + + play: + type: bool + eval: sh...input('play') + enforce_updates: True + + pause: + type: bool + eval: sh...input('pause') + enforce_updates: True + + previous: + type: bool + eval: sh...input('skipprevious') + enforce_updates: True + + next: + type: bool + eval: sh...input('skipnext') + enforce_updates: True + + select: + type: bool + eval: sh...input('select') + enforce_updates: True + + contextmenu: + type: str + eval: sh...input('contextmenu') + enforce_updates: True + logic_parameters: NONE # Definition of logic parameters defined by this plugin diff --git a/kodi/user_doc.rst b/kodi/user_doc.rst index b5bf258c0..51cc0e245 100755 --- a/kodi/user_doc.rst +++ b/kodi/user_doc.rst @@ -85,7 +85,6 @@ Ein Auszug der wichtigsten Aktionen: - ``down`` Cursor nach unten - ``select`` Aktuelles Navigationselement aktivieren - ``contextmenu`` Anzeigen des Kontextmenüs -- ``home`` Home Menu - ``back`` Einen Schritt zurück - ``volumeup`` Erhöhen der Lautstärke - ``volumedown`` Verringern der Lautstärke @@ -96,4 +95,4 @@ Struct Vorlagen Ab smarthomeNG 1.6 können Vorlagen aus dem Plugin einfach eingebunden werden. Dabei stehen folgende Vorlagen zur Verfügung: - query: Enthält Funktionen, die zur Abfrage von Kodi Infos dienen. -- control: Enthält Funktionen, mit denen Kodi gesteuert werden kann. +- control: Enthält Funktionen, mit denen Kodi gesteuert werden kann. Hier sind auch die wichtigsten input Befehle als eigene Items hinterlegt (play, pause, next, etc.) From 15b1a6cff4f37ed9928b0ddfd492547729338f5b Mon Sep 17 00:00:00 2001 From: onkelandy Date: Wed, 22 May 2019 12:15:26 +0200 Subject: [PATCH 051/200] distinguish between player sensitive commands and standard ones before input commands were only sent if a player was active. That is a good idea for specific commands like "stop", subtitles, etc. but not for menu navigation, etc. --- kodi/__init__.py | 69 ++++++++++++++++++++++++++---------------------- 1 file changed, 38 insertions(+), 31 deletions(-) diff --git a/kodi/__init__.py b/kodi/__init__.py index 3683210ac..495644ae7 100755 --- a/kodi/__init__.py +++ b/kodi/__init__.py @@ -42,43 +42,47 @@ class Kodi(SmartPlugin): PLUGIN_VERSION = '1.5.0' ALLOW_MULTIINSTANCE = True - # list of all possible input actions for Kodi + # list of all possible input actions for Kodi except player specific actions _possible_input_actions = [ 'left', 'right', 'up', 'down', 'pageup', 'pagedown', 'select', 'highlight', - 'parentdir', 'parentfolder', 'back', 'menu', 'previousmenu', 'info', - 'pause', 'stop', 'skipnext', 'skipprevious', 'fullscreen', 'aspectratio', - 'stepforward', 'stepback', 'bigstepforward', 'bigstepback', - 'chapterorbigstepforward', 'chapterorbigstepback', 'osd', 'showsubtitles', - 'nextsubtitle', 'cyclesubtitle', 'playerdebug', 'codecinfo', 'playerprocessinfo', - 'nextpicture', 'previouspicture', 'zoomout', 'zoomin', 'playlist', 'queue', - 'zoomnormal', 'zoomlevel1', 'zoomlevel2', 'zoomlevel3', 'zoomlevel4', - 'zoomlevel5', 'zoomlevel6', 'zoomlevel7', 'zoomlevel8', 'zoomlevel9', - 'nextcalibration', 'resetcalibration', 'analogmove', 'analogmovex', - 'analogmovey', 'rotate', 'rotateccw', 'close', 'subtitledelayminus', - 'subtitledelay', 'subtitledelayplus', 'audiodelayminus', 'audiodelay', - 'audiodelayplus', 'subtitleshiftup', 'subtitleshiftdown', 'subtitlealign', - 'audionextlanguage', 'verticalshiftup', 'verticalshiftdown', 'nextresolution', - 'audiotoggledigital', 'number0', 'number1', 'number2', 'number3', 'number4', - 'number5', 'number6', 'number7', 'number8', 'number9', 'smallstepback', - 'fastforward', 'rewind', 'play', 'playpause', 'switchplayer', 'delete', 'copy', + 'parentdir', 'parentfolder', 'back', 'menu', 'previousmenu', 'osd', 'playlist', 'queue', + 'nextcalibration', 'resetcalibration', 'close', 'fullscreen', + 'number0', 'number1', 'number2', 'number3', 'number4', + 'number5', 'number6', 'number7', 'number8', 'number9', 'play', 'playpause', + 'switchplayer', 'delete', 'copy', 'moveitemup', 'moveitemdown', 'contextmenu', 'move', 'screenshot', 'rename', 'togglewatched', 'scanitem', 'reloadkeymaps', 'volumeup', 'volumedown', 'mute', 'backspace', 'scrollup', 'scrolldown', - 'analogfastforward', 'analogrewind', 'moveitemup', 'moveitemdown', 'contextmenu', - 'shift', 'symbols', 'cursorleft', 'cursorright', 'showtime', 'analogseekforward', - 'analogseekback', 'showpreset', 'nextpreset', 'previouspreset', 'lockpreset', 'randompreset', + 'shift', 'symbols', 'cursorleft', 'cursorright', 'showpreset', 'nextpreset', 'previouspreset', 'lockpreset', 'randompreset', 'increasevisrating', 'decreasevisrating', 'showvideomenu', 'enter', 'increaserating', - 'decreaserating', 'setrating', 'togglefullscreen', 'nextscene', 'previousscene', 'nextletter', - 'prevletter', 'jumpsms2', 'jumpsms3', 'jumpsms4', 'jumpsms5', 'jumpsms6', 'jumpsms7', 'jumpsms8', - 'jumpsms9', 'filter', 'filterclear', 'filtersms2', 'filtersms3', 'filtersms4', 'filtersms5', + 'decreaserating', 'setrating', 'togglefullscreen', 'nextletter', + 'prevletter', 'filter', 'filterclear', 'filtersms2', 'filtersms3', 'filtersms4', 'filtersms5', 'filtersms6', 'filtersms7', 'filtersms8', 'filtersms9', 'firstpage', 'lastpage', 'guiprofile', 'red', 'green', 'yellow', 'blue', 'increasepar', 'decreasepar', 'volampup', 'volampdown', 'volumeamplification', 'createbookmark', 'createepisodebookmark', 'settingsreset', - 'settingslevelchange', 'stereomode', 'nextstereomode', 'previousstereomode', - 'togglestereomode', 'stereomodetomono', 'channelup', 'channeldown', 'previouschannelgroup', + 'settingslevelchange', 'channelup', 'channeldown', 'previouschannelgroup', 'nextchannelgroup', 'playpvr', 'playpvrtv', 'playpvrradio', 'record', 'togglecommskip', 'showtimerrule', 'leftclick', 'rightclick', 'middleclick', 'doubleclick', 'longclick', 'wheelup', 'wheeldown', 'mousedrag', 'mousemove', 'tap', 'longpress', 'pangesture', - 'zoomgesture', 'rotategesture', 'swipeleft', 'swiperight', 'swipeup', 'swipedown', 'error', 'noop', 'resume'] + 'zoomgesture', 'rotategesture', 'swipeleft', 'swiperight', 'swipeup', 'swipedown', 'error', 'noop'] + + _possible_player_actions = [ + 'pause', 'stop', 'skipnext', 'skipprevious', 'aspectratio', + 'stepforward', 'stepback', 'bigstepforward', 'bigstepback', + 'chapterorbigstepforward', 'chapterorbigstepback', 'showsubtitles', + 'nextsubtitle', 'cyclesubtitle', 'playerdebug', 'codecinfo', 'playerprocessinfo', + 'nextpicture', 'previouspicture', 'zoomout', 'zoomin', + 'zoomnormal', 'zoomlevel1', 'zoomlevel2', 'zoomlevel3', 'zoomlevel4', + 'zoomlevel5', 'zoomlevel6', 'zoomlevel7', 'zoomlevel8', 'zoomlevel9', + 'analogmove', 'analogmovex', 'analogmovey', 'rotate', 'rotateccw', 'subtitledelayminus', + 'subtitledelay', 'subtitledelayplus', 'audiodelayminus', 'audiodelay', + 'audiodelayplus', 'subtitleshiftup', 'subtitleshiftdown', 'subtitlealign', + 'audionextlanguage', 'verticalshiftup', 'verticalshiftdown', 'nextresolution', + 'audiotoggledigital', 'smallstepback', 'fastforward', 'rewind', + 'analogfastforward', 'analogrewind', 'showtime', 'analogseekforward', + 'analogseekback', 'nextscene', 'previousscene', 'jumpsms2', 'jumpsms3', + 'jumpsms4', 'jumpsms5', 'jumpsms6', 'jumpsms7', 'jumpsms8', + 'jumpsms9', 'stereomode', 'nextstereomode', 'previousstereomode', + 'togglestereomode', 'stereomodetomono'] _get_items = ['volume', 'mute', 'title', 'media', 'state', 'favourites'] @@ -263,11 +267,11 @@ def update_item(self, item, caller=None, source=None, dest=None): if kodi_item == 'player': for elem in self.registered_items['player']: elem(0, caller='Kodi') - if kodi_item == 'input' and item() not in self._possible_input_actions: - self.logger.error('The action \'%s\' for the kodi_item \'input\' is not allowed, skipping!', item_value) + if kodi_item == 'input' and item() not in self._possible_input_actions + self._possible_player_actions: + self.logger.error("The action {} for the kodi_item 'input' is not allowed, skipping".format(item_value)) else: - self.logger.debug('Plugin \'%s\': update_item was called with item \'%s\' from caller \'%s\', source \'%s\' and dest \'%s\'', - self.get_shortname(), item, caller, source, dest) + self.logger.debug("update_item was called with item {} from caller {}, source {} and dest {}".format( + item, caller, source, dest)) method = self._set_items[kodi_item]['method'] params = self._set_items[kodi_item]['params'] if params is not None: @@ -277,7 +281,10 @@ def update_item(self, item, caller=None, source=None, dest=None): for key, value in params.items(): if value == 'ITEM_VALUE': params[key] = item_value - self._send_player_command(method, params, kodi_item) + if item() in self._possible_input_actions: + self.send_kodi_rpc(method=method, params=params, wait=False) + elif item() in self._possible_player_actions: + self._send_player_command(method, params, kodi_item) elif kodi_item in Kodi._player_items: self.logger.debug('Plugin \'%s\': update_item was called with item \'%s\' from caller \'%s\', source \'%s\' and dest \'%s\'', self.get_shortname(), item, caller, source, dest) From 40765eeeb9306d50e88acd7cd171028a9dec7336 Mon Sep 17 00:00:00 2001 From: psilo909 Date: Thu, 23 May 2019 19:07:07 +0200 Subject: [PATCH 052/200] Pushbullet: added missing not (equiv. to old == False) --- pushbullet/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pushbullet/__init__.py b/pushbullet/__init__.py index ab0d3aae7..7176c95e6 100755 --- a/pushbullet/__init__.py +++ b/pushbullet/__init__.py @@ -82,7 +82,7 @@ def list(self, title, items, deviceid=None, apikey=None): return self._push(data={"type": "list", "title": title, "items": items}, deviceid=deviceid, apikey=apikey) def file(self, filepath, deviceid=None, apikey=None, body=None): - if os.path.exists(filepath): + if not os.path.exists(filepath): self.logger.error( "Plugin '{}': Trying to push non existing file: {}".format(self.get_fullname(), filepath)) From 5ef31d6353c543607213e44e2cb449dc8f028143 Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Thu, 23 May 2019 20:59:23 +0200 Subject: [PATCH 053/200] made it work again --- artnet/__init__.py | 26 +++++++++++++------------- artnet/plugin.yaml | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/artnet/__init__.py b/artnet/__init__.py index f396c3add..bdc7eacfc 100755 --- a/artnet/__init__.py +++ b/artnet/__init__.py @@ -33,8 +33,8 @@ class ArtNet_Model: - def __init__(self, host, port, net, subnet, universe, instance_name, update_cycle): - self._host = host + def __init__(self, ip, port, net, subnet, universe, instance_name, update_cycle): + self._ip = ip self._port = port self._universe = universe @@ -49,9 +49,9 @@ def get_ip(self): """ Returns the IP of the ArtNet node - :return: hostname of the device, as set in plugin.conf + :return: IP-address of the device, as set in plugin.conf """ - return self._host + return self._ip def get_port(self): """ @@ -61,14 +61,6 @@ def get_port(self): """ return self._port - def get_universe(self): - """ - Returns the Universe of the ArtNet node - - :return: Universe of the device, as set in plugin.conf - """ - return self._universe - def get_net(self): """ Returns the net of the ArtNet node @@ -85,6 +77,14 @@ def get_subnet(self): """ return self._subnet + def get_universe(self): + """ + Returns the Universe of the ArtNet node + + :return: Universe of the device, as set in plugin.conf + """ + return self._universe + def get_items(self): """ Returns added items @@ -211,7 +211,7 @@ def send_single_value(self, adr, value): self.logger.error("DMX address %s invalid" % adr) return - set_address_value(adr, value) + self.set_address_value(adr, value) self.__ArtDMX_broadcast() def send_frame_starting_at(self, adr, values): diff --git a/artnet/plugin.yaml b/artnet/plugin.yaml index 47da3fdd6..6b169736a 100755 --- a/artnet/plugin.yaml +++ b/artnet/plugin.yaml @@ -11,7 +11,7 @@ plugin: keywords: dmx # documentation: https://github.com/smarthomeNG/plugins/blob/develop/mqtt/README.md # url of documentation (wiki) page - version: 1.5.1 # Plugin version + version: 1.6.0 # Plugin version sh_minversion: 1.5.1 # minimum shNG version to use this plugin # sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) multi_instance: True From 04a6a09df9d731cebdb8dc9b56d83d670db0c4bc Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Fri, 24 May 2019 15:32:55 +0200 Subject: [PATCH 054/200] Update plugin.yaml --- artnet/plugin.yaml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/artnet/plugin.yaml b/artnet/plugin.yaml index 6b169736a..da60ab8a2 100755 --- a/artnet/plugin.yaml +++ b/artnet/plugin.yaml @@ -22,17 +22,20 @@ parameters: # Definition of parameters to be configured in etc/plugin.yaml ip: type: ip + default: 127.0.0.1 description: de: 'Gibt die Adresse des angesprochenen Art-Net Node an' en: 'Specifies the address of a Art-Net node' port: type: int valid_min: 0 + default: 6454 description: de: 'Gibt den Port des angesprochenen Art-Net Node an' en: 'Specifies the port of a Art-Net node' update_cycle: type: int + default: 0 valid_min: 0 description: de: 'Gibt an, wie oft (Sekunden) die aktuelle Lichtsituation neu verschickt werden soll (optional, 0 deaktiviert dies)' From 3019386b65940d585f23df6c6269a87dec4263c2 Mon Sep 17 00:00:00 2001 From: psilo909 Date: Sat, 25 May 2019 10:39:34 +0200 Subject: [PATCH 055/200] OWM: fix for None in forecast data --- openweathermap/__init__.py | 12 ++++++++---- openweathermap/plugin.yaml | 2 +- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/openweathermap/__init__.py b/openweathermap/__init__.py index 8da77969b..6dbfd2e3b 100644 --- a/openweathermap/__init__.py +++ b/openweathermap/__init__.py @@ -34,7 +34,7 @@ class OpenWeatherMap(SmartPlugin): - PLUGIN_VERSION = "1.5.0.3" + PLUGIN_VERSION = "1.5.0.4" _base_url = 'https://api.openweathermap.org/%s' _base_img_url = 'https://tile.openweathermap.org/map/%s/%s/%s/%s.png?appid=%s' @@ -163,6 +163,10 @@ def get_daily_forecast(self, s): """ s = s.replace("forecast/daily/", "") forecast = self._jsonData['forecast'] + if forecast is None: + self.logger.error( + "get_daily_forecast: forecast is None") + return None datetime_now = datetime.now() date_requested = datetime(datetime_now.year, datetime_now.month, datetime_now.day) sp = s.split('/') @@ -172,7 +176,7 @@ def get_daily_forecast(self, s): sp.pop(0) else: self.logger.error( - "_update: invalid owm_matchstring '{}'; integer expected after forecast/daily/ matchstring".format( + "get_daily_forecast: invalid owm_matchstring '{}'; integer expected after forecast/daily/ matchstring".format( s)) return None @@ -188,11 +192,11 @@ def get_daily_forecast(self, s): wrk.append(val) elif val is None: self.logger.error( - "_update: found None value while calculating daily forecast for matchstring '{}'.".format(s)) + "get_daily_forecast: found None value while calculating daily forecast for matchstring '{}'.".format(s)) return 0 else: self.logger.error( - "_update: found unknown value while calculating daily forecast for matchstring '{}'; daily forecast only supported for int and float.".format( + "get_daily_forecast: found unknown value while calculating daily forecast for matchstring '{}'; daily forecast only supported for int and float.".format( s)) return 0 diff --git a/openweathermap/plugin.yaml b/openweathermap/plugin.yaml index b0e1f61d7..1e91935dd 100644 --- a/openweathermap/plugin.yaml +++ b/openweathermap/plugin.yaml @@ -12,7 +12,7 @@ plugin: documentation: 'http://smarthomeng.de/user/plugins/openweathermap/user_doc.html' support: 'https://knx-user-forum.de/forum/supportforen/smarthome-py/1246998-support-thread-zum-openweathermap-plugin' keywords: weather - version: 1.5.0.3 # Plugin version + version: 1.5.0.4 # Plugin version sh_minversion: 1.5b # minimum shNG version to use this plugin # sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) multi_instance: True # plugin supports multi instance From 367759f62cd24e2d194051188e7aa45712065d10 Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Sun, 26 May 2019 12:20:14 +0200 Subject: [PATCH 056/200] Reworked again Changed Loggings Added minimum channels to be sent Reworked default handling to match shng standard --- artnet/__init__.py | 71 +++++++++++++++++-------------- artnet/plugin.yaml | 14 +++++- artnet/webif/templates/index.html | 12 +++--- 3 files changed, 58 insertions(+), 39 deletions(-) diff --git a/artnet/__init__.py b/artnet/__init__.py index bdc7eacfc..583f668cb 100755 --- a/artnet/__init__.py +++ b/artnet/__init__.py @@ -30,10 +30,9 @@ from lib.model.smartplugin import * from lib.module import Modules - class ArtNet_Model: - def __init__(self, ip, port, net, subnet, universe, instance_name, update_cycle): + def __init__(self, ip, port: int, net: int, subnet: int, universe: int, instance_name, update_cycle: int, min_channels: int): self._ip = ip self._port = port @@ -42,6 +41,7 @@ def __init__(self, ip, port, net, subnet, universe, instance_name, update_cycle) self._subnet = subnet self._instance_name = instance_name self._update_cycle = update_cycle + self._min_channels = min_channels self._items = [] @@ -89,9 +89,21 @@ def get_items(self): """ Returns added items - :return: array of items held by the device + :return: array of items held by the device, sorted by their DMX-address + """ + instance_key = "artnet_address" + if self._instance_name: + instance_key = "artnet_address@"+self._instance_name + + return sorted(self._items, key=lambda i: i.conf[instance_key]) + + def get_min_channels(self): """ - return self._items + Returns minimum channels to be sent + + :return: number of minimum channels to be sent + """ + return self._min_channels class ArtNet(SmartPlugin): @@ -109,20 +121,19 @@ def __init__(self, sh, *args, **kwargs): """ self.logger.info('Init ArtNet Plugin') - self._model = ArtNet_Model(self.get_parameter_value('ip') or '127.0.0.1', - port=int(self.get_parameter_value( - 'port') or 6454), - net=int(self.get_parameter_value( - 'artnet_net') or 0), - subnet=int(self.get_parameter_value( - 'artnet_subnet') or 0), - universe=int(self.get_parameter_value( - 'artnet_universe') or 0), + self._model = ArtNet_Model(ip=self.get_parameter_value('ip'), + port=self.get_parameter_value('port'), + net=self.get_parameter_value('artnet_net'), + subnet=self.get_parameter_value('artnet_subnet'), + universe=self.get_parameter_value('artnet_universe'), instance_name=self.get_instance_name(), - update_cycle=int( - self.get_parameter_value('update_cycle') or 0), + update_cycle=self.get_parameter_value('update_cycle'), + min_channels=self.get_parameter_value('min_channels') ) + while len(self.dmxdata) < self._model._min_channels: + self.dmxdata.append(0) + self.s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.init_webinterface() @@ -141,8 +152,7 @@ def parse_item(self, item): self._model._items.append(item) return self.update_item else: - self.logger.error( - "Invalid address %s in item %s" % (adr, item)) + self.logger.error("Invalid address %s in item %s" % (adr, item)) def update_item(self, item, caller=None, source=None, dest=None): if caller != 'ArtNet': @@ -151,8 +161,7 @@ def update_item(self, item, caller=None, source=None, dest=None): self.logger.warning( "Impossible to update address: %s to value %s from item %s, value has to be >=0 and <=255" % (adr, item(), item)) else: - self.logger.debug( - "Updating address: %s to value %s" % (adr, item())) + self.logger.debug("Updating address: %s to value %s" % (adr, item())) self.send_single_value(adr, item()) def _update_loop(self): @@ -178,8 +187,7 @@ def run(self): self.logger.warning( "Impossible to update address: %s to value %s from item %s, value has to be >=0 and <=255" % (adr, val, it)) else: - self.logger.debug( - "Updating address: %s to value %s" % (adr, val)) + self.logger.debug("Updating address: %s to value %s" % (adr, val)) self.set_address_value(adr, val) self.__ArtDMX_broadcast() @@ -216,8 +224,7 @@ def send_single_value(self, adr, value): def send_frame_starting_at(self, adr, values): if adr < 1 or adr > (512 - len(values) + 1): - self.logger.error("DMX address %s with length %s invalid" % - (adr, len(values))) + self.logger.error("DMX address %s with length %s invalid" % (adr, len(values))) return while len(self.dmxdata) < (adr + len(values) - 1): @@ -265,11 +272,14 @@ def __ArtDMX_broadcast(self): result = result + token.encode('utf-8', 'ignore') except: # Handels all bytes result = result + token - # data = "".join(data) - # debug - # self.logger.info("Outgoing Artnet:%s"%(':'.join(x.encode('hex') for x in data))) # send over ethernet - self.s.sendto(result, (self._model._host, self._model._port)) + self.logger.debug("Sending %s channels to %s:%s as Net/SubNet/Unv: %s/%s/%s" % (len(self.dmxdata), + self._model._ip, + self._model._port, + self._model._net, + self._model._subnet, + self._model._universe)) + self.s.sendto(result, (self._model._ip, self._model._port)) def init_webinterface(self): """" @@ -278,13 +288,12 @@ def init_webinterface(self): This method is only needed if the plugin is implementing a web interface """ try: - self.mod_http = Modules.get_instance().get_module( - 'http') # try/except to handle running in a core version that does not support modules + # try/except to handle running in a core version that does not support modules + self.mod_http = Modules.get_instance().get_module('http') except: self.mod_http = None if self.mod_http == None: - self.logger.error( - "Plugin '{}': Not initializing the web interface".format(self.get_shortname())) + self.logger.error("Plugin '{}': Not initializing the web interface".format(self.get_shortname())) return False # set application configuration for cherrypy diff --git a/artnet/plugin.yaml b/artnet/plugin.yaml index 6b169736a..f03f81074 100755 --- a/artnet/plugin.yaml +++ b/artnet/plugin.yaml @@ -22,17 +22,19 @@ parameters: # Definition of parameters to be configured in etc/plugin.yaml ip: type: ip + default: 127.0.0.1 description: de: 'Gibt die Adresse des angesprochenen Art-Net Node an' en: 'Specifies the address of a Art-Net node' port: type: int - valid_min: 0 + default: 6454 description: de: 'Gibt den Port des angesprochenen Art-Net Node an' en: 'Specifies the port of a Art-Net node' update_cycle: type: int + default: 0 valid_min: 0 description: de: 'Gibt an, wie oft (Sekunden) die aktuelle Lichtsituation neu verschickt werden soll (optional, 0 deaktiviert dies)' @@ -61,6 +63,14 @@ parameters: en: 'Specifies the Art-Net Universe to use' valid_min: 0 valid_max: 15 + min_channels: + type: int + default: 1 + description: + de: 'Gibt an, wie viele Kanäle mindestens gesendet werden müssen, hilfreich für Geräte, die einen vollen Datensatz über alle ihre Kanäle erhalten müssen' + en: 'Specifies how many DMX channels are to be sent at minimum' + valid_min: 1 + valid_max: 512 item_attributes: @@ -68,7 +78,7 @@ item_attributes: type: int mandatory: True valid_min: 1 - valid_max: 255 + valid_max: 512 description: de: 'Definition der DMX Adresse' en: 'Defition of DMX address' diff --git a/artnet/webif/templates/index.html b/artnet/webif/templates/index.html index ca68db485..5a434a427 100644 --- a/artnet/webif/templates/index.html +++ b/artnet/webif/templates/index.html @@ -9,20 +9,20 @@ - - + + - - + + - - + + From 30f368c97846b454a46cb8e695d998793631e2b6 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 26 May 2019 23:37:03 +0200 Subject: [PATCH 057/200] fix warning log and add get_relative_itemname --- stateengine/StateEngineEval.py | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/stateengine/StateEngineEval.py b/stateengine/StateEngineEval.py index 196ea9d06..523479fde 100755 --- a/stateengine/StateEngineEval.py +++ b/stateengine/StateEngineEval.py @@ -82,7 +82,7 @@ def get_relative_itemid(self, subitem_id): item = self._abitem.return_item(subitem_id) return item.property.path except Exception as ex: - self.__logger.warning("Problem evaluating name of {}: {}".format(subitem_id, ex)) + self._log_warning("Problem evaluating name of {0}: {1}", subitem_id, ex) #self._log_exception(ex) # Return the value of an item related to the StateEngine Object Item @@ -93,11 +93,20 @@ def get_relative_itemvalue(self, subitem_id): self._log_debug("Executing method 'get_relative_itemvalue({0})'", subitem_id) try: item = self._abitem.return_item(subitem_id) - return item() + return item.property.value except Exception as ex: - self.__logger.warning("Problem evaluating value of {}: {}".format(subitem_id, ex)) + self._log_warning("Problem evaluating value of {0}: {1}", subitem_id, ex) #self._log_exception(ex) + def get_relative_itemname(self, subitem_id): + self._log_debug("Executing method 'get_relative_itemname({0})'", subitem_id) + try: + item = self._abitem.return_item(subitem_id) + self._log_debug("Item Name from {0}: {1}", subitem_id, item.property.name) + return item.property.name + except Exception as ex: + self._log_warning("Problem evaluating value of {0}: {1}", subitem_id, ex) + # Insert end time of suspension into text # suspend_item_id: Item whose age is used to determine how much of the suspend time is already over # suspend_text: Text to insert end time of suspension into. Use strftime/strptime format codes for the end time From 84b3966c364d6f4f9e3f52b6969d81c9a0281725 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Mon, 27 May 2019 00:57:39 +0200 Subject: [PATCH 058/200] Write state_name right after entering state and not at end This makes it possible to grab the current state_name and use that for state actions. --- stateengine/StateEngineItem.py | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/stateengine/StateEngineItem.py b/stateengine/StateEngineItem.py index f7bdd7554..133221f05 100755 --- a/stateengine/StateEngineItem.py +++ b/stateengine/StateEngineItem.py @@ -191,11 +191,10 @@ def update_state(self, item, caller=None, source=None, dest=None): # get data for new state if last_state is not None and new_state.id == last_state.id: self.__logger.info("Staying at {0} ('{1}')", new_state.id, new_state.name) - new_state.run_stay(self.__repeat_actions.get()) - # New state is last state if self.__laststate_internal_name != new_state.name: self.__laststate_set(new_state) + new_state.run_stay(self.__repeat_actions.get()) else: # New state is different from last state @@ -204,9 +203,8 @@ def update_state(self, item, caller=None, source=None, dest=None): last_state.run_leave(self.__repeat_actions.get()) self.__logger.info("Entering {0} ('{1}')", new_state.id, new_state.name) - new_state.run_enter(self.__repeat_actions.get()) - self.__laststate_set(new_state) + new_state.run_enter(self.__repeat_actions.get()) self.__update_in_progress = False From d0b0ec3c9a66211f4ea060ecba8dc4b69d2ea9af Mon Sep 17 00:00:00 2001 From: onkelandy Date: Mon, 27 May 2019 20:49:10 +0200 Subject: [PATCH 059/200] Update version and docu --- stateengine/__init__.py | 2 +- stateengine/plugin.yaml | 11 ++- stateengine/user_doc/user_doc8.rst | 141 +++++++++++++++++++++++++++++ stateengine/user_doc/user_doc9.rst | 67 +++++++++----- 4 files changed, 192 insertions(+), 29 deletions(-) diff --git a/stateengine/__init__.py b/stateengine/__init__.py index e19ab426a..ef6c8a6b6 100755 --- a/stateengine/__init__.py +++ b/stateengine/__init__.py @@ -33,7 +33,7 @@ class StateEngine(SmartPlugin): - PLUGIN_VERSION = '1.5.0' + PLUGIN_VERSION = '1.5.1' # Constructor # noinspection PyUnusedLocal,PyMissingConstructor diff --git a/stateengine/plugin.yaml b/stateengine/plugin.yaml index d3aa2a5ac..ff122071a 100755 --- a/stateengine/plugin.yaml +++ b/stateengine/plugin.yaml @@ -26,7 +26,7 @@ plugin: documentation: https://www.smarthomeng.de/user/plugins/stateengine/user_doc.html support: https://knx-user-forum.de/forum/supportforen/smarthome-py/1303071-stateengine-plugin-support - version: 1.5.0 + version: 1.5.1 sh_minversion: 1.6 multi_instance: False classname: StateEngine @@ -367,7 +367,8 @@ item_structs: rules: se_item_lock: ..lock - eval_trigger: ..lock + eval_trigger: + - ..lock lock: name: gesperrt @@ -427,7 +428,8 @@ item_structs: se_item_suspend_end: ..suspend_end se_item_suspend_active: ..settings.suspend_active se_suspend_time: eval:stateengine_eval.get_relative_itemvalue('..settings.suspendduration') * 60 - eval_trigger: ..manuell + eval_trigger: + - ..manuell suspend: name: ausgesetzt @@ -483,7 +485,8 @@ item_structs: se_item_retrigger: ..rules se_item_release: ..release se_item_suspend_end: ..suspend_end - eval_trigger: ..release + eval_trigger: + - ..release release: name: release diff --git a/stateengine/user_doc/user_doc8.rst b/stateengine/user_doc/user_doc8.rst index ec39d6f2d..26b74b1c9 100755 --- a/stateengine/user_doc/user_doc8.rst +++ b/stateengine/user_doc/user_doc8.rst @@ -608,3 +608,144 @@ abgeändert. Es wird explizit auf Template-Imports via struct verzichtet. Tag: # Zustand "Tag": Vorgabeeinstellungen übernehmen se_use: stateengine_default_raffstore.rules.Tag + +.. rubric:: Settings für Itemwerte + :name: settingsfueritemwerte + +Das Setup ist besonders flexibel, wenn zu setzende Werte nicht fix in den Zustandsvorgaben +definiert werden, sondern in eigenen Items, die dann jederzeit zur Laufzeit abänderbar +sind. Das folgende Beispiel zeigt eine Leuchte, die abhängig vom aktuell definierten +Lichtmodus (z.B. über die Visu) verschiedene Stati einnimmt und immer wieder dieselben +Änderungen vornimmt. Sollte eine Änderung nicht möglich sein, weil das entsprechende +Item nicht existiert, wird das Plugin die Aktion einfach ignorieren. + +Die Struct-Vorlagen sehen dabei folgendermaßen aus. Besonders ist der Eval Ausdruck des "to" Eintrags der Aktionsvorlage. +Dieser führt dazu, dass der zu setzende Wert aus dem Item ``automatik.settings..sollwert`` +im aktuellen Item gelesen wird. Somit kann diese Vorlage für sämtliche Zustände 1:1 eingesetzt werden, +wobei natürlich zu beachten ist, dass sowohl "Settings" als auch Zustand richtig benannt sind. +Das Item state_name wird bis zur Pluginversion 1.5.0 erst nach Ausführen der Aktionen aktualisiert, +weshalb diese Vorgehensweise erst ab 1.5.1 empfohlen wird. + +.. code-block:: yaml + + #etc/struct.yaml + licht_rules_actions: + on_enter_or_stay: + se_action_sollwert: + - 'function: set' + - "to: eval:sh.return_item(stateengine_eval.get_relative_itemid('..settings.{}.sollwert'.format(stateengine_eval.get_relative_itemvalue('..state_name').lower())))()" + se_action_prio: + - 'function: set' + - "to: eval:sh.return_item(stateengine_eval.get_relative_itemid('..settings.{}.prio'.format(stateengine_eval.get_relative_itemvalue('..state_name').lower())))()" + +Außerdem werden pro Aktortyp entsprechende Setting Items angelegt. Je nach Bedarf +kann dann auf diese zurückgegriffen werden. + +.. code-block:: yaml + #etc/struct.yaml + licht_settings_dimmbar: + prio: + type: num + cache: True + visu_acl: rw + + sollwert: + type: num + visu_acl: rw + cache: True + + licht_settings_schaltbar: + sperren: + type: bool + visu_acl: rw + cache: True + + licht_settings_active: + active: + type: bool + visu_acl: rw + cache: True + + +Folgende Vorlage dient der Angabe, unter welchen Bedingungen der entsprechende Zustand +eingenommen werden soll. In diesem Fall werden die zwei Zustände Lichtkurve und Heimkino definiert. +Ähnliche Beispiele sind bereits weiter oben zu finden, weshalb sie hier sehr einfach gehalten werden. + +.. code-block:: yaml + + #etc/struct.yaml + licht_condition_lichtkurve: + se_item_lichtkurve_active: ..settings.lichtkurve.active + lichtkurve: + name: Lichtkurve # muss mit den entsprechenden Settings übereinstimmen + enter: + se_value_lichtmodus: 12 + se_value_lichtkurve_active: 'True' + + licht_condition_heimkino: + se_item_heimkino_active: ..settings.heimkino.active + heimkino: + name: Heimkino # muss mit den entsprechenden Settings übereinstimmen + enter: + type: foo + se_value_lichtmodus: + - value:3 + - '3.0' + se_value_heimkino_active: 'True' + +Letzten Endes wird alles in einem item.yaml auf folgende Art und Weise implementiert: + +.. code-block:: yaml + + #items/item.yaml + licht: + automatik: + struct: + - stateengine.general + - stateengine.state_release + - stateengine.state_lock + - stateengine.state_suspend + + manuell: + eval_trigger: + - ...sa + - ...dimmen.taster + se_manual_exclude: + - Database:* + - KNX:1.1.2 + + settings_edited: + type: bool + name: settings editiert + eval_trigger: ..settings.* + eval: not sh...settings_edited() + + settings: + heimkino: # muss mit dem entsprechenden Statusnamen übereinstimmen + struct: + - licht_settings_bwm + - licht_settings_dimmbar_dual + - licht_settings_active + + lichtkurve: # muss mit dem entsprechenden Statusnamen übereinstimmen + struct: + - licht_settings_bwm + - licht_settings_dimmbar_dual + - licht_settings_active + + rules: + struct: + - licht_rules_heimkino + - licht_rules_lichtkurve + + remark: Aktuell muss das eval_trigger noch manuell mit der kompletten Liste überschrieben werden, auch wenn die Structs bereits Einträge enthalten. + eval_trigger: + - ..settings_edited + - ..lock + - ..manuell + - licht.modus* + + heimkino: + struct: licht_rules_actions + lichtkurve: + struct: licht_rules_actions diff --git a/stateengine/user_doc/user_doc9.rst b/stateengine/user_doc/user_doc9.rst index b9e63702f..6c6c7d12d 100755 --- a/stateengine/user_doc/user_doc9.rst +++ b/stateengine/user_doc/user_doc9.rst @@ -15,32 +15,45 @@ können wie folgt eingebunden werden: .. code-block:: yaml - #items/item.yaml - beispiel: - raffstore1: - automatik: - struct: - - stateengine.general - - stateengine.state_lock - - stateengine.state_suspend - - stateengine_default_raffstore #beispielsweise eine in etc/struct.yaml angelegte Vorlage - - manuell: + #items/item.yaml + beispiel: + trigger: + type: bool + enforce_updates: True + + raffstore1: + automatik: + struct: + - stateengine.general + - stateengine.state_lock + - stateengine.state_suspend + - stateengine_default_raffstore #beispielsweise eine in etc/struct.yaml angelegte Vorlage + + manuell: # Weitere Attribute werden bereits über das Template stateengine.state_suspend geladen - eval_trigger: + eval_trigger: - beispiel.raffstore1.aufab - beispiel.raffstore1.step - beispiel.raffstore1.hoehe - beispiel.raffstore1.lamelle - se_manual_exclude: + se_manual_exclude: - KNX:y.y.y - Init:* - rules: - additional_state1: + rules: + eval_trigger: + - ..lock + - ..supsend + - .. release + - beispiel.trigger + + additional_state1: type: foo -Die Vorlagen beinhalten dabei folgende Strukturen. +Zumindest in der SmarthomeNG Version 1.6.0 werden die eval_trigger Angaben aus den einzelnen Struct-Vorgaben nicht +kumuliert. Es ist daher wichtig, die eval_trigger Liste nochmals manuell im endgültigen Item anzulegen. + +Die Vorlagen beinhalten folgende Strukturen: Die ``general`` Vorlage enthält die Items, die generell für einen Zustandsautomaten angelegt werden sollten. Das "rules" Item ist das Regelwerk-Item mit aktiviertem @@ -89,7 +102,8 @@ Zustand eingenommen. Der Zustand sollte immer als erster Zustand eingebunden wer rules: se_item_lock: ..lock - eval_trigger: ..lock + eval_trigger: + - ..lock lock: name: gesperrt @@ -103,12 +117,14 @@ Zustand eingenommen. Der Zustand sollte immer als erster Zustand eingebunden wer se_value_lock: True Die ``state_suspend`` Vorlage dient dem Abfragen von manuellen Tätigkeiten, wie -z.B. das Schalten eines Lichts oder Fahren einer Jalousie mittels Taster oder Visu. +z.B. Schalten eines Lichts oder Fahren einer Jalousie mittels Taster oder Visu. In diesem Fall soll die automatiche Evaluierung für eine gewisse Zeit pausieren. Beim ``manuell`` Item muss unter Umständen der Eintrag ``se_manual_exclude`` in der eigenen Baumstruktur überschrieben und durch einen Eintrag ``- KNX:GA des Aktors`` -ergänzt werden. +ergänzt werden. Außerdem muss ein eval_trigger manuell deklariert werden. Hier sollten alle +Items gelistet sein, die für ein vroübergehendes Aussetzen der Automatisierung sorgen sollen +(z.B. Schalt- und Dimm-Items) Das Item ``settings.suspendduration`` ermöglicht es, die Dauer der Pausierung bequem über eine Visu oder das Backend zu ändern. Setzt man das Item ``settings.suspend_active`` @@ -153,7 +169,8 @@ beim nächsten Durchlauf eventuell durch andere Zustände überschrieben. se_item_suspend_end: ..suspend_end se_item_suspend_active: ..settings.suspend_active se_suspend_time: eval:stateengine_eval.get_relative_itemvalue('..settings.suspendduration') * 60 - eval_trigger: ..manuell + eval_trigger: + - ..manuell suspend: name: ausgesetzt @@ -213,7 +230,8 @@ der Zustände anzuleiern. se_item_retrigger: ..rules se_item_release: ..release se_item_suspend_end: ..suspend_end - eval_trigger: ..release + eval_trigger: + - ..release release: name: release @@ -249,9 +267,10 @@ der Zustände anzuleiern. .. rubric:: Pluginspezifische Templates :name: pluginspezifisch -Es ist möglich, Vorgabezustände in der Item-Konfiguration zu definieren -und diese später für konkrete Regelwerke anzuwenden. Dabei können im -konkreten Zustand auch Einstellungen des Vorgabezustands +Es ist neben der oben beschriebene Variante möglich, Vorgabezustände in +der Item-Konfiguration zu definieren +und diese später für konkrete Regelwerke durch Plugin-interne Attribute zu nutzen. +Dabei können im konkreten Zustand auch Einstellungen des Vorgabezustands überschrieben werden. Vorgabezustände werden als Item an beliebiger Stelle innerhalb der From 0be99c01c017a68aadc505a13bc12ff89d90bf3e Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Wed, 29 May 2019 10:07:37 +0200 Subject: [PATCH 060/200] Initial provision of UniFi PlugIn --- unifi/.gitignore | 108 ++++++ unifi/README.md | 209 ++++++++++++ unifi/__init__.py | 564 +++++++++++++++++++++++++++++++ unifi/plugin.yaml | 121 +++++++ unifi/ubiquiti/LICENSE | 21 ++ unifi/ubiquiti/__init__.py | 0 unifi/ubiquiti/unifi.py | 296 ++++++++++++++++ unifi/webif/templates/index.html | 165 +++++++++ 8 files changed, 1484 insertions(+) create mode 100644 unifi/.gitignore create mode 100644 unifi/README.md create mode 100644 unifi/__init__.py create mode 100644 unifi/plugin.yaml create mode 100644 unifi/ubiquiti/LICENSE create mode 100644 unifi/ubiquiti/__init__.py create mode 100644 unifi/ubiquiti/unifi.py create mode 100644 unifi/webif/templates/index.html diff --git a/unifi/.gitignore b/unifi/.gitignore new file mode 100644 index 000000000..6adb9d2be --- /dev/null +++ b/unifi/.gitignore @@ -0,0 +1,108 @@ +# Byte-compiled / optimized / DLL files +__pycache__/ +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo +*.pot + +# Django stuff: +*.log +local_settings.py +db.sqlite3 + +# Flask stuff: +instance/ +.webassets-cache + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# Jupyter Notebook +.ipynb_checkpoints + +# pyenv +.python-version + +# celery beat schedule file +celerybeat-schedule + +# SageMath parsed files +*.sage.py + +# Environments +.env +.venv +env/ +venv/ +ENV/ +env.bak/ +venv.bak/ + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.idea/ +config.ini +unifibot.session +wifi.py diff --git a/unifi/README.md b/unifi/README.md new file mode 100644 index 000000000..d5bb9d564 --- /dev/null +++ b/unifi/README.md @@ -0,0 +1,209 @@ +# Unifi + +#### Version 1.6.0 + +Plugin to read some data from UniFi Controllers and to control it + +## Change history + +### Changes Since version 1.6.0 + +- Initial upload + +## Todo + +* Auto generate items.yaml by reading details from UniFi Controller and populate this in the WebIf. +* Add additional data as Itemtypes from the UniFi API, based on real-world demands. + +## Requirements + +This plugin requires a permanently available UniFi Controller or a UniFi cloud-key. + +### Needed software + +There is no additional requirement for software that is not bundled. Plugin was tested with Python 3.5 and the api was tested with Python 3.5 and 3.7 + +### Supported Hardware + +As this plugin only communicates with the UniFi Controller basically all UniFi managed devices can be supported. + +Tested with: +* UniFi Controller 5.10.23 in Docker Container on Synology +* UniFi UAP AC Lite +* UniFi UAP AC Mesh +* UniFi Switch US-8-60W + +## Configuration + +### plugin.yaml + +Please refer to the documentation generated from plugin.yaml metadata. + + +### items.yaml + +Please refer to the documentation generated from plugin.yaml metadata. + +Example: +``` +uni_items: + type: foo + + switch: + unifi_switch_mac: af:fe:af:fe:00:00 + + ip: + type: str + unifi_type: device_ip + + sw_name: + type: str + unifi_type: device_name + + access_points: + unifi_switch_port_profile_on: All + unifi_switch_port_profile_off: Disabled + + ap_ac_lite1: + unifi_ap_mac: af:fe:af:fe:00:01 + unifi_switch_port_no: 5 + + ip: + type: str + unifi_type: device_ip + + ap_name: + type: str + unifi_type: device_name + + ap_enabled: + type: bool + unifi_type: ap_enabled + + port_enabled: + type: bool + unifi_type: switch_port_enabled + + jensIphoneHier: + type: bool + mac: a4:e9:00:00:af:fe + unifi_type: client_present_at_ap + + ap_ac_lite2: + unifi_ap_mac: af:fe:af:fe:00:02 + unifi_switch_port_no: 6 + + ip: + type: str + unifi_type: device_ip + + ap_name: + type: str + unifi_type: device_name + + ap_enabled: + type: bool + unifi_type: ap_enabled + + port_enabled: + type: bool + unifi_type: switch_port_enabled + + jensIphoneHier: + type: bool + mac: a4:e9:00:00:af:fe + unifi_type: client_present_at_ap + + + ap_ac_mesh: + unifi_ap_mac: af:fe:af:fe:af:fe + unifi_switch_port_no: 8 + + ap_enabled: + type: bool + unifi_type: ap_enabled + + port_enabled: + type: bool + unifi_type: switch_port_enabled + unifi_switch_port_profile_on: WLAN AP + unifi_switch_port_profile_off: Fully Off + + ip: + type: str + unifi_type: device_ip + + ap_name: + type: str + unifi_type: device_name + + myPhoneHere: + type: bool + mac: a4:e9:75:00:af:fe + unifi_type: client_present_at_ap + + myPhonePresent: + type: bool + mac: a4:e9:75:00:af:fe + unifi_type: client_present + + ip: + type: str + unifi_type: client_ip + + internetRadioDevicePresent: + type: bool + unifi_type: client_present + mac: 00:00:00:00:af:fe + + ip: + type: str + unifi_type: client_ip + +``` + + + +### logic.yaml +Please refer to the documentation generated from plugin.yaml metadata. + + +## Methods +Please refer to the documentation generated from plugin.yaml metadata. + + +## Examples + +If you have extensive examples, you could describe them here. + + +## Web Interfaces + +For building a web interface for a plugin, we deliver the following 3rd party components with the HTTP module: + + * JQuery 3.4.1: + * JS: <script src="/gstatic/js/jquery-3.4.1.min.js"></script> + * Bootstrap : + * CSS: <link rel="stylesheet" href="/gstatic/bootstrap/css/bootstrap.min.css" type="text/css"/> + * JS: <script src="/gstatic/bootstrap/js/bootstrap.min.js"></script> + * Bootstrap Tree View: + * CSS: <link rel="stylesheet" href="/gstatic/bootstrap-treeview/bootstrap-treeview.css" type="text/css"/> + * JS: <script src="/gstatic/bootstrap-treeview/bootstrap-treeview.min.js"></script> + * Bootstrap Datepicker v1.8.0: + * CSS: <link rel="stylesheet" href="/gstatic/bootstrap-datepicker/dist/css/bootstrap-datepicker.min.css" type="text/css"/> + * JS: + * <script src="/gstatic/bootstrap-datepicker/dist/js/bootstrap-datepicker.min.js"></script> + * <script src="/gstatic/bootstrap-datepicker/dist/locales/bootstrap-datepicker.de.min.js"></script> + * popper.js: + * JS: <script src="/gstatic/popper.js/popper.min.js"></script> + * CodeMirror 5.46.0: + * CSS: <link rel="stylesheet" href="/gstatic/codemirror/lib/codemirror.css"/> + * JS: <script src="/gstatic/codemirror/lib/codemirror.js"></script> + * Font Awesome 5.8.1: + * CSS: <link rel="stylesheet" href="/gstatic/fontawesome/css/all.css" type="text/css"/> + + For addons, etc. that are delivered with the components, see /modules/http/webif/gstatic folder! + + If you are interested in new "global" components, contact us. Otherwise feel free to use them in your plugin, as long as + the Open Source license is ok. + \ No newline at end of file diff --git a/unifi/__init__.py b/unifi/__init__.py new file mode 100644 index 000000000..c16f649a6 --- /dev/null +++ b/unifi/__init__.py @@ -0,0 +1,564 @@ +#!/usr/bin/env python3 +# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab +######################################################################### +# Copyright 2019 Jens Höppner +######################################################################### +# This file is part of SmartHomeNG. +# +# Sample plugin for new plugins to run with SmartHomeNG version 1.4 and +# upwards. +# +# SmartHomeNG is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# SmartHomeNG is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with SmartHomeNG. If not, see . +# +######################################################################### + +from requests import Session +from typing import Pattern, Dict, Union +import re +from jinja2 import Environment, FileSystemLoader +import cherrypy +from lib.module import Modules +from lib.model.smartplugin import * +from lib.network import Network +from plugins.unifi.ubiquiti.unifi import API as UniFiAPI +import json + + +class UniFiItemIssue(object): + def __init__(self, itemPath: str): + self.issues = [] + self.item = itemPath + + def append_issue(self, issue): + if self.issues.__contains__(issue): + return + self.issues.append(issue) + + def get_issues(self): + return self.issues + + +class UniFiControllerClientModel(): + def __init__(self, api): + self._items = [] + self._items_with_issues = {} + self._api = api + + def append_item(self, item): + self._items.append(item) + + def append_item_issue(self, item, issue): + ipath = item.path() + if not self._items_with_issues.__contains__(ipath): + self._items_with_issues[ipath] = UniFiItemIssue(ipath) + + self._items_with_issues[ipath].append_issue(issue) + + def get_items_with_issues_count(self): + return len(self._items_with_issues) + + def get_items_with_issues(self): + for x in self._items_with_issues: + yield self._items_with_issues[x] + + def get_item_count(self): + """ + Returns number of added items + """ + return len(self._items) + + def get_items(self, filter=None): + """ + Returns added items + + :return: array of items held by the device + """ + to_ret = [] + if filter is None: + return self._items + + for i in self._items: + if filter(i): + to_ret.append(i) + return to_ret + + +class UniFiControllerClient(SmartPlugin): + """ + Main class of the Plugin. Does all plugin specific stuff and provides + the update functions for the items + """ + + PLUGIN_VERSION = '1.6.0' + + PARAMETER_URL = 'unifi_controller_url' + PARAMETER_USER = 'unifi_user' + PARAMETER_PWD = 'unifi_password' + + ATTR_TYPE = 'unifi_type' + TYPE_CL_PRESENT = 'client_present' + TYPE_CL_IP = 'client_ip' + TYPE_CL_HOSTNAME = 'client_hostname' + TYPE_CL_AT_AP = 'client_present_at_ap' + TYPE_SW_PORT_ENABLED = 'switch_port_enabled' + TYPE_SW_PORT_PROFILE = 'switch_port_profile' + TYPE_AP_ENABLED = 'ap_enabled' + TYPE_DV_IP = 'device_ip' + TYPE_DV_NAME = 'device_name' + + ATTR_MAC = 'mac' + ATTR_SWITCH_MAC = 'unifi_switch_mac' + ATTR_DV_MAC = 'unifi_device_mac' + ATTR_AP_MAC = 'unifi_ap_mac' + ATTR_SWITCH_PORT_NO = 'unifi_switch_port_no' + ATTR_SWITCH_PORT_PROFILE_ON = 'unifi_switch_port_profile_on' + ATTR_SWITCH_PORT_PROFILE_OFF = 'unifi_switch_port_profile_off' + + def __init__(self, sh, *args, **kwargs): + """ + Initalizes the plugin. The parameters describe for this method are pulled from the entry in plugin.conf. + + :param sh: **Deprecated**: The instance of the smarthome object. For SmartHomeNG versions 1.4 and up: **Don't use it**! + :param *args: **Deprecated**: Old way of passing parameter values. For SmartHomeNG versions 1.4 and up: **Don't use it**! + :param **kwargs:**Deprecated**: Old way of passing parameter values. For SmartHomeNG versions 1.4 and up: **Don't use it**! + + If you need the sh object at all, use the method self.get_sh() to get it. There should be almost no need for + a reference to the sh object any more. + + The parameters *args and **kwargs are the old way of passing parameters. They are deprecated. They are imlemented + to support oder plugins. Plugins for SmartHomeNG v1.4 and beyond should use the new way of getting parameter values: + use the SmartPlugin method get_parameter_value(parameter_name) instead. Anywhere within the Plugin you can get + the configured (and checked) value for a parameter by calling self.get_parameter_value(parameter_name). It + returns the value in the datatype that is defined in the metadata. + """ + from bin.smarthome import VERSION + if '.'.join(VERSION.split('.', 2)[:2]) <= '1.5': + self.logger = logging.getLogger(__name__) + + # If an package import with try/except is done, handle an import error like this: + + # Exit if the required package(s) could not be imported + # if not REQUIRED_PACKAGE_IMPORTED: + # self.logger.error("Unable to import Python package ''") + # self._init_complete = False + # return + + # get the parameters for the plugin (as defined in metadata plugin.yaml): + self._unifi_controller_url = self.get_parameter_value(self.PARAMETER_URL) + self._unifi_user = self.get_parameter_value(self.PARAMETER_USER) + self._unifi_password = self.get_parameter_value(self.PARAMETER_PWD) + + self._model = UniFiControllerClientModel(UniFiAPI(username=self._unifi_user, password=self._unifi_password, + baseurl=self._unifi_controller_url, verify_ssl=False)) + + # cycle time in seconds, only needed, if hardware/interface needs to be + # polled for value changes by adding a scheduler entry in the run method of this plugin + # (maybe you want to make it a plugin parameter?) + self._cycle = 60 + self._logging = True + + # Initialization code goes here + + # On initialization error use: + # self._init_complete = False + # return + + # The following part of the __init__ method is only needed, if a webinterface is being implemented: + + # if plugin should start even without web interface + self.init_webinterface() + + # if plugin should not start without web interface + # if not self.init_webinterface(): + # self._init_complete = False + + return + + def run(self): + """ + Run method for the plugin + """ + self.logger.debug("Run method called") + # setup scheduler for device poll loop (disable the following line, if you don't need to poll the device. Rember to comment the self_cycle statement in __init__ as well + self.scheduler_add('poll_unifi', self.poll_device, cycle=self._cycle) + + self.alive = True + # if you need to create child threads, do not make them daemon = True! + # They will not shutdown properly. (It's a python bug) + + self._model._api.login() + + self.poll_device() + self._logging = False + + def stop(self): + """ + Stop method for the plugin + """ + self._model._api.logout() + self.logger.debug("Stop method called") + self.alive = False + + def _log_item_issue(self, item, msg, enable_logging=True): + self._model.append_item_issue(item, msg) + if enable_logging: + self.logger.debug(msg) + + def _log_item_warning(self, item, msg, enable_logging=True): + self._model.append_item_issue(item, msg) + if enable_logging: + self.logger.warning(msg) + + def _log_item_error(self, item, msg, enable_logging=True): + self._model.append_item_issue(item, msg) + if enable_logging: + self.logger.error(msg) + + def _mac_check(self, item, item_type: str, leaf_item=None): + if not Network.is_mac(item.conf[item_type]): + self._log_item_error(item, "invalid {} attribute provided from {} in item {} ".format( + item_type, item.path(), leaf_item.path())) + return False + return True + + def _get_attribute_recursive(self, item, item_type: str, check=None, enable_logging=True, leaf_item=None): + if item is None: + self._log_item_issue(leaf_item, "No {} attribute provided in item {} (or parent)".format( + item_type, leaf_item.path())) + return None + if leaf_item is None: + leaf_item = item + + try: + if item_type in item.conf: + if not check is None: + if not check(item, item_type, leaf_item): + return None + if not (item.path() == leaf_item.path()): + self._log_item_issue(leaf_item, "{} attribute provided from {} in item {} ".format( + item_type, item.path(), leaf_item.path()), enable_logging) + return item.conf[item_type] + except AttributeError: + self._log_item_issue(leaf_item, "No {} attribute provided in item {} (or parent)".format( + item_type, leaf_item.path())) + return None + return self._get_attribute_recursive(item.return_parent(), item_type, check, leaf_item) + + def _get_one_of_attr_recursive(self, item, item_types: list, check=None, enable_logging=True, leaf_item=None): + if item is None: + self._log_item_issue(leaf_item, "No {} attribute provided in item {} (or parent)".format( + json.dump(item_types), leaf_item.path())) + return None + if leaf_item is None: + leaf_item = item + + for item_type in item_types: + try: + if item_type in item.conf: + if not check is None: + if not check(item, item_type, leaf_item): + return None + if not (item.path() == leaf_item.path()): + self._log_item_issue(leaf_item, "{} attribute provided from {} in item {} ".format( + item_type, item.path(), leaf_item.path()), enable_logging) + + return item.conf[item_type] + except AttributeError: + self._log_item_issue(leaf_item, "No {} attribute provided in item {} (or parent)".format( + item_type, leaf_item.path())) + return None + return self._get_one_of_attr_recursive(item.return_parent(), item_types, check, leaf_item) + + def parse_item(self, item): + """ + Default plugin parse_item method. Is called when the plugin is initialized. + The plugin can, corresponding to its attribute keywords, decide what to do with + the item in future, like adding it to an internal array for future reference + :param item: The item to process. + :return: If the plugin needs to be informed of an items change you should return a call back function + like the function update_item down below. An example when this is needed is the knx plugin + where parse_item returns the update_item function when the attribute knx_send is found. + This means that when the items value is about to be updated, the call back function is called + with the item, caller, source and dest as arguments and in case of the knx plugin the value + can be sent to the knx with a knx write function within the knx plugin. + """ + if not self.has_iattr(item.conf, self.ATTR_TYPE): + return + + i_attr = self.get_iattr_value(item.conf, self.ATTR_TYPE) + if i_attr in [self.TYPE_CL_PRESENT, self.TYPE_CL_IP, self.TYPE_CL_AT_AP, self.TYPE_CL_HOSTNAME]: + cl_mac = self._get_attribute_recursive(item, self.ATTR_MAC, check=self._mac_check) + if cl_mac is None: + return + self._model.append_item(item) + + elif i_attr in [self.TYPE_AP_ENABLED]: + ap_mac = self._get_attribute_recursive(item, self.ATTR_AP_MAC, check=self._mac_check) + if ap_mac is None: + return + self._model.append_item(item) + return self.update_item + + elif i_attr in [self.TYPE_DV_IP, self.TYPE_DV_NAME]: + dv_mac = self._get_one_of_attr_recursive( + item, [self.ATTR_AP_MAC, self.ATTR_SWITCH_MAC, self.ATTR_DV_MAC], check=self._mac_check) + if dv_mac is None: + return + self._model.append_item(item) + return + + elif i_attr in [self.TYPE_SW_PORT_PROFILE]: + sw_mac = self._get_attribute_recursive(item, self.ATTR_SWITCH_MAC, check=self._mac_check) + if sw_mac is None: + return + self._model.append_item(item) + return self.update_item + + elif i_attr in [self.TYPE_SW_PORT_ENABLED]: + sw_mac = self._get_attribute_recursive(item, self.ATTR_SWITCH_MAC, check=self._mac_check) + if sw_mac is None: + return + prof_on = self._get_attribute_recursive(item, self.ATTR_SWITCH_PORT_PROFILE_ON) + if prof_on is None: + return + prof_off = self._get_attribute_recursive(item, self.ATTR_SWITCH_PORT_PROFILE_OFF) + if prof_off is None: + return + self._model.append_item(item) + return self.update_item + + else: + self._log_item_warning(item, "unifi_type %s unknown at %s" % (i_attr, item.path())) + + def parse_logic(self, logic): + """ + Default plugin parse_logic method + """ + # if 'xxx' in logic.conf: + # self.function(logic['name']) + pass + + def _update_with(self, item, item_type, func): + if self._item_filter(item, self.ATTR_TYPE, item_type): + func(item) + + def update_item(self, item, caller=None, source=None, dest=None): + """ + Item has been updated + + This method is called, if the value of an item has been updated by SmartHomeNG. + + :param item: item to be updated towards the plugin + :param caller: if given it represents the callers name + :param source: if given it represents the source + :param dest: if given it represents the dest + """ + if caller != self.get_shortname(): + + self._update_with(item, self.TYPE_AP_ENABLED, lambda i: self._model._api.set_device_disabled( + device_mac=self._get_attribute_recursive( + i, self.ATTR_AP_MAC, check=self._mac_check, enable_logging=self._logging), + disabled=not i()) + ) + + self._update_with(item, self.TYPE_SW_PORT_ENABLED, lambda i: self._model._api.set_port_profile_for( + switch_mac=self._get_attribute_recursive( + i, self.ATTR_SWITCH_MAC, check=self._mac_check, enable_logging=self._logging), + port_number=int(self._get_attribute_recursive( + i, self.ATTR_SWITCH_PORT_NO, enable_logging=self._logging)), + profile_name=self._get_attribute_recursive( + i, self.ATTR_SWITCH_PORT_PROFILE_ON, enable_logging=self._logging) if i() else self._get_attribute_recursive(i, self.ATTR_SWITCH_PORT_PROFILE_OFF, enable_logging=self._logging)) + ) + + self.logger.debug( + "update_item was called with item '{}' from caller '{}', source '{}' and dest '{}'".format(item, caller, source, dest)) + + def _item_filter(self, item, attr_type, attr_val): + if not self.has_iattr(item.conf, attr_type): + return False + if attr_val == self.get_iattr_value(item.conf, attr_type): + return True + return False + + def _poll_with_unifi_type(self, unifi_type, func): + for item in self._model.get_items(lambda i: self._item_filter(i, self.ATTR_TYPE, unifi_type)): + item(func(item), self.get_shortname()) + + def _check_client_at_ap(self, i): + ap_mac = self._get_attribute_recursive(i, self.ATTR_AP_MAC, check=self._mac_check, enable_logging=self._logging) + if ap_mac is None: + return False + client_mac = self._get_attribute_recursive( + i, self.ATTR_MAC, check=self._mac_check, enable_logging=self._logging) + client_present = self._model._api.get_client_presence(client_mac) + if not client_present: + return False + + ap_of_client_mac = self._model._api.get_client_info(client_mac, 'ap_mac') + if ap_of_client_mac is None: + self._log_item_warning(i, "Unable to get MAC of access-point for client %s from %s" % + (client_mac, i.path()), enable_logging=self._logging) + + return ap_of_client_mac == ap_mac + + def _check_ap_enabled(self, item): + ap_mac = self._get_attribute_recursive( + item, self.ATTR_AP_MAC, check=self._mac_check, enable_logging=self._logging) + if ap_mac is None: + return False + rsl = self._model._api.get_device_info(ap_mac, 'disabled', if_no_prop=False) + if rsl is None: + self._log_item_warning(item, "No device %s found for item %s" % + (ap_mac, item.path()), enable_logging=self._logging) + return False + return not rsl + + def _get_device_info(self, item, info_type): + mac = self._get_one_of_attr_recursive( + item, [self.ATTR_DV_MAC, self.ATTR_AP_MAC, self.ATTR_SWITCH_MAC], check=self._mac_check, enable_logging=self._logging) + if mac is None: + return False + rsl = self._model._api.get_device_info(mac, info_type) + if rsl is None: + self._log_item_warning(item, "No device %s found for item %s" % + (mac, item.path()), enable_logging=self._logging) + + return rsl + + def _get_sw_port_profile(self, i): + sw_mac = self._get_attribute_recursive( + i, self.ATTR_SWITCH_MAC, check=self._mac_check, enable_logging=self._logging) + sw_port = int(self._get_attribute_recursive(i, self.ATTR_SWITCH_PORT_NO, + enable_logging=self._logging)) + return self._model._api.get_port_profile_for(sw_mac, sw_port) + + def _check_sw_port_enabled(self, item): + pp_on = self._get_attribute_recursive(item, self.ATTR_SWITCH_PORT_PROFILE_ON, enable_logging=self._logging) + pp_off = self._get_attribute_recursive(item, self.ATTR_SWITCH_PORT_PROFILE_OFF, enable_logging=self._logging) + rslt = self._get_sw_port_profile(item) + + if rslt == pp_off: + return False + elif rslt == pp_on: + return True + else: + self._log_item_warning(item, "Current port-profile \{}}\" doesn't match \"{}\" (on) or \"{}\" (off) in {}".format( + rslt, pp_on, pp_off, item.path()), enable_logging=self._logging) + return None + + def _get_client_info(self, item, info_type): + client_mac = self._get_attribute_recursive( + item, self.ATTR_MAC, check=self._mac_check, enable_logging=self._logging) + return self._model._api.get_client_info(client_mac, info_type) + + def _get_client_presence(self, item): + client_mac = self._get_attribute_recursive( + item, self.ATTR_MAC, check=self._mac_check, enable_logging=self._logging) + return self._model._api.get_client_presence(client_mac) + + def poll_device(self): + """ + Polls for updates of the devices connected to the controller + """ + self._poll_with_unifi_type(self.TYPE_CL_PRESENT, lambda i: self._get_client_presence(i)) + self._poll_with_unifi_type(self.TYPE_CL_IP, lambda i: self._get_client_info(i, 'ip')) + self._poll_with_unifi_type(self.TYPE_CL_HOSTNAME, lambda i: self._get_client_info(i, 'hostname')) + self._poll_with_unifi_type(self.TYPE_CL_AT_AP, lambda i: self._check_client_at_ap(i)) + self._poll_with_unifi_type(self.TYPE_AP_ENABLED, lambda i: self._check_ap_enabled(i)) + self._poll_with_unifi_type(self.TYPE_SW_PORT_ENABLED, lambda i: self._check_sw_port_enabled(i)) + self._poll_with_unifi_type(self.TYPE_SW_PORT_PROFILE, lambda i: self._get_sw_port_profile(i)) + self._poll_with_unifi_type(self.TYPE_DV_IP, lambda i: self._get_device_info(i, 'ip')) + self._poll_with_unifi_type(self.TYPE_DV_NAME, lambda i: self._get_device_info(i, 'name')) + + def init_webinterface(self): + """" + Initialize the web interface for this plugin + + This method is only needed if the plugin is implementing a web interface + """ + try: + # try/except to handle running in a core version that does not support modules + self.mod_http = Modules.get_instance().get_module('http') + except: + self.mod_http = None + if self.mod_http == None: + self.logger.error("Not initializing the web interface") + return False + + import sys + if not "SmartPluginWebIf" in list(sys.modules['lib.model.smartplugin'].__dict__): + self.logger.warning("Web interface needs SmartHomeNG v1.5 and up. Not initializing the web interface") + return False + + # set application configuration for cherrypy + webif_dir = self.path_join(self.get_plugin_dir(), 'webif') + config = { + '/': { + 'tools.staticdir.root': webif_dir, + }, + '/static': { + 'tools.staticdir.on': True, + 'tools.staticdir.dir': 'static' + } + } + + # Register the web interface as a cherrypy app + self.mod_http.register_webif(WebInterface(webif_dir, self), + self.get_shortname(), + config, + self.get_classname(), self.get_instance_name(), + description='') + + return True + + +# ------------------------------------------ +# Webinterface of the plugin +# ------------------------------------------ + + +class WebInterface(SmartPluginWebIf): + + def __init__(self, webif_dir, plugin): + """ + Initialization of instance of class WebInterface + + :param webif_dir: directory where the webinterface of the plugin resides + :param plugin: instance of the plugin + :type webif_dir: str + :type plugin: object + """ + self.logger = logging.getLogger(__name__) + self.webif_dir = webif_dir + self.plugin = plugin + self.tplenv = self.init_template_environment() + + @cherrypy.expose + def index(self, reload=None): + """ + Build index.html for cherrypy + + Render the template and return the html file to be delivered to the browser + + :return: contents of the template after beeing rendered + """ + + tabcount = 2 + + tmpl = self.tplenv.get_template('index.html') + return tmpl.render(plugin_shortname=self.plugin.get_shortname(), + plugin_version=self.plugin.get_version(), + plugin_info=self.plugin.get_info(), + tabcount=tabcount, + p=self.plugin) diff --git a/unifi/plugin.yaml b/unifi/plugin.yaml new file mode 100644 index 000000000..4c168eedb --- /dev/null +++ b/unifi/plugin.yaml @@ -0,0 +1,121 @@ +# Metadata for the plugin +plugin: + # Global plugin attributes + type: interface # plugin type (gateway, interface, protocol, system, web) + description: + de: 'Plugin um einige Features von UniFi Controllern auszulesen und fernzusteuern' + en: 'Plugin to read and control some features of UniFi Controllers' + maintainer: jentz1986 +# tester: # Who tests this plugin? + state: develop # change to ready when done with development + keywords: wifi unifi ubiquiti network +# documentation: https://github.com/smarthomeNG/smarthome/wiki/CLI-Plugin # url of documentation (wiki) page + support: https://knx-user-forum.de/forum/supportforen/smarthome-py/1278068-unifi-controller-api-wlan + + version: 1.6.0 # Plugin version + sh_minversion: 1.6 # minimum shNG version to use this plugin +# sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) + multi_instance: False # plugin supports multi instance + restartable: True + classname: UniFiControllerClient # class containing the plugin + +parameters: + # Definition of parameters to be configured in etc/plugin.yaml (enter 'parameters: NONE', if section should be empty) + unifi_controller_url: + type: str + mandatory: True + default: '' + description: + de: 'Basis URL des Controller, z.B. https://unifi:8443' + en: 'Base URL of the controller, e.g. https://unifi:8443' + + unifi_user: + type: str + mandatory: True + default: '' + description: + de: 'Nutzername für den Login am Controller.' + en: 'Login information (user).' + + unifi_password: + type: str + mandatory: True + default: '' + hide: True + description: + de: 'Passwort für den Login.' + en: 'Password for login.' + +item_attributes: + # Definition of item attributes defined by this plugin (enter 'item_attributes: NONE', if section should be empty) + unifi_type: + type: str + mandatory: True + description: + de: 'UniFi Datentyp des jeweiligen Items.' + en: 'UniFi Data Type of the respective item.' + valid_list: + - 'client_present' + - 'client_ip' + - 'client_hostname' + - 'client_present_at_ap' + - 'switch_port_enabled' + - 'switch_port_profile' + - 'ap_enabled' + - 'device_ip' + - 'device_name' + mac: + type: mac + mandatory: False + description: + de: 'Definition der MAC Adresse für Items vom unifi_type `client_*`. Nur für diese Items mandatory!' + en: 'Definition of the MAC address for items of unifi_type `client_*`. Only mandatory for these items!' + unifi_switch_mac: + type: mac + mandatory: False + description: + de: 'Definition der MAC Adresse für Items vom unifi_type `switch_*`. Nur für diese Items mandatory!' + en: 'Definition of the MAC address for items of unifi_type `switch_*`. Only mandatory for these items!' + unifi_device_mac: + type: mac + mandatory: False + description: + de: 'Definition der MAC Adresse für Items vom unifi_type `device_*`. Nur für diese Items mandatory!' + en: 'Definition of the MAC address for items of unifi_type `device_*`. Only mandatory for these items!' + unifi_ap_mac: + type: mac + mandatory: False + description: + de: 'Definition der MAC Adresse für Items vom unifi_type `ap_*`. Nur für diese Items mandatory!' + en: 'Definition of the MAC address for items of unifi_type `ap_*`. Only mandatory for these items!' + unifi_switch_port_no: + type: int + valid_min: 1 + valid_max: 50 + description: + de: 'Definition der Portnummer an den ein Gerät an einen UniFi Switch angeschlossen ist' + en: 'Definition of the port-number the device is connected to a UniFi-switch.' + unifi_switch_port_profile_on: + type: str + mandatory: False + description: + de: 'Name des zu selektierenden Portprofils wenn dieses Gerät An sein soll.' + en: 'Name of the port-profile to be chosen if this device should be on.' + unifi_switch_port_profile_off: + type: str + mandatory: False + description: + de: 'Name des zu selektierenden Portprofils wenn dieses Gerät Aus sein soll.' + en: 'Name of the port-profile to be chosen if this device should be off.' + + + +item_structs: NONE + # Definition of item-structure templates for this plugin (enter 'item_structs: NONE', if section should be empty) + +plugin_functions: NONE + # Definition of plugin functions defined by this plugin (enter 'plugin_functions: NONE', if section should be empty) + +logic_parameters: NONE + # Definition of logic parameters defined by this plugin (enter 'logic_parameters: NONE', if section should be empty) + diff --git a/unifi/ubiquiti/LICENSE b/unifi/ubiquiti/LICENSE new file mode 100644 index 000000000..ab38def61 --- /dev/null +++ b/unifi/ubiquiti/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 frehov + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/unifi/ubiquiti/__init__.py b/unifi/ubiquiti/__init__.py new file mode 100644 index 000000000..e69de29bb diff --git a/unifi/ubiquiti/unifi.py b/unifi/ubiquiti/unifi.py new file mode 100644 index 000000000..7c79a5e18 --- /dev/null +++ b/unifi/ubiquiti/unifi.py @@ -0,0 +1,296 @@ +from requests import Session +import json +import re +import time +from typing import Pattern, Dict, Union + + +class LoggedInException(Exception): + + def __init__(self, *args, **kwargs): + super(LoggedInException, self).__init__(*args, **kwargs) + + +class DataException(Exception): + + def __init__(self, *args, **kwargs): + super(DataException, self).__init__(*args, **kwargs) + + +class DeviceCacheEntry(object): + + def __init__(self): + self.age = 0 + self.data = {} + +# origin: https://github.com/MBRCTV/Unifi-Python-API +class API(object): + """ + Unifi API for the Unifi Controller. + + """ + _login_data = {} + _current_status_code = None + + _is_logged_in = False + + _client_list = {} + _client_list_from = 0 + _port_profiles = {} + _mac_to_id = {} + _device_cache = {} + + def __init__(self, username: str = "ubnt", password: str = "ubnt", site: str = "default", baseurl: str = "https://unifi:8443", verify_ssl: bool = True): + """ + Initiates tha api with default settings if none other are set. + + :param username: username for the controller user + :param password: password for the controller user + :param site: which site to connect to (Not the name you've given the site, but the url-defined name) + :param baseurl: where the controller is located + :param verify_ssl: Check if certificate is valid or not, throws warning if set to False + """ + self._login_data['username'] = username + self._login_data['password'] = password + self._site = site + self._verify_ssl = verify_ssl + self._baseurl = baseurl + self._session = Session() + + def __enter__(self): + """ + Contextmanager entry handle + + :return: isntance object of class + """ + return self + + def __exit__(self, *args): + """ + Contextmanager exit handle + + :return: None + """ + if self._is_logged_in: + self.logout() + self._is_logged_in = False + + def login(self): + """ + Log the user in + + :return: None + """ + if self._is_logged_in: + return + + self._current_status_code = self._session.post("{}/api/login".format( + self._baseurl), data=json.dumps(self._login_data), verify=self._verify_ssl).status_code + if self._current_status_code == 400: + raise LoggedInException( + "Failed to log in to api with provided credentials") + + self._is_logged_in = True + + def logout(self): + """ + Log the user out + + :return: None + """ + self._session.get("{}/logout".format(self._baseurl)) + self._session.close() + + def _load_client_list(self): + self.login() + r = self._session.get("{}/api/s/{}/stat/sta".format(self._baseurl, + self._site, verify=self._verify_ssl), data="json={}") + self._current_status_code = r.status_code + + if self._current_status_code == 401: + raise LoggedInException("Invalid login, or login has expired") + + data = r.json()['data'] + self._client_list = data + + def list_clients(self, filters: Dict[str, Union[str, Pattern]] = None, order_by: str = None, max_age_seconds: int = 60) -> list: + """ + List all available clients from the api or an internal cache + + :param filters: dict with valid key, value pairs, string supplied is compiled to a regular expression + :param order_by: order by a valid client key, defaults to '_id' if key is not found + :param max_age_seconds: number of seconds after which the controller is to be called again, defaults to 60 + :return: A list of clients on the format of a dict + """ + if time.time() - self._client_list_from > max_age_seconds: + self._load_client_list() + + data = self._client_list + + if filters: + for term, value in filters.items(): + value_re = value if isinstance( + value, Pattern) else re.compile(value) + + data = [x for x in data if term in x.keys( + ) and re.fullmatch(value_re, x[term])] + + if order_by: + data = sorted( + data, key=lambda x: x[order_by] if order_by in x.keys() else x['_id']) + + return data + + def device_disable(self, device_ids: list, disabled): + """ + Dis- or enables the device + """ + self.login() + + ap_data = {} + ap_data['disabled'] = disabled + for ids in device_ids: + r = self._session.put("{}/api/s/{}/rest/device/{}".format( + self._baseurl, self._site, ids), verify=self._verify_ssl, data=json.dumps(ap_data)) + self._current_status_code = r.status_code + + if not r.ok: + if self._current_status_code == 401: + raise LoggedInException( + "Invalid login, or login has expired") + else: + raise LoggedInException("code {self._current_status_code}") + + _data = r.json()['data'] + # print(json.dumps(data, indent=4)) + + def device_stat(self, mac: str): + self.login() + r = self._session.get("{}/api/s/{}/stat/device/{}".format(self._baseurl, + self._site, mac), verify=self._verify_ssl) + self._current_status_code = r.status_code + + if self._current_status_code == 401: + raise LoggedInException("Invalid login, or login has expired") + + return r.json()['data'] + + def _load_port_profiles(self): + self.login() + r = self._session.get( + "{}/api/s/{}/rest/portconf".format(self._baseurl, self._site), verify=self._verify_ssl) + self._current_status_code = r.status_code + + if self._current_status_code == 401: + raise LoggedInException("Invalid login, or login has expired") + + self._port_profiles = r.json()['data'] + + def _get_port_profiles(self, filters: Dict[str, Union[str, Pattern]] = None): + if len(self._port_profiles) < 1: + self._load_port_profiles() + + data = self._port_profiles + if filters: + for term, value in filters.items(): + value_re = value if isinstance(value, Pattern) else re.compile(value) + data = [x for x in data if term in x.keys() and re.fullmatch(value_re, x[term])] + + return data + + def _get_id_from_mac(self, mac: str): + mac = mac.lower() + if not self._mac_to_id.__contains__(mac): + swData = self.device_stat(mac) + if len(swData) == 0: + return None + self._mac_to_id[mac] = swData[0]['_id'] + + return self._mac_to_id[mac] + + def set_device_disabled(self, device_mac: str, disabled: bool): + did = self._get_id_from_mac(device_mac) + if did is None: + raise DataException("Cannot find switch with MAC {}".format(device_mac)) + self.device_disable([did], disabled) + + def get_port_profile_for(self, switch_mac: str, port_number: int): + self.login() + + sid = self._get_id_from_mac(switch_mac) + if sid is None: + raise DataException("Cannot find switch with MAC {}".format(switch_mac)) + + poData = self.device_stat(switch_mac) + port_prof = poData[0]['port_overrides'][port_number - 1]['portconf_id'] + + profiles = self._get_port_profiles() + if len(profiles) == 0: + raise DataException("No port profiles found") + for prof in profiles: + if prof["_id"] == port_prof: + return prof["name"] + + raise DataException("Cannot match profile {} in {}".format(port_prof, json.dumps(profiles))) + + def set_port_profile_for(self, switch_mac: str, port_number: int, profile_name: str): + self.login() + + pp = self._get_port_profiles(filters={'name': profile_name}) + if len(pp) == 0: + raise DataException("No port profile found for {}".format(profile_name)) + pid = pp[0]['_id'] + + sid = self._get_id_from_mac(switch_mac) + if sid is None: + raise DataException("Cannot find switch with MAC {}".format(switch_mac)) + + poData = self.device_stat(switch_mac) + poData = poData[0]['port_overrides'] + if len(poData) < (port_number - 1): + raise DataException("Switch has less than {} ports".format(port_number)) + poData[port_number - 1]['portconf_id'] = pid + newPoData = {} + newPoData['port_overrides'] = poData + + r = self._session.put("{}/api/s/{}/rest/device/{}".format(self._baseurl, + self._site, sid), verify=self._verify_ssl, data=json.dumps(newPoData)) + self._current_status_code = r.status_code + + if not r.ok: + if self._current_status_code == 401: + raise LoggedInException("Invalid login, or login has expired") + else: + raise LoggedInException("code {self._current_status_code}") + + def get_client_presence(self, client_mac: str, last_seen_delta: int = 300): + clnts = self.list_clients(filters={'mac': client_mac}) + if len(clnts) < 1: + return False + ls = clnts[0]['last_seen'] + return time.time() - ls < last_seen_delta + + def get_client_info(self, client_mac: str, property_id: str): + clnts = self.list_clients(filters={'mac': client_mac}) + if len(clnts) < 1: + return None + + if clnts[0].__contains__(property_id): + return clnts[0][property_id] + return None + + def get_device_info(self, device_mac: str, property_id: str, max_age: int = 30, if_no_dev=None, if_no_prop=None): + if not self._device_cache.__contains__(device_mac): + self._device_cache[device_mac] = DeviceCacheEntry() + + if time.time() - self._device_cache[device_mac].age > max_age: + rsl = self.device_stat(device_mac) + if len(rsl) > 0: + self._device_cache[device_mac].data = rsl[0] + self._device_cache[device_mac].age = time.time() + else: + return if_no_dev + try: + return self._device_cache[device_mac].data[property_id] + except KeyError: + return if_no_prop diff --git a/unifi/webif/templates/index.html b/unifi/webif/templates/index.html new file mode 100644 index 000000000..555173935 --- /dev/null +++ b/unifi/webif/templates/index.html @@ -0,0 +1,165 @@ +{% extends "base_plugin.html" %} + +{% set logo_frame = false %} + +{% block headtable %} +
  {{ _('Host') }}{{ p._model.get_ip() }} {{ _('Netz') }} {{ p._model.get_net() }}
{{ _('Host') }}{{ p._model.get_ip() }}{{ _('Port') }}{{ p._model.get_port() }} {{ _('Subnetz') }} {{ p._model.get_subnet() }}
{{ _('Port') }}{{ p._model.get_port() }}{{ _('Mininum Kanäle zu senden') }}{{ p._model.get_min_channels() }} {{ _('Universum') }} {{ p._model.get_universe() }}
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
Prompt 1{% if 1 == 2 %}{{ _('Ja') }}{% else %}{{ _('Nein') }}{% endif %}Prompt 4{{ _('Wert 4') }}
Prompt 2{{ _('Wert 2') }}Prompt 5-
Prompt 3-Prompt 6-
+{% endblock headtable %} + + + +{% block buttons %} +{% if 1==2 %} +
+ +
+{% endif %} +{% endblock %} + + +{% set tabcount = 2 %} + + + +{% if item_count==0 %} + {% set start_tab = 2 %} +{% endif %} + + + +{% set tab1title = "Items (" ~ p._model.get_item_count() ~ ")" %} +{% block bodytab1 %} +
+
+ + + + + + + + + + + + {% for item in p._model.get_items() %} + {% if p.get_instance_name() %} + {% set instance_append = "@"+p.get_instance_name() %} + {% else %} + {% set instance_append = "" %} + {% endif %} + + + + + + + + {% endfor %} + +
{{ _('Pfad') }}{{ _('Typ') }}{{ _('Item Wert') }}{{ _('Letztes Update') }}{{ _('Letzter Change') }}
{{ item.id() }}{{ item.type() }}{{ item() }}{{ item.last_update().strftime('%d.%m.%Y %H:%M:%S') }}{{ item.last_change().strftime('%d.%m.%Y %H:%M:%S') }}
+
+
+{% endblock bodytab1 %} + + + +{% set tab2title = "Issues (" ~ p._model.get_items_with_issues_count() ~ ")" %} +{% block bodytab2 %} +
+
+ + + + + + + + + + {% for ele in p._model.get_items_with_issues() %} + {% if p.get_instance_name() %} + {% set instance_append = "@"+p.get_instance_name() %} + {% else %} + {% set instance_append = "" %} + {% endif %} + + + + + + {% endfor %} + +
{{ _('Pfad') }}{{ _('Typ') }}{{ _('Probleme') }}
{{ ele.item }}TÜÜÜÜÜÜÜP + {% for issue in ele.get_issues() %} + {{ issue }}
+ {% endfor %} +
+
+
+{% endblock bodytab2 %} + + + +{% block bodytab3 %} +
+ {{ _('Hier kommt der Inhalt des Webinterfaces Tab3 hin.') }} +
+{% endblock bodytab3 %} + + + +{% block bodytab4 %} +
+ {{ _('Hier kommt der Inhalt des Webinterfaces Tab4 hin.') }} +
+{% endblock bodytab4 %} From ceebb0c338dc206d917d9ed614bfd649b4b073e6 Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Wed, 29 May 2019 11:50:37 +0200 Subject: [PATCH 061/200] Revert "Update plugin.yaml" This reverts commit 04a6a09df9d731cebdb8dc9b56d83d670db0c4bc. --- artnet/plugin.yaml | 3 --- 1 file changed, 3 deletions(-) diff --git a/artnet/plugin.yaml b/artnet/plugin.yaml index da60ab8a2..6b169736a 100755 --- a/artnet/plugin.yaml +++ b/artnet/plugin.yaml @@ -22,20 +22,17 @@ parameters: # Definition of parameters to be configured in etc/plugin.yaml ip: type: ip - default: 127.0.0.1 description: de: 'Gibt die Adresse des angesprochenen Art-Net Node an' en: 'Specifies the address of a Art-Net node' port: type: int valid_min: 0 - default: 6454 description: de: 'Gibt den Port des angesprochenen Art-Net Node an' en: 'Specifies the port of a Art-Net node' update_cycle: type: int - default: 0 valid_min: 0 description: de: 'Gibt an, wie oft (Sekunden) die aktuelle Lichtsituation neu verschickt werden soll (optional, 0 deaktiviert dies)' From 2f8b98d9194d227a1262a9749400849befc726b9 Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Wed, 29 May 2019 11:50:49 +0200 Subject: [PATCH 062/200] Revert "made it work again" This reverts commit 5ef31d6353c543607213e44e2cb449dc8f028143. --- artnet/__init__.py | 26 +++++++++++++------------- artnet/plugin.yaml | 2 +- 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/artnet/__init__.py b/artnet/__init__.py index bdc7eacfc..f396c3add 100755 --- a/artnet/__init__.py +++ b/artnet/__init__.py @@ -33,8 +33,8 @@ class ArtNet_Model: - def __init__(self, ip, port, net, subnet, universe, instance_name, update_cycle): - self._ip = ip + def __init__(self, host, port, net, subnet, universe, instance_name, update_cycle): + self._host = host self._port = port self._universe = universe @@ -49,9 +49,9 @@ def get_ip(self): """ Returns the IP of the ArtNet node - :return: IP-address of the device, as set in plugin.conf + :return: hostname of the device, as set in plugin.conf """ - return self._ip + return self._host def get_port(self): """ @@ -61,6 +61,14 @@ def get_port(self): """ return self._port + def get_universe(self): + """ + Returns the Universe of the ArtNet node + + :return: Universe of the device, as set in plugin.conf + """ + return self._universe + def get_net(self): """ Returns the net of the ArtNet node @@ -77,14 +85,6 @@ def get_subnet(self): """ return self._subnet - def get_universe(self): - """ - Returns the Universe of the ArtNet node - - :return: Universe of the device, as set in plugin.conf - """ - return self._universe - def get_items(self): """ Returns added items @@ -211,7 +211,7 @@ def send_single_value(self, adr, value): self.logger.error("DMX address %s invalid" % adr) return - self.set_address_value(adr, value) + set_address_value(adr, value) self.__ArtDMX_broadcast() def send_frame_starting_at(self, adr, values): diff --git a/artnet/plugin.yaml b/artnet/plugin.yaml index 6b169736a..47da3fdd6 100755 --- a/artnet/plugin.yaml +++ b/artnet/plugin.yaml @@ -11,7 +11,7 @@ plugin: keywords: dmx # documentation: https://github.com/smarthomeNG/plugins/blob/develop/mqtt/README.md # url of documentation (wiki) page - version: 1.6.0 # Plugin version + version: 1.5.1 # Plugin version sh_minversion: 1.5.1 # minimum shNG version to use this plugin # sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) multi_instance: True From 60439214bd6d76d260bd613d848cfe989c4a5803 Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Wed, 29 May 2019 11:52:18 +0200 Subject: [PATCH 063/200] Revert "Some fixes" This reverts commit 7c7cac29ceb3d559511f0623b53d91336f0f4d2a. --- artnet/__init__.py | 109 ++++++++++++++---------------- artnet/plugin.yaml | 69 +++---------------- artnet/webif/templates/index.html | 12 ++-- 3 files changed, 66 insertions(+), 124 deletions(-) diff --git a/artnet/__init__.py b/artnet/__init__.py index f396c3add..5434ee167 100755 --- a/artnet/__init__.py +++ b/artnet/__init__.py @@ -22,7 +22,6 @@ # along with SmartHomeNG. If not, see . ######################################################################### -import cherrypy import logging import socket import struct @@ -30,20 +29,19 @@ from lib.model.smartplugin import * from lib.module import Modules - class ArtNet_Model: - def __init__(self, host, port, net, subnet, universe, instance_name, update_cycle): + def __init__(self, host, port, universe, net, subnet, instance_name, update_cycle): self._host = host self._port = port - + self._universe = universe self._net = net self._subnet = subnet self._instance_name = instance_name self._update_cycle = update_cycle - - self._items = [] + + self._items = [] def get_ip(self): """ @@ -76,7 +74,7 @@ def get_net(self): :return: net of the device, as set in plugin.conf """ return self._net - + def get_subnet(self): """ Returns the Subnet of the ArtNet node @@ -84,7 +82,7 @@ def get_subnet(self): :return: Subnet of the device, as set in plugin.conf """ return self._subnet - + def get_items(self): """ Returns added items @@ -93,95 +91,79 @@ def get_items(self): """ return self._items - class ArtNet(SmartPlugin): ALLOW_MULTIINSTANCE = True - PLUGIN_VERSION = "1.6.0" + PLUGIN_VERSION = "1.5.1" ADDR_ATTR = 'artnet_address' packet_counter = 1 dmxdata = [0, 0] - + def __init__(self, sh, *args, **kwargs): """ Initalizes the plugin. The parameters describe for this method are pulled from the entry in plugin.conf. """ + # self.logger = logging.getLogger(__name__) self.logger.info('Init ArtNet Plugin') - - self._model = ArtNet_Model(self.get_parameter_value('ip') or '127.0.0.1', - port=int(self.get_parameter_value( - 'port') or 6454), - net=int(self.get_parameter_value( - 'artnet_net') or 0), - subnet=int(self.get_parameter_value( - 'artnet_subnet') or 0), - universe=int(self.get_parameter_value( - 'artnet_universe') or 0), + + self._model = ArtNet_Model(self.get_parameter_value('ip') or '127.0.0.1', + port=int(self.get_parameter_value('port') or 6454), + universe=int(self.get_parameter_value('artnet_universe') or 0), + net=int(self.get_parameter_value('artnet_net') or 0), + subnet=int(self.get_parameter_value('artnet_subnet') or 0), instance_name=self.get_instance_name(), - update_cycle=int( - self.get_parameter_value('update_cycle') or 0), + update_cycle=int(self.get_parameter_value('update_cycle') or 0), ) self.s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.init_webinterface() - self.logger.debug("Init ArtNet Plugin for %s done" % - self._model._instance_name) + self.logger.debug("Init ArtNet Plugin for %s done" % self._model._instance_name) def parse_item(self, item): - # items bound to this artnet-universe + # items bound to this artnet-subnet if self.has_iattr(item.conf, self.ADDR_ATTR): adr = int(self.get_iattr_value(item.conf, self.ADDR_ATTR)) if adr > 0 and adr < 513: while len(self.dmxdata) < (adr - 1): self.dmxdata.append(0) - + self.logger.debug("Bound address %s to item %s" % (adr, item)) self._model._items.append(item) return self.update_item else: - self.logger.error( - "Invalid address %s in item %s" % (adr, item)) + self.logger.error("Invalid address %s in item %s" % (adr, item)) def update_item(self, item, caller=None, source=None, dest=None): if caller != 'ArtNet': adr = int(self.get_iattr_value(item.conf, self.ADDR_ATTR)) if item() < 0 or item() > 255: - self.logger.warning( - "Impossible to update address: %s to value %s from item %s, value has to be >=0 and <=255" % (adr, item(), item)) + self.logger.warning("Impossible to update address: %s to value %s from item %s, value has to be >=0 and <=255" % (adr, item(), item)) else: - self.logger.debug( - "Updating address: %s to value %s" % (adr, item())) + self.logger.debug("Updating address: %s to value %s" % (adr, item())) self.send_single_value(adr, item()) - - def _update_loop(self): - if not self.alive: - return - if len(self.dmxdata) < 1: - return - self.__ArtDMX_broadcast() - + + def run(self): """ Run method for the plugin """ self.logger.debug("run method called") if self._model._update_cycle > 0: - self.scheduler_add('updateArtnet', self._update_loop, - prio=5, cycle=self._model._update_cycle, offset=2) + self.scheduler_add('updateArtnet', self._update_loop, prio=5, cycle=self._model._update_cycle, offset=2) self.alive = True for it in self._model._items: adr = int(self.get_iattr_value(it.conf, self.ADDR_ATTR)) val = it() if val < 0 or val > 255: - self.logger.warning( - "Impossible to update address: %s to value %s from item %s, value has to be >=0 and <=255" % (adr, val, it)) + self.logger.warning("Impossible to update address: %s to value %s from item %s, value has to be >=0 and <=255" % (adr, val, it)) else: - self.logger.debug( - "Updating address: %s to value %s" % (adr, val)) - self.set_address_value(adr, val) + self.logger.debug("Updating address: %s to value %s" % (adr, vaL)) + set_address_value(adr, val) self.__ArtDMX_broadcast() + + def stop(self): self.s.close() @@ -195,17 +177,24 @@ def __call__(self, var1=None, var2=None): if type(var1) == list and type(var2) == type(None): self.send_frame(var1) + def _update_loop(self): + if not self.alive: + return + if len(self.dmxdata) < 1: + return + self.__ArtDMX_broadcast() + def get_address_value(self, req_adr): adr = int(req_adr) while len(self.dmxdata) < adr: self.dmxdata.append(0) return self.dmxdata[adr - 1] - + def set_address_value(self, req_adr, val): while len(self.dmxdata) < req_adr: self.dmxdata.append(0) - self.dmxdata[req_adr - 1] = val - + self.dmxdata[adr - 1] = value + def send_single_value(self, adr, value): if adr < 1 or adr > 512: self.logger.error("DMX address %s invalid" % adr) @@ -217,7 +206,7 @@ def send_single_value(self, adr, value): def send_frame_starting_at(self, adr, values): if adr < 1 or adr > (512 - len(values) + 1): self.logger.error("DMX address %s with length %s invalid" % - (adr, len(values))) + (adr, len(values))) return while len(self.dmxdata) < (adr + len(values) - 1): @@ -236,6 +225,8 @@ def send_frame(self, dmxframe): self.__ArtDMX_broadcast() def __ArtDMX_broadcast(self): +# self.logger.info("Incomming DMX: %s"%self.dmxdata) + # New Array data = [] # Fix ID 7byte + 0x00 data.append("Art-Net\x00") @@ -265,9 +256,9 @@ def __ArtDMX_broadcast(self): result = result + token.encode('utf-8', 'ignore') except: # Handels all bytes result = result + token - # data = "".join(data) +# data = "".join(data) # debug - # self.logger.info("Outgoing Artnet:%s"%(':'.join(x.encode('hex') for x in data))) +# self.logger.info("Outgoing Artnet:%s"%(':'.join(x.encode('hex') for x in data))) # send over ethernet self.s.sendto(result, (self._model._host, self._model._port)) @@ -283,8 +274,7 @@ def init_webinterface(self): except: self.mod_http = None if self.mod_http == None: - self.logger.error( - "Plugin '{}': Not initializing the web interface".format(self.get_shortname())) + self.logger.error("Plugin '{}': Not initializing the web interface".format(self.get_shortname())) return False # set application configuration for cherrypy @@ -312,13 +302,14 @@ def init_webinterface(self): # Webinterface of the plugin # ------------------------------------------ +import cherrypy class WebInterface(SmartPluginWebIf): def __init__(self, webif_dir, plugin): """ Initialization of instance of class WebInterface - + :param webif_dir: directory where the webinterface of the plugin resides :param plugin: instance of the plugin :type webif_dir: str @@ -342,8 +333,8 @@ def index(self, reload=None): tabcount = 1 tmpl = self.tplenv.get_template('index.html') - return tmpl.render(plugin_shortname=self.plugin.get_shortname(), + return tmpl.render(plugin_shortname=self.plugin.get_shortname(), plugin_version=self.plugin.get_version(), - plugin_info=self.plugin.get_info(), + plugin_info=self.plugin.get_info(), tabcount=tabcount, p=self.plugin) diff --git a/artnet/plugin.yaml b/artnet/plugin.yaml index 47da3fdd6..6683c2158 100755 --- a/artnet/plugin.yaml +++ b/artnet/plugin.yaml @@ -37,6 +37,14 @@ parameters: description: de: 'Gibt an, wie oft (Sekunden) die aktuelle Lichtsituation neu verschickt werden soll (optional, 0 deaktiviert dies)' en: 'Defines Refresh-cycle for re-sending the current setting in seconds, 0 deactivates this' + artnet_universe: + type: int + default: 0 + description: + de: 'Gibt das Art-Net Universe an' + en: 'Specifies the Art-Net Universe to use' + valid_min: 0 + valid_max: 15 artnet_net: type: int default: 0 @@ -53,15 +61,6 @@ parameters: en: 'Specifies the Art-Net Sub-Net to use' valid_min: 0 valid_max: 15 - artnet_universe: - type: int - default: 0 - description: - de: 'Gibt das Art-Net Universe an' - en: 'Specifies the Art-Net Universe to use' - valid_min: 0 - valid_max: 15 - item_attributes: artnet_address: @@ -75,55 +74,7 @@ item_attributes: logic_parameters: NONE -plugin_functions: - send_single_value: - type: void - description: - de: "Sendet einen einzelnen DMX Kanalwert" - en: "Sends a single DMX Channel-Value" - parameters: - adr: - type: num - valid_min: 1 - valid_max: 512 - description: - de: "Zu adressierender DMX-Kanal" - en: "DMX Channel to be addressed" - value: - type: num - valid_min: 0 - valid_max: 255 - description: - de: "Wert auf den der Kanal gesetzt werden soll" - en: "Value this Channel is to be set to" - send_frame_starting_at: - type: void - description: - de: "Sendet einen Satz an DMX Kanalwerten, beginnend bei einer Startadresse" - en: "Sends a set of DMX-channel-value starting from a certain address" - parameters: - adr: - type: num - valid_min: 1 - valid_max: 512 - description: - de: "Erster zu adressierender DMX-Kanal" - en: "First DMX-channel to be addressed" - values: - type: list(num) - description: - de: "Werte die ab dem Startkanal gesetzt werden sollen" - en: "Values to be transferred" - send_frame: - type: void - description: - de: "Sendet einen vollständingen DMX-Frame" - en: "Sends a full DMX-Frame" - parameters: - values: - type: list(num) - description: - de: "Wertemenge" - en: "Values to be transferred" +plugin_functions: NONE + # Definition of function interface of the plugin item_structs: NONE diff --git a/artnet/webif/templates/index.html b/artnet/webif/templates/index.html index ca68db485..fb7bab96c 100644 --- a/artnet/webif/templates/index.html +++ b/artnet/webif/templates/index.html @@ -11,20 +11,20 @@     - {{ _('Netz') }} - {{ p._model.get_net() }} + {{ _('Universum') }} + {{ p._model.get_universe() }} {{ _('Host') }} {{ p._model.get_ip() }} - {{ _('Subnetz') }} - {{ p._model.get_subnet() }} + {{ _('Netz') }} + {{ p._model.get_net() }} {{ _('Port') }} {{ p._model.get_port() }} - {{ _('Universum') }} - {{ p._model.get_universe() }} + {{ _('Subnetz') }} + {{ p._model.get_subnet() }} From 19caac49af9020d5f795f34cf7d8a5bd8bbda283 Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Wed, 29 May 2019 11:52:25 +0200 Subject: [PATCH 064/200] Revert "Update __init__.py" This reverts commit 0870327265ae2d7a12c49f95b48a2672704cac69. --- artnet/__init__.py | 29 ++++++++--------------------- 1 file changed, 8 insertions(+), 21 deletions(-) diff --git a/artnet/__init__.py b/artnet/__init__.py index 5434ee167..b9d5144dc 100755 --- a/artnet/__init__.py +++ b/artnet/__init__.py @@ -153,20 +153,9 @@ def run(self): if self._model._update_cycle > 0: self.scheduler_add('updateArtnet', self._update_loop, prio=5, cycle=self._model._update_cycle, offset=2) self.alive = True - for it in self._model._items: - adr = int(self.get_iattr_value(it.conf, self.ADDR_ATTR)) - val = it() - if val < 0 or val > 255: - self.logger.warning("Impossible to update address: %s to value %s from item %s, value has to be >=0 and <=255" % (adr, val, it)) - else: - self.logger.debug("Updating address: %s to value %s" % (adr, vaL)) - set_address_value(adr, val) - self.__ArtDMX_broadcast() - - def stop(self): - self.s.close() + self.close() self.alive = False def __call__(self, var1=None, var2=None): @@ -180,9 +169,7 @@ def __call__(self, var1=None, var2=None): def _update_loop(self): if not self.alive: return - if len(self.dmxdata) < 1: - return - self.__ArtDMX_broadcast() + self.logger.debug("Update Loop") def get_address_value(self, req_adr): adr = int(req_adr) @@ -190,17 +177,14 @@ def get_address_value(self, req_adr): self.dmxdata.append(0) return self.dmxdata[adr - 1] - def set_address_value(self, req_adr, val): - while len(self.dmxdata) < req_adr: - self.dmxdata.append(0) - self.dmxdata[adr - 1] = value - def send_single_value(self, adr, value): if adr < 1 or adr > 512: self.logger.error("DMX address %s invalid" % adr) return - set_address_value(adr, value) + while len(self.dmxdata) < adr: + self.dmxdata.append(0) + self.dmxdata[adr - 1] = value self.__ArtDMX_broadcast() def send_frame_starting_at(self, adr, values): @@ -262,6 +246,9 @@ def __ArtDMX_broadcast(self): # send over ethernet self.s.sendto(result, (self._model._host, self._model._port)) + def close(self): + self.s.close() + def init_webinterface(self): """" Initialize the web interface for this plugin From 2a177e96e242e58e9c1009be4c5cf41938fa7220 Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Wed, 29 May 2019 11:52:30 +0200 Subject: [PATCH 065/200] Revert "Update plugin.yaml" This reverts commit 30e14af9f6d8835af3abf87c91551a743b9e7d8c. --- artnet/plugin.yaml | 17 ++++------------- 1 file changed, 4 insertions(+), 13 deletions(-) diff --git a/artnet/plugin.yaml b/artnet/plugin.yaml index 6683c2158..dad853535 100755 --- a/artnet/plugin.yaml +++ b/artnet/plugin.yaml @@ -9,13 +9,13 @@ plugin: tester: ohinckel state: ready keywords: dmx -# documentation: https://github.com/smarthomeNG/plugins/blob/develop/mqtt/README.md # url of documentation (wiki) page +# documentation: https://github.com/smarthomeNG/plugins/blob/develop/mqtt/README.md # url of documentation (wiki) page + version: 1.5.1 # Plugin version sh_minversion: 1.5.1 # minimum shNG version to use this plugin -# sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) +# sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) multi_instance: True - restartable: True # Plugin can be restarted safely, however, the data is not re-applied from items to the DMX-Values classname: ArtNet # class containing the plugin parameters: @@ -66,15 +66,6 @@ item_attributes: artnet_address: type: int mandatory: True - valid_min: 1 - valid_max: 255 description: de: 'Definition der DMX Adresse' - en: 'Defition of DMX address' - -logic_parameters: NONE - -plugin_functions: NONE - # Definition of function interface of the plugin - -item_structs: NONE + en: 'Defition of DMX address' \ No newline at end of file From c2c6ab25d9eb66a21905ab83213cc5a0c8eed64b Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Wed, 29 May 2019 11:52:37 +0200 Subject: [PATCH 066/200] Revert "Update README.md" This reverts commit 7eeb811ad7b8df25ef43490729eb8a1c007f41a1. --- artnet/README.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/artnet/README.md b/artnet/README.md index 51f058d38..ae053e16f 100644 --- a/artnet/README.md +++ b/artnet/README.md @@ -4,7 +4,7 @@ You need a device understanding Artnet. I suggest to use the software OLA http://www.opendmx.net/index.php/Open_Lighting_Architecture to translate the ArtNet packets into DMX Signals. -Alternatively you can use any Art-Net to DMX Adapter. (Tested with https://www.ulrichradig.de/home/index.php/dmx/art-net-box) +Alternatively you can use any Art-Net to DMX Adapter OLA supports most USB -> DMX Adapters available at the moment. ## Supported Hardware @@ -22,19 +22,19 @@ artnet1: artnet_universe: 0 artnet_net: 0 artnet_subnet: 0 - ip: 192.168.0.99 + ip: 192.168.159.216 port: 6454 update_cycle: 120 instance: keller ``` #### Attributes - * `artnet_universe`: Art-Net Universe, default: 0 - * `artnet_net`: Art-Net Net, default: 0 - * `artnet_subnet`: Art-Net Subnet, default: 0 - * `ip`: IP-address of your Art-Net node, mandatory, no default - * `port`: Port to reach your Art-Net node, defaul 6454 - * `update_cycle`: timeperiod between two update cycles, default 0 for no update. If a cycle is provided the current channel-settings is updated to Art-Net every n-th second. + * `artnet_universe`: Optional login information + * `artnet_net`: Required login information + * `artnet_subnet`: Hostname or ip address of the FritzDevice. + * `ip`: Port of the FritzDevice, typically 49433 for https or 49000 for http + * `port`: True or False => True will add "https", False "http" to the URLs in the plugin + * `update_cycle`: timeperiod between two update cycles. Default is 300 seconds. * `instance`: Name of this plugin instance (e.g. above: keller) ### items.yaml From e252890a86a51852c0af4b2875497ca8c12daab3 Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Wed, 29 May 2019 11:52:47 +0200 Subject: [PATCH 067/200] Revert "Rework of Art-Net Plugin" This reverts commit b65f2262ed1a5ad1fb7b1c4beaaa9df8453db95c. --- artnet/README.md | 56 ++---- artnet/__init__.py | 222 ++---------------------- artnet/plugin.yaml | 79 +++++---- artnet/webif/static/img/plugin_logo.png | Bin 72259 -> 0 bytes artnet/webif/templates/index.html | 68 -------- 5 files changed, 69 insertions(+), 356 deletions(-) delete mode 100644 artnet/webif/static/img/plugin_logo.png delete mode 100644 artnet/webif/templates/index.html diff --git a/artnet/README.md b/artnet/README.md index ae053e16f..31c6bdfac 100644 --- a/artnet/README.md +++ b/artnet/README.md @@ -4,7 +4,6 @@ You need a device understanding Artnet. I suggest to use the software OLA http://www.opendmx.net/index.php/Open_Lighting_Architecture to translate the ArtNet packets into DMX Signals. -Alternatively you can use any Art-Net to DMX Adapter OLA supports most USB -> DMX Adapters available at the moment. ## Supported Hardware @@ -15,43 +14,20 @@ OLA supports most USB -> DMX Adapters available at the moment. ### plugin.yaml -```yaml -artnet1: - class_name: ArtNet - class_path: plugins.artnet - artnet_universe: 0 - artnet_net: 0 - artnet_subnet: 0 - ip: 192.168.159.216 - port: 6454 - update_cycle: 120 - instance: keller ``` - -#### Attributes - * `artnet_universe`: Optional login information - * `artnet_net`: Required login information - * `artnet_subnet`: Hostname or ip address of the FritzDevice. - * `ip`: Port of the FritzDevice, typically 49433 for https or 49000 for http - * `port`: True or False => True will add "https", False "http" to the URLs in the plugin - * `update_cycle`: timeperiod between two update cycles. Default is 300 seconds. - * `instance`: Name of this plugin instance (e.g. above: keller) +dmx1: + class_name: ArtNet + class_path: plugins.artnet + artnet_subnet: 0 + artnet_net: 0 + artnet_universe: 0 + ip: 192.168.1.123 + port: 6454 +``` ### items.yaml -#### artnet_address -This attribute assigns an item to the respective artnet-address (DMX channel) - -### Example: -```yaml - lightbar: - red: - artnet_address@keller: 1 - green: - artnet_address@keller: 2 - blue: - artnet_address@keller: 3 -``` +Not needed yet. ### logic.yaml Notice: First DMX channel is 1! Not 0! @@ -59,22 +35,22 @@ Notice: First DMX channel is 1! Not 0! To send DMX Data to the universe set in plugin.yaml you have 3 possibilities: #### 1) Send single value -``sh.artnet1(, )`` +``sh.dmx1(, )`` Sets DMX_CHAN to value DMX_VALUE. -Example: ``sh.artnet1(12,255)`` +Example: ``sh.dmx1(12,255)`` If channels 1-11 are already set, they will not change. If channels 1-11 are not set till now, the will be set to value 0. This is needed because on a DMX bus you can not set just one specific channel. You have to begin at first channel setting your values. #### 2) Send a list of values starting at channel -``sh.artnet1(, )`` +``sh.dmx1(, )`` Sends to DMX Bus starting at Example: -``sh.artnet1(10,[0,33,44,55,99])`` +``sh.dmx1(10,[0,33,44,55,99])`` If channels 1-9 are already set, they will not change. If channels 1-9 are not set till now, the will be set to value 0. This is needed because on a DMX bus you can not set just one specific channel. @@ -83,7 +59,7 @@ Values in square brackets will be written to channel (10-14) #### 3) Send a list of values -``sh.artnet1()`` +``sh.dmx1()`` Sends to DMX Bus starting at channel 1 @@ -91,5 +67,5 @@ This is nearly the same as 2) but without starting channel. Example: -``sh.artnet1([0,33,44,55,99])`` +``sh.dmx1([0,33,44,55,99])`` Values in Square brackets will be written to channel (1-5) diff --git a/artnet/__init__.py b/artnet/__init__.py index b9d5144dc..a7966feee 100755 --- a/artnet/__init__.py +++ b/artnet/__init__.py @@ -2,7 +2,6 @@ # vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab ######################################################################### # Copyright 2013- mode2k mode@gmx.co.uk -# Extended 2019 jentz1986 ######################################################################### # This file is part of SmartHomeNG # https://github.com/smarthomeNG/smarthome @@ -26,137 +25,32 @@ import socket import struct -from lib.model.smartplugin import * -from lib.module import Modules +from lib.model.smartplugin import SmartPlugin -class ArtNet_Model: - - def __init__(self, host, port, universe, net, subnet, instance_name, update_cycle): - self._host = host - self._port = port - - self._universe = universe - self._net = net - self._subnet = subnet - self._instance_name = instance_name - self._update_cycle = update_cycle - - self._items = [] - - def get_ip(self): - """ - Returns the IP of the ArtNet node - - :return: hostname of the device, as set in plugin.conf - """ - return self._host - - def get_port(self): - """ - Returns the port of the ArtNet node - - :return: port of the device, as set in plugin.conf - """ - return self._port - - def get_universe(self): - """ - Returns the Universe of the ArtNet node - - :return: Universe of the device, as set in plugin.conf - """ - return self._universe - - def get_net(self): - """ - Returns the net of the ArtNet node - - :return: net of the device, as set in plugin.conf - """ - return self._net - - def get_subnet(self): - """ - Returns the Subnet of the ArtNet node - - :return: Subnet of the device, as set in plugin.conf - """ - return self._subnet - - def get_items(self): - """ - Returns added items - - :return: array of items held by the device - """ - return self._items class ArtNet(SmartPlugin): - ALLOW_MULTIINSTANCE = True - PLUGIN_VERSION = "1.5.1" - ADDR_ATTR = 'artnet_address' + ALLOW_MULTIINSTANCE = False + PLUGIN_VERSION = '1.3.0' packet_counter = 1 dmxdata = [0, 0] - - def __init__(self, sh, *args, **kwargs): - """ - Initalizes the plugin. The parameters describe for this method are pulled from the entry in plugin.conf. - """ - # self.logger = logging.getLogger(__name__) - self.logger.info('Init ArtNet Plugin') - - self._model = ArtNet_Model(self.get_parameter_value('ip') or '127.0.0.1', - port=int(self.get_parameter_value('port') or 6454), - universe=int(self.get_parameter_value('artnet_universe') or 0), - net=int(self.get_parameter_value('artnet_net') or 0), - subnet=int(self.get_parameter_value('artnet_subnet') or 0), - instance_name=self.get_instance_name(), - update_cycle=int(self.get_parameter_value('update_cycle') or 0), - ) + def __init__(self, smarthome, artnet_net, artnet_subnet, artnet_universe, ip, port): + self.logger = logging.getLogger(__name__) self.s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - self.init_webinterface() - - self.logger.debug("Init ArtNet Plugin for %s done" % self._model._instance_name) + self.net = int(artnet_net) + self.subnet = int(artnet_subnet) + self.universe = int(artnet_universe) + self.ip = ip + self.port = int(port) + self.logger.debug("Init ArtNet Plugin done") - def parse_item(self, item): - # items bound to this artnet-subnet - if self.has_iattr(item.conf, self.ADDR_ATTR): - adr = int(self.get_iattr_value(item.conf, self.ADDR_ATTR)) - if adr > 0 and adr < 513: - while len(self.dmxdata) < (adr - 1): - self.dmxdata.append(0) - - self.logger.debug("Bound address %s to item %s" % (adr, item)) - self._model._items.append(item) - return self.update_item - else: - self.logger.error("Invalid address %s in item %s" % (adr, item)) - - def update_item(self, item, caller=None, source=None, dest=None): - if caller != 'ArtNet': - adr = int(self.get_iattr_value(item.conf, self.ADDR_ATTR)) - if item() < 0 or item() > 255: - self.logger.warning("Impossible to update address: %s to value %s from item %s, value has to be >=0 and <=255" % (adr, item(), item)) - else: - self.logger.debug("Updating address: %s to value %s" % (adr, item())) - self.send_single_value(adr, item()) - - def run(self): - """ - Run method for the plugin - """ - self.logger.debug("run method called") - if self._model._update_cycle > 0: - self.scheduler_add('updateArtnet', self._update_loop, prio=5, cycle=self._model._update_cycle, offset=2) - self.alive = True + pass def stop(self): self.close() - self.alive = False def __call__(self, var1=None, var2=None): if type(var1) == int and type(var2) == int: @@ -166,17 +60,6 @@ def __call__(self, var1=None, var2=None): if type(var1) == list and type(var2) == type(None): self.send_frame(var1) - def _update_loop(self): - if not self.alive: - return - self.logger.debug("Update Loop") - - def get_address_value(self, req_adr): - adr = int(req_adr) - while len(self.dmxdata) < adr: - self.dmxdata.append(0) - return self.dmxdata[adr - 1] - def send_single_value(self, adr, value): if adr < 1 or adr > 512: self.logger.error("DMX address %s invalid" % adr) @@ -227,7 +110,7 @@ def __ArtDMX_broadcast(self): data.append(struct.pack('B', 0)) # Artnet source address data.append( - struct.pack('H', len(self.dmxdata))) # DMX Data @@ -244,84 +127,7 @@ def __ArtDMX_broadcast(self): # debug # self.logger.info("Outgoing Artnet:%s"%(':'.join(x.encode('hex') for x in data))) # send over ethernet - self.s.sendto(result, (self._model._host, self._model._port)) + self.s.sendto(result, (self.ip, self.port)) def close(self): self.s.close() - - def init_webinterface(self): - """" - Initialize the web interface for this plugin - - This method is only needed if the plugin is implementing a web interface - """ - try: - self.mod_http = Modules.get_instance().get_module( - 'http') # try/except to handle running in a core version that does not support modules - except: - self.mod_http = None - if self.mod_http == None: - self.logger.error("Plugin '{}': Not initializing the web interface".format(self.get_shortname())) - return False - - # set application configuration for cherrypy - webif_dir = self.path_join(self.get_plugin_dir(), 'webif') - config = { - '/': { - 'tools.staticdir.root': webif_dir, - }, - '/static': { - 'tools.staticdir.on': True, - 'tools.staticdir.dir': 'static' - } - } - - # Register the web interface as a cherrypy app - self.mod_http.register_webif(WebInterface(webif_dir, self), - self.get_shortname(), - config, - self.get_classname(), self.get_instance_name(), - description='') - - return True - -# ------------------------------------------ -# Webinterface of the plugin -# ------------------------------------------ - -import cherrypy - -class WebInterface(SmartPluginWebIf): - - def __init__(self, webif_dir, plugin): - """ - Initialization of instance of class WebInterface - - :param webif_dir: directory where the webinterface of the plugin resides - :param plugin: instance of the plugin - :type webif_dir: str - :type plugin: object - """ - self.logger = logging.getLogger(__name__) - self.webif_dir = webif_dir - self.plugin = plugin - - self.tplenv = self.init_template_environment() - - @cherrypy.expose - def index(self, reload=None): - """ - Build index.html for cherrypy - - Render the template and return the html file to be delivered to the browser - - :return: contents of the template after beeing rendered - """ - tabcount = 1 - - tmpl = self.tplenv.get_template('index.html') - return tmpl.render(plugin_shortname=self.plugin.get_shortname(), - plugin_version=self.plugin.get_version(), - plugin_info=self.plugin.get_info(), - tabcount=tabcount, - p=self.plugin) diff --git a/artnet/plugin.yaml b/artnet/plugin.yaml index dad853535..8b6594c8a 100755 --- a/artnet/plugin.yaml +++ b/artnet/plugin.yaml @@ -5,46 +5,21 @@ plugin: description: de: 'Ansteuerung der meisten USB/Netwerk DMX Adapter' en: 'Can control most of USB/network DMX adapters' - maintainer: mode2k, jentz1986 + maintainer: mode2k tester: ohinckel - state: ready + state: qa-passed keywords: dmx # documentation: https://github.com/smarthomeNG/plugins/blob/develop/mqtt/README.md # url of documentation (wiki) page - - version: 1.5.1 # Plugin version - sh_minversion: 1.5.1 # minimum shNG version to use this plugin -# sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) - multi_instance: True - classname: ArtNet # class containing the plugin + version: 1.3.0 # Plugin version + sh_minversion: 1.3 # minimum shNG version to use this plugin +# sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) + multi_instance: False + restartable: unknown + classname: ArtNet # class containing the plugin parameters: # Definition of parameters to be configured in etc/plugin.yaml - ip: - type: ip - description: - de: 'Gibt die Adresse des angesprochenen Art-Net Node an' - en: 'Specifies the address of a Art-Net node' - port: - type: int - valid_min: 0 - description: - de: 'Gibt den Port des angesprochenen Art-Net Node an' - en: 'Specifies the port of a Art-Net node' - update_cycle: - type: int - valid_min: 0 - description: - de: 'Gibt an, wie oft (Sekunden) die aktuelle Lichtsituation neu verschickt werden soll (optional, 0 deaktiviert dies)' - en: 'Defines Refresh-cycle for re-sending the current setting in seconds, 0 deactivates this' - artnet_universe: - type: int - default: 0 - description: - de: 'Gibt das Art-Net Universe an' - en: 'Specifies the Art-Net Universe to use' - valid_min: 0 - valid_max: 15 artnet_net: type: int default: 0 @@ -60,12 +35,36 @@ parameters: de: 'Gibt das Art-Net Sub-Net an' en: 'Specifies the Art-Net Sub-Net to use' valid_min: 0 - valid_max: 15 - -item_attributes: - artnet_address: + valid_max: 15 + artnet_universe: type: int - mandatory: True + default: 0 description: - de: 'Definition der DMX Adresse' - en: 'Defition of DMX address' \ No newline at end of file + de: 'Gibt das Art-Net Universe an' + en: 'Specifies the Art-Net Universe to use' + valid_min: 0 + valid_max: 15 + ip: + type: ip + description: + de: 'Gibt die Adresse einer Art-Net Node an' + en: 'Specifies the address of a Art-Net node' + port: + type: int + valid_min: 0 + description: + de: 'Gibt den Port einer Art-Net Node an' + en: 'Specifies the port of a Art-Net node' + +item_attributes: NONE + # Definition of item attributes defined by this plugin + +item_structs: NONE + # Definition of item-structure templates for this plugin + +logic_parameters: NONE + # Definition of logic parameters defined by this plugin + +plugin_functions: NONE + # Definition of function interface of the plugin + diff --git a/artnet/webif/static/img/plugin_logo.png b/artnet/webif/static/img/plugin_logo.png deleted file mode 100644 index 2709230b4edb5bc51ef5cdb91529b7f8156fcd86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 72259 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 Sb!#rpbKAo92HM;!@&5s_*pwas diff --git a/artnet/webif/templates/index.html b/artnet/webif/templates/index.html deleted file mode 100644 index fb7bab96c..000000000 --- a/artnet/webif/templates/index.html +++ /dev/null @@ -1,68 +0,0 @@ -{% extends "base_plugin.html" %} -{% set tab1title = _('Artnet Items') %} -{% set language = p._sh.get_defaultlanguage() %} -{% if language not in ['en','de'] %} -{% set language = 'en' %} -{% endif %} - -{% block headtable %} - - - - - - - - - - - - - - - - - - - - - -
  {{ _('Universum') }}{{ p._model.get_universe() }}
{{ _('Host') }}{{ p._model.get_ip() }}{{ _('Netz') }}{{ p._model.get_net() }}
{{ _('Port') }}{{ p._model.get_port() }}{{ _('Subnetz') }}{{ p._model.get_subnet() }}
-{% endblock %} -{% block bodytab1 %} -

-{% endblock %} \ No newline at end of file From 7e0781a7504ff63a2e3e1fcebb71781ccb22c19c Mon Sep 17 00:00:00 2001 From: Bernd Meiners Date: Fri, 31 May 2019 14:51:11 +0200 Subject: [PATCH 068/200] set_child_item more precisely --- indego/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/indego/__init__.py b/indego/__init__.py index 892d9786b..9f15959e0 100644 --- a/indego/__init__.py +++ b/indego/__init__.py @@ -262,10 +262,10 @@ def set_childitem(self, itemname, value ): :return: """ item = self.get_sh().return_item(self.parent_item + '.' + itemname) - if item: + if item is not None: item(value, 'indego_plugin') else: - self.logger.warning("Could not set item '{}' to '{}'".format(self.parent_item+itemname, value)) + self.logger.warning("Could not set item '{}.{}' to '{}'".format(self.parent_item, itemname, value)) def get_url(self, url, contextid=None, timeout=40, method='GET'): headers = {'Content-Type': 'application/json'} From d23da1a37d20c0c82d1c4ae9ef02ad8ec92290f9 Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Sat, 1 Jun 2019 16:57:18 +0200 Subject: [PATCH 069/200] Major improvements - Item Autogenerator created (chaotic sorting) - Performance optimziation (less requests at the controller) - Fixed missing site parameter --- unifi/.gitignore | 100 +----------- unifi/__init__.py | 268 ++++++++++++++++++++++--------- unifi/plugin.yaml | 8 + unifi/ubiquiti/unifi.py | 224 ++++++++++++++++++-------- unifi/webif/templates/index.html | 7 +- 5 files changed, 364 insertions(+), 243 deletions(-) diff --git a/unifi/.gitignore b/unifi/.gitignore index 6adb9d2be..ec8128047 100644 --- a/unifi/.gitignore +++ b/unifi/.gitignore @@ -3,106 +3,10 @@ __pycache__/ *.py[cod] *$py.class -# C extensions -*.so - -# Distribution / packaging -.Python -build/ -develop-eggs/ -dist/ -downloads/ -eggs/ -.eggs/ -lib/ -lib64/ -parts/ -sdist/ -var/ -wheels/ -*.egg-info/ -.installed.cfg -*.egg -MANIFEST - -# PyInstaller -# Usually these files are written by a python script from a template -# before PyInstaller builds the exe, so as to inject date/other infos into it. -*.manifest -*.spec - -# Installer logs -pip-log.txt -pip-delete-this-directory.txt - -# Unit test / coverage reports -htmlcov/ -.tox/ -.coverage -.coverage.* -.cache -nosetests.xml -coverage.xml -*.cover -.hypothesis/ -.pytest_cache/ - -# Translations -*.mo -*.pot - # Django stuff: *.log local_settings.py db.sqlite3 -# Flask stuff: -instance/ -.webassets-cache - -# Scrapy stuff: -.scrapy - -# Sphinx documentation -docs/_build/ - -# PyBuilder -target/ - -# Jupyter Notebook -.ipynb_checkpoints - -# pyenv -.python-version - -# celery beat schedule file -celerybeat-schedule - -# SageMath parsed files -*.sage.py - -# Environments -.env -.venv -env/ -venv/ -ENV/ -env.bak/ -venv.bak/ - -# Spyder project settings -.spyderproject -.spyproject - -# Rope project settings -.ropeproject - -# mkdocs documentation -/site - -# mypy -.mypy_cache/ -.idea/ -config.ini -unifibot.session -wifi.py +# Visual Studio Code +.vscode/ \ No newline at end of file diff --git a/unifi/__init__.py b/unifi/__init__.py index c16f649a6..d749f2e46 100644 --- a/unifi/__init__.py +++ b/unifi/__init__.py @@ -32,9 +32,36 @@ from lib.model.smartplugin import * from lib.network import Network from plugins.unifi.ubiquiti.unifi import API as UniFiAPI +import ruamel.yaml as yaml import json +class UniFiConst(object): + PARAMETER_URL = 'unifi_controller_url' + PARAMETER_USER = 'unifi_user' + PARAMETER_PWD = 'unifi_password' + PARAMETER_SITE_ID = 'unifi_site_id' + + ATTR_TYPE = 'unifi_type' + TYPE_CL_PRESENT = 'client_present' + TYPE_CL_IP = 'client_ip' + TYPE_CL_HOSTNAME = 'client_hostname' + TYPE_CL_AT_AP = 'client_present_at_ap' + TYPE_SW_PORT_ENABLED = 'switch_port_enabled' + TYPE_SW_PORT_PROFILE = 'switch_port_profile' + TYPE_AP_ENABLED = 'ap_enabled' + TYPE_DV_IP = 'device_ip' + TYPE_DV_NAME = 'device_name' + + ATTR_MAC = 'mac' + ATTR_SW_MAC = 'unifi_switch_mac' + ATTR_DV_MAC = 'unifi_device_mac' + ATTR_AP_MAC = 'unifi_ap_mac' + ATTR_SW_PORT_NO = 'unifi_switch_port_no' + ATTR_SW_PORT_PROF_ON = 'unifi_switch_port_profile_on' + ATTR_SW_PORT_PROF_OFF = 'unifi_switch_port_profile_off' + + class UniFiItemIssue(object): def __init__(self, itemPath: str): self.issues = [] @@ -50,7 +77,8 @@ def get_issues(self): class UniFiControllerClientModel(): - def __init__(self, api): + + def __init__(self, api: UniFiAPI): self._items = [] self._items_with_issues = {} self._api = api @@ -93,6 +121,110 @@ def get_items(self, filter=None): to_ret.append(i) return to_ret + def _get_device_node_item(self, node_data, parent_type=""): + n = node_data['node'] + node_key = re.sub('[^0-9a-zA-Z_]+', '_', node_data['node']['key'].lower()).replace("__", "_") + node_body = {} + + if n['type'] == "wired_client": + node_body[UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_CL_PRESENT + node_body['mac'] = n['mac'] + node_body['type'] = 'bool' + node_body['hostname'] = {} + node_body['hostname'][UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_CL_HOSTNAME + node_body['hostname']['type'] = 'str' + node_body['ip'] = {} + node_body['ip'][UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_CL_IP + node_body['ip']['type'] = 'str' + elif n['type'] == 'uap': + node_body[UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_AP_ENABLED + node_body[UniFiConst.ATTR_AP_MAC] = n['mac'] + node_body['type'] = 'bool' + node_body['ap_name'] = {} + node_body['ap_name']['unifi_type'] = UniFiConst.TYPE_DV_NAME + node_body['ap_name']['type'] = 'str' + node_body['ip'] = {} + node_body['ip'][UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_DV_IP + node_body['ip']['type'] = 'str' + elif n['type'] == 'usw': + node_body[UniFiConst.ATTR_SW_MAC] = n['mac'] + node_body['type'] = 'foo' + node_body['switch_name'] = {} + node_body['switch_name'][UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_DV_NAME + node_body['switch_name']['type'] = 'str' + node_body['ip'] = {} + node_body['ip'][UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_DV_IP + node_body['ip']['type'] = 'str' + + if parent_type == 'usw': + node_body[UniFiConst.ATTR_SW_PORT_NO] = n['uplink_remote_port'] + + if n['type'] == 'usw': + portmap = {} + + for child in node_data['children']: + child_data = self._get_device_node_item(child, n['type']) + port_no = child_data[1][UniFiConst.ATTR_SW_PORT_NO] + if not portmap.__contains__(port_no): + portmap[port_no] = [] + portmap[port_no].append(child_data) + + for port_no in portmap: + if len(portmap[port_no]) == 1: + single_dev_key = portmap[port_no][0][0] + node_body[single_dev_key] = portmap[port_no][0][1] + node_body[single_dev_key]['port_enabled'] = {} + node_body[single_dev_key]['port_enabled'][UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_SW_PORT_ENABLED + node_body[single_dev_key]['port_enabled'][UniFiConst.ATTR_SW_PORT_PROF_OFF] = 'Disabled' + node_body[single_dev_key]['port_enabled'][UniFiConst.ATTR_SW_PORT_PROF_ON] = 'All' + node_body[single_dev_key]['port_enabled'][UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_SW_PORT_ENABLED + node_body[single_dev_key]['port_enabled']['type'] = 'bool' + else: + attached_clnts = {} + for ch in portmap[port_no]: + ch[1].__delitem__(UniFiConst.ATTR_SW_PORT_NO) + attached_clnts[ch[0]] = ch[1] + + attached_clnts[UniFiConst.ATTR_SW_PORT_NO] = port_no + attached_clnts['port_enabled'] = {} + attached_clnts['port_enabled'][UniFiConst.ATTR_SW_PORT_PROF_OFF] = 'Disabled' + attached_clnts['port_enabled'][UniFiConst.ATTR_SW_PORT_PROF_ON] = 'All' + attached_clnts['port_enabled'][UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_SW_PORT_ENABLED + attached_clnts['port_enabled']['type'] = 'bool' + node_body["non_unifi_switch_at_port_{}".format(port_no)] = attached_clnts + else: + for child in node_data['children']: + child_data = self._get_device_node_item(child, n['type']) + node_body[child_data[0]] = child_data[1] + + return (node_key, node_body) + + def get_item_hierarchy(self): + hr = self._api.get_device_hierarchy() + model = {} + model['unifi_network'] = {} + model['unifi_network']['wifi_clients'] = {} + for wlc_data in hr['wireless_clients']: + wlc_key = ("client_" + wlc_data['name']).lower().replace('.', '_').replace('-', '_') + wlc_body = {} + wlc_body['hostname'] = {} + wlc_body['hostname'][UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_CL_HOSTNAME + wlc_body['hostname']['type'] = 'str' + wlc_body['ip'] = {} + wlc_body['ip'][UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_CL_IP + wlc_body['ip']['type'] = 'str' + wlc_body[UniFiConst.ATTR_MAC] = wlc_data['mac'] + wlc_body[UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_CL_PRESENT + wlc_body['type'] = 'bool' + model['unifi_network']['wifi_clients'][wlc_key] = wlc_body + + model['unifi_network']['devices'] = {} + for dev in hr['devices']: + child_data = self._get_device_node_item(dev) + model['unifi_network']['devices'][child_data[0]] = child_data[1] + + return yaml.dump(model, Dumper=yaml.SafeDumper, indent=4, width=768, allow_unicode=True, default_flow_style=False) + class UniFiControllerClient(SmartPlugin): """ @@ -102,29 +234,6 @@ class UniFiControllerClient(SmartPlugin): PLUGIN_VERSION = '1.6.0' - PARAMETER_URL = 'unifi_controller_url' - PARAMETER_USER = 'unifi_user' - PARAMETER_PWD = 'unifi_password' - - ATTR_TYPE = 'unifi_type' - TYPE_CL_PRESENT = 'client_present' - TYPE_CL_IP = 'client_ip' - TYPE_CL_HOSTNAME = 'client_hostname' - TYPE_CL_AT_AP = 'client_present_at_ap' - TYPE_SW_PORT_ENABLED = 'switch_port_enabled' - TYPE_SW_PORT_PROFILE = 'switch_port_profile' - TYPE_AP_ENABLED = 'ap_enabled' - TYPE_DV_IP = 'device_ip' - TYPE_DV_NAME = 'device_name' - - ATTR_MAC = 'mac' - ATTR_SWITCH_MAC = 'unifi_switch_mac' - ATTR_DV_MAC = 'unifi_device_mac' - ATTR_AP_MAC = 'unifi_ap_mac' - ATTR_SWITCH_PORT_NO = 'unifi_switch_port_no' - ATTR_SWITCH_PORT_PROFILE_ON = 'unifi_switch_port_profile_on' - ATTR_SWITCH_PORT_PROFILE_OFF = 'unifi_switch_port_profile_off' - def __init__(self, sh, *args, **kwargs): """ Initalizes the plugin. The parameters describe for this method are pulled from the entry in plugin.conf. @@ -155,12 +264,16 @@ def __init__(self, sh, *args, **kwargs): # return # get the parameters for the plugin (as defined in metadata plugin.yaml): - self._unifi_controller_url = self.get_parameter_value(self.PARAMETER_URL) - self._unifi_user = self.get_parameter_value(self.PARAMETER_USER) - self._unifi_password = self.get_parameter_value(self.PARAMETER_PWD) + self._unifi_controller_url = self.get_parameter_value(UniFiConst.PARAMETER_URL) + self._unifi_user = self.get_parameter_value(UniFiConst.PARAMETER_USER) + self._unifi_password = self.get_parameter_value(UniFiConst.PARAMETER_PWD) + self._unifi_site_id = self.get_parameter_value(UniFiConst.PARAMETER_SITE_ID) - self._model = UniFiControllerClientModel(UniFiAPI(username=self._unifi_user, password=self._unifi_password, - baseurl=self._unifi_controller_url, verify_ssl=False)) + self._model = UniFiControllerClientModel(UniFiAPI(username=self._unifi_user, + password=self._unifi_password, + site=self._unifi_site_id, + baseurl=self._unifi_controller_url, + verify_ssl=False)) # cycle time in seconds, only needed, if hardware/interface needs to be # polled for value changes by adding a scheduler entry in the run method of this plugin @@ -293,46 +406,46 @@ def parse_item(self, item): with the item, caller, source and dest as arguments and in case of the knx plugin the value can be sent to the knx with a knx write function within the knx plugin. """ - if not self.has_iattr(item.conf, self.ATTR_TYPE): + if not self.has_iattr(item.conf, UniFiConst.ATTR_TYPE): return - i_attr = self.get_iattr_value(item.conf, self.ATTR_TYPE) - if i_attr in [self.TYPE_CL_PRESENT, self.TYPE_CL_IP, self.TYPE_CL_AT_AP, self.TYPE_CL_HOSTNAME]: - cl_mac = self._get_attribute_recursive(item, self.ATTR_MAC, check=self._mac_check) + i_attr = self.get_iattr_value(item.conf, UniFiConst.ATTR_TYPE) + if i_attr in [UniFiConst.TYPE_CL_PRESENT, UniFiConst.TYPE_CL_IP, UniFiConst.TYPE_CL_AT_AP, UniFiConst.TYPE_CL_HOSTNAME]: + cl_mac = self._get_attribute_recursive(item, UniFiConst.ATTR_MAC, check=self._mac_check) if cl_mac is None: return self._model.append_item(item) - elif i_attr in [self.TYPE_AP_ENABLED]: - ap_mac = self._get_attribute_recursive(item, self.ATTR_AP_MAC, check=self._mac_check) + elif i_attr in [UniFiConst.TYPE_AP_ENABLED]: + ap_mac = self._get_attribute_recursive(item, UniFiConst.ATTR_AP_MAC, check=self._mac_check) if ap_mac is None: return self._model.append_item(item) return self.update_item - elif i_attr in [self.TYPE_DV_IP, self.TYPE_DV_NAME]: + elif i_attr in [UniFiConst.TYPE_DV_IP, UniFiConst.TYPE_DV_NAME]: dv_mac = self._get_one_of_attr_recursive( - item, [self.ATTR_AP_MAC, self.ATTR_SWITCH_MAC, self.ATTR_DV_MAC], check=self._mac_check) + item, [UniFiConst.ATTR_AP_MAC, UniFiConst.ATTR_SW_MAC, UniFiConst.ATTR_DV_MAC], check=self._mac_check) if dv_mac is None: return self._model.append_item(item) return - elif i_attr in [self.TYPE_SW_PORT_PROFILE]: - sw_mac = self._get_attribute_recursive(item, self.ATTR_SWITCH_MAC, check=self._mac_check) + elif i_attr in [UniFiConst.TYPE_SW_PORT_PROFILE]: + sw_mac = self._get_attribute_recursive(item, UniFiConst.ATTR_SW_MAC, check=self._mac_check) if sw_mac is None: return self._model.append_item(item) return self.update_item - elif i_attr in [self.TYPE_SW_PORT_ENABLED]: - sw_mac = self._get_attribute_recursive(item, self.ATTR_SWITCH_MAC, check=self._mac_check) + elif i_attr in [UniFiConst.TYPE_SW_PORT_ENABLED]: + sw_mac = self._get_attribute_recursive(item, UniFiConst.ATTR_SW_MAC, check=self._mac_check) if sw_mac is None: return - prof_on = self._get_attribute_recursive(item, self.ATTR_SWITCH_PORT_PROFILE_ON) + prof_on = self._get_attribute_recursive(item, UniFiConst.ATTR_SW_PORT_PROF_ON) if prof_on is None: return - prof_off = self._get_attribute_recursive(item, self.ATTR_SWITCH_PORT_PROFILE_OFF) + prof_off = self._get_attribute_recursive(item, UniFiConst.ATTR_SW_PORT_PROF_OFF) if prof_off is None: return self._model.append_item(item) @@ -349,8 +462,8 @@ def parse_logic(self, logic): # self.function(logic['name']) pass - def _update_with(self, item, item_type, func): - if self._item_filter(item, self.ATTR_TYPE, item_type): + def _update_unifi_with_item(self, item, item_type, func): + if self._item_filter(item, UniFiConst.ATTR_TYPE, item_type): func(item) def update_item(self, item, caller=None, source=None, dest=None): @@ -366,19 +479,19 @@ def update_item(self, item, caller=None, source=None, dest=None): """ if caller != self.get_shortname(): - self._update_with(item, self.TYPE_AP_ENABLED, lambda i: self._model._api.set_device_disabled( + self._update_unifi_with_item(item, UniFiConst.TYPE_AP_ENABLED, lambda i: self._model._api.set_device_disabled( device_mac=self._get_attribute_recursive( - i, self.ATTR_AP_MAC, check=self._mac_check, enable_logging=self._logging), + i, UniFiConst.ATTR_AP_MAC, check=self._mac_check, enable_logging=self._logging), disabled=not i()) ) - self._update_with(item, self.TYPE_SW_PORT_ENABLED, lambda i: self._model._api.set_port_profile_for( + self._update_unifi_with_item(item, UniFiConst.TYPE_SW_PORT_ENABLED, lambda i: self._model._api.set_port_profile_for( switch_mac=self._get_attribute_recursive( - i, self.ATTR_SWITCH_MAC, check=self._mac_check, enable_logging=self._logging), + i, UniFiConst.ATTR_SW_MAC, check=self._mac_check, enable_logging=self._logging), port_number=int(self._get_attribute_recursive( - i, self.ATTR_SWITCH_PORT_NO, enable_logging=self._logging)), + i, UniFiConst.ATTR_SW_PORT_NO, enable_logging=self._logging)), profile_name=self._get_attribute_recursive( - i, self.ATTR_SWITCH_PORT_PROFILE_ON, enable_logging=self._logging) if i() else self._get_attribute_recursive(i, self.ATTR_SWITCH_PORT_PROFILE_OFF, enable_logging=self._logging)) + i, UniFiConst.ATTR_SW_PORT_PROF_ON, enable_logging=self._logging) if i() else self._get_attribute_recursive(i, UniFiConst.ATTR_SW_PORT_PROF_OFF, enable_logging=self._logging)) ) self.logger.debug( @@ -391,16 +504,13 @@ def _item_filter(self, item, attr_type, attr_val): return True return False - def _poll_with_unifi_type(self, unifi_type, func): - for item in self._model.get_items(lambda i: self._item_filter(i, self.ATTR_TYPE, unifi_type)): - item(func(item), self.get_shortname()) - def _check_client_at_ap(self, i): - ap_mac = self._get_attribute_recursive(i, self.ATTR_AP_MAC, check=self._mac_check, enable_logging=self._logging) + ap_mac = self._get_attribute_recursive(i, UniFiConst.ATTR_AP_MAC, + check=self._mac_check, enable_logging=self._logging) if ap_mac is None: return False client_mac = self._get_attribute_recursive( - i, self.ATTR_MAC, check=self._mac_check, enable_logging=self._logging) + i, UniFiConst.ATTR_MAC, check=self._mac_check, enable_logging=self._logging) client_present = self._model._api.get_client_presence(client_mac) if not client_present: return False @@ -414,7 +524,7 @@ def _check_client_at_ap(self, i): def _check_ap_enabled(self, item): ap_mac = self._get_attribute_recursive( - item, self.ATTR_AP_MAC, check=self._mac_check, enable_logging=self._logging) + item, UniFiConst.ATTR_AP_MAC, check=self._mac_check, enable_logging=self._logging) if ap_mac is None: return False rsl = self._model._api.get_device_info(ap_mac, 'disabled', if_no_prop=False) @@ -426,7 +536,7 @@ def _check_ap_enabled(self, item): def _get_device_info(self, item, info_type): mac = self._get_one_of_attr_recursive( - item, [self.ATTR_DV_MAC, self.ATTR_AP_MAC, self.ATTR_SWITCH_MAC], check=self._mac_check, enable_logging=self._logging) + item, [UniFiConst.ATTR_DV_MAC, UniFiConst.ATTR_AP_MAC, UniFiConst.ATTR_SW_MAC], check=self._mac_check, enable_logging=self._logging) if mac is None: return False rsl = self._model._api.get_device_info(mac, info_type) @@ -438,14 +548,16 @@ def _get_device_info(self, item, info_type): def _get_sw_port_profile(self, i): sw_mac = self._get_attribute_recursive( - i, self.ATTR_SWITCH_MAC, check=self._mac_check, enable_logging=self._logging) - sw_port = int(self._get_attribute_recursive(i, self.ATTR_SWITCH_PORT_NO, + i, UniFiConst.ATTR_SW_MAC, check=self._mac_check, enable_logging=self._logging) + sw_port = int(self._get_attribute_recursive(i, UniFiConst.ATTR_SW_PORT_NO, enable_logging=self._logging)) return self._model._api.get_port_profile_for(sw_mac, sw_port) def _check_sw_port_enabled(self, item): - pp_on = self._get_attribute_recursive(item, self.ATTR_SWITCH_PORT_PROFILE_ON, enable_logging=self._logging) - pp_off = self._get_attribute_recursive(item, self.ATTR_SWITCH_PORT_PROFILE_OFF, enable_logging=self._logging) + pp_on = self._get_attribute_recursive( + item, UniFiConst.ATTR_SW_PORT_PROF_ON, enable_logging=self._logging) + pp_off = self._get_attribute_recursive( + item, UniFiConst.ATTR_SW_PORT_PROF_OFF, enable_logging=self._logging) rslt = self._get_sw_port_profile(item) if rslt == pp_off: @@ -459,27 +571,35 @@ def _check_sw_port_enabled(self, item): def _get_client_info(self, item, info_type): client_mac = self._get_attribute_recursive( - item, self.ATTR_MAC, check=self._mac_check, enable_logging=self._logging) + item, UniFiConst.ATTR_MAC, check=self._mac_check, enable_logging=self._logging) return self._model._api.get_client_info(client_mac, info_type) def _get_client_presence(self, item): client_mac = self._get_attribute_recursive( - item, self.ATTR_MAC, check=self._mac_check, enable_logging=self._logging) + item, UniFiConst.ATTR_MAC, check=self._mac_check, enable_logging=self._logging) return self._model._api.get_client_presence(client_mac) + def _poll_with_unifi_type(self, unifi_type, func): + # find all items that have the unifi_type attribute set to the given value: + # apply func to item and set the value accordingly + for item in self._model.get_items(lambda i: self._item_filter(i, UniFiConst.ATTR_TYPE, unifi_type)): + item(func(item), self.get_shortname()) + def poll_device(self): """ Polls for updates of the devices connected to the controller """ - self._poll_with_unifi_type(self.TYPE_CL_PRESENT, lambda i: self._get_client_presence(i)) - self._poll_with_unifi_type(self.TYPE_CL_IP, lambda i: self._get_client_info(i, 'ip')) - self._poll_with_unifi_type(self.TYPE_CL_HOSTNAME, lambda i: self._get_client_info(i, 'hostname')) - self._poll_with_unifi_type(self.TYPE_CL_AT_AP, lambda i: self._check_client_at_ap(i)) - self._poll_with_unifi_type(self.TYPE_AP_ENABLED, lambda i: self._check_ap_enabled(i)) - self._poll_with_unifi_type(self.TYPE_SW_PORT_ENABLED, lambda i: self._check_sw_port_enabled(i)) - self._poll_with_unifi_type(self.TYPE_SW_PORT_PROFILE, lambda i: self._get_sw_port_profile(i)) - self._poll_with_unifi_type(self.TYPE_DV_IP, lambda i: self._get_device_info(i, 'ip')) - self._poll_with_unifi_type(self.TYPE_DV_NAME, lambda i: self._get_device_info(i, 'name')) + rc_before = self._model._api.get_request_count() + self._poll_with_unifi_type(UniFiConst.TYPE_CL_PRESENT, lambda i: self._get_client_presence(i)) + self._poll_with_unifi_type(UniFiConst.TYPE_CL_IP, lambda i: self._get_client_info(i, 'ip')) + self._poll_with_unifi_type(UniFiConst.TYPE_CL_HOSTNAME, lambda i: self._get_client_info(i, 'hostname')) + self._poll_with_unifi_type(UniFiConst.TYPE_CL_AT_AP, lambda i: self._check_client_at_ap(i)) + self._poll_with_unifi_type(UniFiConst.TYPE_AP_ENABLED, lambda i: self._check_ap_enabled(i)) + self._poll_with_unifi_type(UniFiConst.TYPE_SW_PORT_ENABLED, lambda i: self._check_sw_port_enabled(i)) + self._poll_with_unifi_type(UniFiConst.TYPE_SW_PORT_PROFILE, lambda i: self._get_sw_port_profile(i)) + self._poll_with_unifi_type(UniFiConst.TYPE_DV_IP, lambda i: self._get_device_info(i, 'ip')) + self._poll_with_unifi_type(UniFiConst.TYPE_DV_NAME, lambda i: self._get_device_info(i, 'name')) + self.logger.debug("Poll cycle took {} requests".format(self._model._api.get_request_count() - rc_before)) def init_webinterface(self): """" diff --git a/unifi/plugin.yaml b/unifi/plugin.yaml index 4c168eedb..ab0c49cfa 100644 --- a/unifi/plugin.yaml +++ b/unifi/plugin.yaml @@ -45,6 +45,14 @@ parameters: description: de: 'Passwort für den Login.' en: 'Password for login.' + + unifi_site_id: + type: str + mandatory: False + default: 'default' + description: + de: 'UniFi Site Id.' + en: 'UniFi Site Id.' item_attributes: # Definition of item attributes defined by this plugin (enter 'item_attributes: NONE', if section should be empty) diff --git a/unifi/ubiquiti/unifi.py b/unifi/ubiquiti/unifi.py index 7c79a5e18..c44a1cbed 100644 --- a/unifi/ubiquiti/unifi.py +++ b/unifi/ubiquiti/unifi.py @@ -22,15 +22,15 @@ class DeviceCacheEntry(object): def __init__(self): self.age = 0 self.data = {} + self.valid = False + -# origin: https://github.com/MBRCTV/Unifi-Python-API class API(object): """ Unifi API for the Unifi Controller. """ _login_data = {} - _current_status_code = None _is_logged_in = False @@ -39,6 +39,7 @@ class API(object): _port_profiles = {} _mac_to_id = {} _device_cache = {} + _request_count = 0 def __init__(self, username: str = "ubnt", password: str = "ubnt", site: str = "default", baseurl: str = "https://unifi:8443", verify_ssl: bool = True): """ @@ -56,6 +57,7 @@ def __init__(self, username: str = "ubnt", password: str = "ubnt", site: str = " self._verify_ssl = verify_ssl self._baseurl = baseurl self._session = Session() + self._request_count = 0 def __enter__(self): """ @@ -75,6 +77,47 @@ def __exit__(self, *args): self.logout() self._is_logged_in = False + def _get_url(self, url, recursion=False): + try: + self.login() + + r = self._session.get(url, verify=self._verify_ssl) + self._request_count = self._request_count + 1 + current_status_code = r.status_code + + if not r.ok: + if current_status_code == 401: + raise LoggedInException("Invalid login, or login has expired") + + data = r.json()['data'] + return data + except LoggedInException: + if recursion: + raise DataException("Unable to log in or get data for url {}".format(url)) + self._is_logged_in = False + return self._get_url(url, True) + + def _put_url(self, url, body, recursion=False): + try: + self.login() + + r = self._session.put(url, verify=self._verify_ssl, data=body) + self._request_count = self._request_count + 1 + current_status_code = r.status_code + if not r.ok: + if current_status_code == 401: + raise LoggedInException("Invalid login, or login has expired") + else: + raise LoggedInException("code {}".format(current_status_code)) + + data = r.json()['data'] + return data + except LoggedInException: + if recursion: + raise DataException("Unable to log in or put data") + self._is_logged_in = False + return self._put_url(url, body, True) + def login(self): """ Log the user in @@ -84,11 +127,11 @@ def login(self): if self._is_logged_in: return - self._current_status_code = self._session.post("{}/api/login".format( + current_status_code = self._session.post("{}/api/login".format( self._baseurl), data=json.dumps(self._login_data), verify=self._verify_ssl).status_code - if self._current_status_code == 400: - raise LoggedInException( - "Failed to log in to api with provided credentials") + self._request_count = self._request_count + 1 + if current_status_code == 400: + raise LoggedInException("Failed to log in to api with provided credentials") self._is_logged_in = True @@ -99,20 +142,9 @@ def logout(self): :return: None """ self._session.get("{}/logout".format(self._baseurl)) + self._request_count = self._request_count + 1 self._session.close() - def _load_client_list(self): - self.login() - r = self._session.get("{}/api/s/{}/stat/sta".format(self._baseurl, - self._site, verify=self._verify_ssl), data="json={}") - self._current_status_code = r.status_code - - if self._current_status_code == 401: - raise LoggedInException("Invalid login, or login has expired") - - data = r.json()['data'] - self._client_list = data - def list_clients(self, filters: Dict[str, Union[str, Pattern]] = None, order_by: str = None, max_age_seconds: int = 60) -> list: """ List all available clients from the api or an internal cache @@ -123,21 +155,20 @@ def list_clients(self, filters: Dict[str, Union[str, Pattern]] = None, order_by: :return: A list of clients on the format of a dict """ if time.time() - self._client_list_from > max_age_seconds: - self._load_client_list() + self._client_list = self._get_url("{}/api/s/{}/stat/sta".format(self._baseurl, + self._site)) + self._client_list_from = time.time() data = self._client_list if filters: for term, value in filters.items(): - value_re = value if isinstance( - value, Pattern) else re.compile(value) + value_re = value if isinstance(value, Pattern) else re.compile(value) - data = [x for x in data if term in x.keys( - ) and re.fullmatch(value_re, x[term])] + data = [x for x in data if term in x.keys() and re.fullmatch(value_re, x[term])] if order_by: - data = sorted( - data, key=lambda x: x[order_by] if order_by in x.keys() else x['_id']) + data = sorted(data, key=lambda x: x[order_by] if order_by in x.keys() else x['_id']) return data @@ -150,45 +181,94 @@ def device_disable(self, device_ids: list, disabled): ap_data = {} ap_data['disabled'] = disabled for ids in device_ids: - r = self._session.put("{}/api/s/{}/rest/device/{}".format( - self._baseurl, self._site, ids), verify=self._verify_ssl, data=json.dumps(ap_data)) - self._current_status_code = r.status_code - - if not r.ok: - if self._current_status_code == 401: - raise LoggedInException( - "Invalid login, or login has expired") - else: - raise LoggedInException("code {self._current_status_code}") - - _data = r.json()['data'] - # print(json.dumps(data, indent=4)) + self._put_url("{}/api/s/{}/rest/device/{}".format( + self._baseurl, self._site, ids), body=json.dumps(ap_data)) def device_stat(self, mac: str): - self.login() - r = self._session.get("{}/api/s/{}/stat/device/{}".format(self._baseurl, - self._site, mac), verify=self._verify_ssl) - self._current_status_code = r.status_code - - if self._current_status_code == 401: - raise LoggedInException("Invalid login, or login has expired") - - return r.json()['data'] + return self._get_url("{}/api/s/{}/stat/device/{}".format(self._baseurl, + self._site, mac)) + + def hierarchize(self, inventory, key_selector, subkey_selector, start_key): + to_ret = [] + for entry in inventory: + if key_selector(entry) == start_key: + ret2 = {} + ret2['node'] = entry + ret2['children'] = self.hierarchize(inventory, key_selector, subkey_selector, subkey_selector(entry)) + to_ret.append(ret2) + return sorted(to_ret, key=lambda x: str(x['node']['uplink_remote_port']) + x['node']['key']) + + def get_device_hierarchy(self): + dvcs = self.device_stat("") + mac_inventory = [] + for dvc in dvcs: + entry = {} + entry['mac'] = dvc['mac'] + entry['type'] = dvc['type'] + try: + entry['name'] = dvc['name'] + except KeyError: + entry['name'] = '' + entry['key'] = entry['type'] + '_' + entry['name'] + try: + entry['uplink_mac'] = dvc['last_uplink']['uplink_mac'] + entry['uplink_remote_port'] = dvc['last_uplink']['uplink_remote_port'] + except KeyError: + try: + entry['uplink_mac'] = dvc['uplink']['uplink_mac'] + entry['uplink_remote_port'] = dvc['uplink']['uplink_remote_port'] + except KeyError: + entry['uplink_mac'] = "no_mac" + entry['uplink_remote_port'] = -1 + mac_inventory.append(entry) + + flat_clients = [] + clnts = self.list_clients() + for clnt in clnts: + + if clnt['is_wired']: + entry = {} + entry['mac'] = clnt['mac'] + try: + entry['name'] = clnt['name'] + except KeyError: + try: + entry['name'] = clnt['hostname'] + except KeyError: + entry['name'] = 'mac_' + entry['mac'].replace(':', '_') + + try: + entry['uplink_mac'] = clnt['sw_mac'] + entry['uplink_remote_port'] = clnt['sw_port'] + except KeyError: + continue + + entry['type'] = 'wired_client' + entry['key'] = entry['type'] + '_' + entry['name'] + mac_inventory.append(entry) + else: + tmpcl = {} + tmpcl['mac'] = clnt['mac'] + try: + tmpcl['name'] = clnt['name'] + except KeyError: + try: + tmpcl['name'] = clnt['hostname'] + except KeyError: + tmpcl['name'] = 'mac_' + tmpcl['mac'].replace(':', '_') + flat_clients.append(tmpcl) - def _load_port_profiles(self): - self.login() - r = self._session.get( - "{}/api/s/{}/rest/portconf".format(self._baseurl, self._site), verify=self._verify_ssl) - self._current_status_code = r.status_code + device_hr = self.hierarchize(mac_inventory, lambda x: x['uplink_mac'], lambda x: x['mac'], "no_mac") - if self._current_status_code == 401: - raise LoggedInException("Invalid login, or login has expired") + struct = {} + struct['wireless_clients'] = flat_clients + struct['devices'] = device_hr - self._port_profiles = r.json()['data'] + return struct def _get_port_profiles(self, filters: Dict[str, Union[str, Pattern]] = None): if len(self._port_profiles) < 1: - self._load_port_profiles() + self._port_profiles = self._get_url("{}/api/s/{}/rest/portconf".format(self._baseurl, self._site)) data = self._port_profiles if filters: @@ -221,8 +301,11 @@ def get_port_profile_for(self, switch_mac: str, port_number: int): if sid is None: raise DataException("Cannot find switch with MAC {}".format(switch_mac)) - poData = self.device_stat(switch_mac) - port_prof = poData[0]['port_overrides'][port_number - 1]['portconf_id'] + poData = self.get_device_info(switch_mac, 'port_overrides') + port_prof = poData[port_number - 1]['portconf_id'] + + # poData = self.device_stat(switch_mac) + # port_prof = poData[0]['port_overrides'][port_number - 1]['portconf_id'] profiles = self._get_port_profiles() if len(profiles) == 0: @@ -245,23 +328,19 @@ def set_port_profile_for(self, switch_mac: str, port_number: int, profile_name: if sid is None: raise DataException("Cannot find switch with MAC {}".format(switch_mac)) - poData = self.device_stat(switch_mac) - poData = poData[0]['port_overrides'] + # poData = self.device_stat(switch_mac) + # poData = poData[0]['port_overrides'] + + poData = self.get_device_info(switch_mac, 'port_overrides') + if len(poData) < (port_number - 1): raise DataException("Switch has less than {} ports".format(port_number)) poData[port_number - 1]['portconf_id'] = pid newPoData = {} newPoData['port_overrides'] = poData - r = self._session.put("{}/api/s/{}/rest/device/{}".format(self._baseurl, - self._site, sid), verify=self._verify_ssl, data=json.dumps(newPoData)) - self._current_status_code = r.status_code - - if not r.ok: - if self._current_status_code == 401: - raise LoggedInException("Invalid login, or login has expired") - else: - raise LoggedInException("code {self._current_status_code}") + self._put_url("{}/api/s/{}/rest/device/{}".format(self._baseurl, + self._site, sid), body=json.dumps(newPoData)) def get_client_presence(self, client_mac: str, last_seen_delta: int = 300): clnts = self.list_clients(filters={'mac': client_mac}) @@ -287,10 +366,17 @@ def get_device_info(self, device_mac: str, property_id: str, max_age: int = 30, rsl = self.device_stat(device_mac) if len(rsl) > 0: self._device_cache[device_mac].data = rsl[0] + self._device_cache[device_mac].valid = True self._device_cache[device_mac].age = time.time() else: + self._device_cache[device_mac].age = time.time() - max_age + 5 return if_no_dev try: + if not self._device_cache[device_mac].valid: + return if_no_dev return self._device_cache[device_mac].data[property_id] except KeyError: return if_no_prop + + def get_request_count(self): + return self._request_count diff --git a/unifi/webif/templates/index.html b/unifi/webif/templates/index.html index 555173935..39f9b3b55 100644 --- a/unifi/webif/templates/index.html +++ b/unifi/webif/templates/index.html @@ -48,7 +48,7 @@ -{% set tabcount = 2 %} +{% set tabcount = 3 %} +{% set tab3title = "Item-Generator" %} {% block bodytab3 %}
- {{ _('Hier kommt der Inhalt des Webinterfaces Tab3 hin.') }} +
+{{ p._model.get_item_hierarchy() }}
+
{% endblock bodytab3 %} From d60ede164dd8cddc0583fb54a31548b5ff5a4c90 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sat, 1 Jun 2019 22:25:04 +0200 Subject: [PATCH 070/200] Optimize logging fix directory error when level was set to 0 write into standard log using stateengine.plugin plus item name as logger name --- stateengine/StateEngineLogger.py | 29 ++++++++++++++++------------- stateengine/__init__.py | 7 +++---- 2 files changed, 19 insertions(+), 17 deletions(-) diff --git a/stateengine/StateEngineLogger.py b/stateengine/StateEngineLogger.py index a1861e4ec..bc14e01c6 100755 --- a/stateengine/StateEngineLogger.py +++ b/stateengine/StateEngineLogger.py @@ -24,14 +24,6 @@ class SeLogger: - # Log-Level: (0=off 1=Info, 2=Debug) - __loglevel = 2 - - # Target directory for log files - __logdirectory = "/usr/local/smarthome/var/log/StateEngine/" - - # Max age for log files (days) - __logmaxage = 0 # Set log level # loglevel: current loglevel @@ -41,7 +33,7 @@ def set_loglevel(loglevel): SeLogger.__loglevel = int(loglevel) except ValueError: SeLogger.__loglevel = 2 - logger = logging.getLogger('plugins.stateengine.StateEngineLogger') + logger = logging.getLogger('plugins.stateengine') logger.error("Das Log-Level muss numerisch angegeben werden.") # Set log directory @@ -58,14 +50,14 @@ def set_logmaxage(logmaxage): SeLogger.__logmaxage = int(logmaxage) except ValueError: SeLogger.__logmaxage = 0 - logger = logging.getLogger('plugins.stateengine.StateEngineLogger') + logger = logging.getLogger('plugins.stateengine') logger.error("Das maximale Alter der Logdateien muss numerisch angegeben werden.") @staticmethod def remove_old_logfiles(): if SeLogger.__logmaxage == 0: return - logger = logging.getLogger('plugins.stateengine.StateEngineLogger') + logger = logging.getLogger('plugins.stateengine') logger.info("Removing logfiles older than {0} days".format(SeLogger.__logmaxage)) count_success = 0 count_error = 0 @@ -81,7 +73,8 @@ def remove_old_logfiles(): os.unlink(abs_file) count_success += 1 except Exception as ex: - logger.error(str(ex)) + logger.error("Problem removing old logfiles: {}".format(ex)) + logger.error(ex) count_error += 1 logger.info("{0} files removed, {1} errors occured".format(count_success, count_error)) @@ -94,7 +87,7 @@ def create(item): # Constructor # item: item for which the detailed log is (used as part of file name) def __init__(self, item): - self.logger = logging.getLogger(__name__) + self.logger = logging.getLogger('{}.{}'.format(__name__.replace(".StateEngineLogger", ""), item.property.path)) self.__section = item.property.path.replace(".", "_").replace("/", "") self.__indentlevel = 0 self.__date = None @@ -145,12 +138,18 @@ def header(self, text): # @param *args parameters for text def info(self, text, *args): self.log(1, text, *args) + indent = "\t" * self.__indentlevel + text = '{}{}'.format(indent, text) + self.logger.info(text.format(*args)) # log with lebel=debug # text: text to log # *args: parameters for text def debug(self, text, *args): self.log(2, text, *args) + indent = "\t" * self.__indentlevel + text = '{}{}'.format(indent, text) + self.logger.debug(text.format(*args)) # log warning (always to main smarthome.py log) # text: text to log @@ -158,6 +157,8 @@ def debug(self, text, *args): # noinspection PyMethodMayBeStatic def warning(self, text, *args): self.log(1, "WARNING: " + text, *args) + indent = "\t" * self.__indentlevel + text = '{}{}'.format(indent, text) self.logger.warning(text.format(*args)) # log error (always to main smarthome.py log) @@ -166,6 +167,8 @@ def warning(self, text, *args): # noinspection PyMethodMayBeStatic def error(self, text, *args): self.log(1, "ERROR: " + text, *args) + indent = "\t" * self.__indentlevel + text = '{}{}'.format(indent, text) self.logger.error(text.format(*args)) # log exception (always to main smarthome.py log' diff --git a/stateengine/__init__.py b/stateengine/__init__.py index ef6c8a6b6..99948cded 100755 --- a/stateengine/__init__.py +++ b/stateengine/__init__.py @@ -65,8 +65,6 @@ def __init__(self, sh): log_directory = base + log_directory if not os.path.exists(log_directory): os.makedirs(log_directory) - SeLogger.set_loglevel(log_level) - SeLogger.set_logdirectory(log_directory) text = "StateEngine extended logging is active. Logging to '{0}' with loglevel {1}." self.logger.info(text.format(log_directory, log_level)) log_maxage = self.get_parameter_value("log_maxage") @@ -75,7 +73,8 @@ def __init__(self, sh): SeLogger.set_logmaxage(log_maxage) cron = ['init', '30 0 * *'] self.scheduler_add('StateEngine: Remove old logfiles', SeLogger.remove_old_logfiles, cron=cron, offset=0) - + SeLogger.set_loglevel(log_level) + SeLogger.set_logdirectory(log_directory) self.get_sh().stateengine_plugin_functions = StateEngineFunctions.SeFunctions(self.get_sh(), self.logger) except Exception: self._init_complete = False @@ -101,7 +100,7 @@ def run(self): ab_item = StateEngineItem.SeItem(self.get_sh(), item) self.__items[ab_item.id] = ab_item except ValueError as ex: - self.logger.error("Item: {0}: {1}".format(item.property.path, str(ex))) + self.logger.error("Problem with Item: {0}: {1}".format(item.property.path, str(ex))) if len(self.__items) > 0: self.logger.info("Using StateEngine for {} items".format(len(self.__items))) From 000ff27142ccc16c7ac6ba31cd7f07d5bfa07c37 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sat, 1 Jun 2019 22:28:05 +0200 Subject: [PATCH 071/200] Allow list entries for conditions Now you can use lists for source, original_caller, min/max, etc.! --- stateengine/StateEngineAction.py | 4 +- stateengine/StateEngineActions.py | 8 +- stateengine/StateEngineCondition.py | 157 ++++++++++++++------- stateengine/StateEngineConditionSet.py | 14 +- stateengine/StateEngineEval.py | 3 +- stateengine/StateEngineItem.py | 16 ++- stateengine/StateEngineState.py | 12 +- stateengine/StateEngineTools.py | 21 ++- stateengine/StateEngineValue.py | 186 ++++++++++++++++++------- 9 files changed, 294 insertions(+), 127 deletions(-) diff --git a/stateengine/StateEngineAction.py b/stateengine/StateEngineAction.py index 1cca2ad47..b9bde50f1 100755 --- a/stateengine/StateEngineAction.py +++ b/stateengine/StateEngineAction.py @@ -335,14 +335,14 @@ def _execute(self, actionname: str, repeat_text: str = ""): eval(self.__eval) except Exception as ex: text = "{0}: Problem evaluating '{1}': {2}." - self._log_error(text.format(actionname, StateEngineTools.get_eval_name(self.__eval), str(ex))) + self._log_error(text.format(actionname, StateEngineTools.get_eval_name(self.__eval), ex)) else: try: # noinspection PyCallingNonCallable self.__eval() except Exception as ex: text = "{0}: Problem calling '{0}': {1}." - self._log_error(text.format(actionname, StateEngineTools.get_eval_name(self.__eval), str(ex))) + self._log_error(text.format(actionname, StateEngineTools.get_eval_name(self.__eval), ex)) # Class representing a single "se_force" action diff --git a/stateengine/StateEngineActions.py b/stateengine/StateEngineActions.py index 039a088b6..55bbc3ef6 100755 --- a/stateengine/StateEngineActions.py +++ b/stateengine/StateEngineActions.py @@ -76,8 +76,8 @@ def update(self, attribute, value): except ValueError as ex: if name in self.__actions: del self.__actions[name] - self._log_warning("Ignoring action {0} because: {1} (2)".format(attribute, str(ex))) - #raise ValueError("Action {0}: {1}".format(attribute, str(ex))) + self._log_warning("Ignoring action {0} because: {1} (2)".format(attribute, ex)) + #raise ValueError("Action {0}: {1}".format(attribute, ex)) # ensure that action exists and create if missing # func: action function @@ -197,7 +197,7 @@ def __handle_combined_action_attribute(self, name, value_list): exists = False if name in self.__actions: del self.__actions[name] - self._log_warning("Ignoring action {0} because: {1}".format(name, str(ex))) + self._log_warning("Ignoring action {0} because: {1}".format(name, ex)) # add additional parameters @@ -221,7 +221,7 @@ def complete(self, item_state): try: self.__actions[name].complete(item_state) except ValueError as ex: - raise ValueError("State '{0}', Action '{1}': {2}".format(item_state.property.path, name, str(ex))) + raise ValueError("State '{0}', Action '{1}': {2}".format(item_state.property.path, name, ex)) # Execute all actions # is_repeat: Inidicate if this is a repeated action without changing the state diff --git a/stateengine/StateEngineCondition.py b/stateengine/StateEngineCondition.py index c54d22ff9..37d5e8290 100755 --- a/stateengine/StateEngineCondition.py +++ b/stateengine/StateEngineCondition.py @@ -48,6 +48,9 @@ def __init__(self, abitem, name: str): self.__agenegate = None self.__error = None + def __repr__(self): + return "SeCondition item: {}, name {}, eval {}, value {}.".format(self.__item, self.__name, self.__eval, self.__value) + # set a certain function to a given value # func: Function to set ('item', 'eval', 'value', 'min', 'max', 'negate', 'agemin', 'agemax' or 'agenegate' # value: Value for function @@ -62,14 +65,16 @@ def set(self, func, value): self.__min.set(value, self.__name) elif func == "se_max": self.__max.set(value, self.__name) - elif func == "se_agemin": + elif func in ["se_agemin", "se_minage"]: self.__agemin.set(value, self.__name) - elif func == "se_agemax": + elif func in ["se_agemax", "se_maxage"]: self.__agemax.set(value, self.__name) elif func == "se_negate": self.__negate = value elif func == "se_agenegate": self.__agenegate = value + elif func != "se_item" and func != "se_eval": + self._log_warning("Function '{0}' is no valid function! Please check item attribute.", func) # Complete condition (do some checks, cast value, min and max based on item or eval data types) # item_state: item to read from @@ -142,12 +147,7 @@ def complete(self, item_state): elif self.__name == "time": self.__cast_all(StateEngineTools.cast_time) except Exception as ex: - raise ValueError("Condition {0}: Error when casting: {1}".format(self.__name, str(ex))) - - # 'min' must not be greater than 'max' - if self.__min.get_type() == "value" and self.__max.get_type() == "value": - if self.__min.get() > self.__max.get(): - raise ValueError("Condition {}: 'min' must not be greater than 'max'!".format(self.__name)) + raise ValueError("Condition {0}: Error when casting: {1}".format(self.__name, ex)) # 'agemin' and 'agemax' can only be used for items, not for eval if self.__item is None and not (self.__agemin.is_empty() and self.__agemax.is_empty()): @@ -161,7 +161,6 @@ def check(self): if self.__item is None and self.__eval is None: self._log_info("condition '{0}': No item or eval found! Considering condition as matching!", self.__name) return True - if not self.__check_value(): return False if not self.__check_age(): @@ -173,9 +172,17 @@ def write_to_logger(self): if self.__error is not None: self._log_debug("error: {0}", self.__error) if self.__item is not None: - self._log_debug("item: {0}", self.__item.property.path) + if isinstance(self.__item, list): + for i in self.__item: + self._log_debug("item {0}", self.__name, i.property.path) + else: + self._log_debug("item {0}", self.__name, self.__item.property.path) if self.__eval is not None: - self._log_debug("eval: {0}", StateEngineTools.get_eval_name(self.__eval)) + if isinstance(self.__item, list): + for e in self.__item: + self._log_debug("eval: {0}", StateEngineTools.get_eval_name(e)) + else: + self._log_debug("eval: {0}", StateEngineTools.get_eval_name(self.__eval)) self.__value.write_to_logger() self.__min.write_to_logger() self.__max.write_to_logger() @@ -186,6 +193,21 @@ def write_to_logger(self): if self.__agenegate is not None: self._log_debug("age negate: {0}", self.__agenegate) + # Flatten list of values + # changelist: list to make flat + def _flatten_list(self, changelist): + if isinstance(changelist, list): + flat_list = [] + for sublist in changelist: + if isinstance(sublist, list): + for item in sublist: + flat_list.append(item) + else: + flat_list.append(sublist) + else: + flat_list = changelist + return flat_list + # Cast 'value', 'min' and 'max' using given cast function # cast_func: cast function to use def __cast_all(self, cast_func): @@ -206,8 +228,9 @@ def __check_value(self): if not self.__value.is_empty(): # 'value' is given. We ignore 'min' and 'max' and check only for the given value value = self.__value.get() + value = self._flatten_list(value) - if type(value) == list: + if isinstance(value, list): text = "Condition '{0}': value={1} negate={2} current={3}" self._log_debug(text, self.__name, value, self.__negate, current) self._log_increase_indent() @@ -254,35 +277,48 @@ def __check_value(self): return False else: - - min_value = self.__min.get() - max_value = self.__max.get() - - # 'value' is not given. We check 'min' and 'max' (if given) + min_value = [self.__min.get()] if not isinstance(self.__min.get(), list) else self.__min.get() + max_value = [self.__max.get()] if not isinstance(self.__max.get(), list) else self.__max.get() + min_value = self._flatten_list(min_value) + max_value = self._flatten_list(max_value) + diff_len = len(min_value) - len(max_value) + min_value = min_value + [None] * abs(diff_len) if diff_len < 0 else min_value + max_value = max_value + [None] * diff_len if diff_len > 0 else max_value text = "Condition '{0}': min={1} max={2} negate={3} current={4}" self._log_debug(text, self.__name, min_value, max_value, self.__negate, current) + if diff_len != 0: + self._log_debug("Min and max are always evaluated as valuepairs. If needed you can also provide 'novalue' as a list value") + if len(min_value) > 1 or len(max_value) > 1: + self._log_debug("Be aware that 'eval:' and 'item:' definitions don't stay in the original list order but get appended to the end!") self._log_increase_indent() + for i, _ in enumerate(min_value): + min = None if min_value[i] == 'novalue' else min_value[i] + max = None if max_value[i] == 'novalue' else max_value[i] + self._log_debug("Checking minvalue {} and maxvalue {}", min, max) + if min is not None and max is not None and min > max: + min, max = max, min + self._log_warning("Condition {}: min must not be greater than max! " \ + "Values got switched: min is now {}, max is now {}".format(self.__name, min, max)) + if min is None and max is None: + self._log_debug("no limit given -> matching") + return True - if min_value is None and max_value is None: - self._log_debug("no limit given -> matching") - return True + if not self.__negate: + if min is not None and current < min: + self._log_debug("too low -> not matching") + return False - if not self.__negate: - if min_value is not None and current < min_value: - self._log_debug("too low -> not matching") - return False - - if max_value is not None and current > max_value: - self._log_debug("too high -> not matching") - return False - else: - if min_value is not None and current > min_value and (max_value is None or current < max_value): - self._log_debug("not lower than min -> not matching") - return False + if max is not None and current > max: + self._log_debug("too high -> not matching") + return False + else: + if min is not None and current > min and (max is None or current < max): + self._log_debug("not lower than min -> not matching") + return False - if max_value is not None and current < max_value and (min_value is None or current > min_value): - self._log_debug("not higher than max -> not matching") - return False + if max is not None and current < max and (min is None or current > min): + self._log_debug("not higher than max -> not matching") + return False self._log_debug("given limits ok -> matching") return True @@ -306,26 +342,40 @@ def __check_age(self): agemax = None if self.__agemax.is_empty() else self.__agemax.get() try: # We check 'min' and 'max' (if given) + agemin = [agemin] if not isinstance(agemin, list) else agemin + agemax = [agemax] if not isinstance(agemax, list) else agemax + agemin = self._flatten_list(agemin) + agemax = self._flatten_list(agemax) + diff_len = len(agemin) - len(agemax) + agemin = agemin + [None] * abs(diff_len) if diff_len < 0 else agemin + agemax = agemax + [None] * diff_len if diff_len > 0 else agemax text = "Age of '{0}': min={1} max={2} negate={3} current={4}" self._log_debug(text, self.__name, agemin, agemax, self.__agenegate, current) + if diff_len != 0: + self._log_debug("Min and max age are always evaluated as valuepairs. If needed you can also provide 'novalue' as a list value") + if len(agemin) > 1 or len(agemax) > 1: + self._log_debug("Be aware that 'eval:' and 'item:' definitions don't stay in the original list order but get appended to the end!") self._log_increase_indent() + for i, _ in enumerate(agemin): + min = None if agemin[i] == 'novalue' else agemin[i] + max = None if agemax[i] == 'novalue' else agemax[i] + self._log_debug("Testing valuepair min {} and max {}", min, max) + if not self.__agenegate: + if min is not None and current < min: + self._log_debug("too young -> not matching") + return False - if not self.__agenegate: - if agemin is not None and current < agemin: - self._log_debug("too young -> not matching") - return False - - if agemax is not None and current > agemax: - self._log_debug("too old -> not matching") - return False - else: - if agemin is not None and current > agemin and (agemax is None or current < agemax): - self._log_debug("not younger than min -> not matching") - return False + if max is not None and current > max: + self._log_debug("too old -> not matching") + return False + else: + if min is not None and current > min and (max is None or current < max): + self._log_debug("not younger than min -> not matching") + return False - if agemax is not None and current < agemax and (agemin is None or current > agemin): - self._log_debug("not older than max -> not matching") - return False + if max is not None and current < max and (min is None or current > min): + self._log_debug("not older than max -> not matching") + return False self._log_debug("given age limits ok -> matching") return True @@ -338,17 +388,20 @@ def __get_current(self): # noinspection PyCallingNonCallable return self.__item() if self.__eval is not None: + # noinspection PyUnusedLocal + sh = self._sh + self._log_debug("Gget current = {}".format(self.__eval)) if isinstance(self.__eval, str): # noinspection PyUnusedLocal - sh = self._sh if "stateengine_eval" in self.__eval: # noinspection PyUnusedLocal stateengine_eval = StateEngineEval.SeEval(self._abitem) + self._log_debug("Using internal eval function {}".format(stateengine_eval)) try: value = eval(self.__eval) except Exception as ex: text = "Condition {}: problem evaluating {}: {}" - raise ValueError(text.format(self.__name, str(self.__eval), str(ex))) + raise ValueError(text.format(self.__name, str(self.__eval), ex)) else: return value else: diff --git a/stateengine/StateEngineConditionSet.py b/stateengine/StateEngineConditionSet.py index 99821a2e9..cbb07d262 100755 --- a/stateengine/StateEngineConditionSet.py +++ b/stateengine/StateEngineConditionSet.py @@ -42,6 +42,9 @@ def __init__(self, abitem, name): self.__name = name self.__conditions = {} + def __repr__(self): + return "SeConditionSet for condition name {}: {}.".format(self.__name, self.__conditions) + # Update condition set # item: item containing settings for condition set # grandparent_item: grandparent item of item (containing the definition if items and evals) @@ -52,7 +55,6 @@ def update(self, item, grandparent_item): func, name = StateEngineTools.partition_strip(attribute, "_") if name == "": continue - try: # update this condition if name not in self.__conditions: @@ -60,7 +62,7 @@ def update(self, item, grandparent_item): self.__conditions[name].set(func, item.conf[attribute]) except ValueError as ex: - raise ValueError("Condition {0}: {1}".format(name, str(ex))) + raise ValueError("Condition {0} error: {1}".format(name, ex)) # Update item from grandparent_item for attribute in grandparent_item.conf: @@ -75,8 +77,8 @@ def update(self, item, grandparent_item): try: self.__conditions[name].set(func, grandparent_item.conf[attribute]) except ValueError as ex: - text = "Item '{0}', Attribute '{1}': {2}" - raise ValueError(text.format(grandparent_item.property.path, attribute, str(ex))) + text = "Item '{0}', Attribute '{1}' Error: {2}" + raise ValueError(text.format(grandparent_item.property.path, attribute, ex)) # Check the condition set, optimize and complete it # item_state: item to read from @@ -89,8 +91,8 @@ def complete(self, item_state): conditions_to_remove.append(name) continue except ValueError as ex: - text = "State '{0}', Condition Set '{1}', Condition '{2}': {3}" - raise ValueError(text.format(item_state.property.path, self.name, name, str(ex))) + text = "State '{0}', Condition Set '{1}', Condition '{2}' Error: {3}" + raise ValueError(text.format(item_state.property.path, self.name, name, ex)) # Remove incomplete conditions for name in conditions_to_remove: diff --git a/stateengine/StateEngineEval.py b/stateengine/StateEngineEval.py index 523479fde..e8dc03464 100755 --- a/stateengine/StateEngineEval.py +++ b/stateengine/StateEngineEval.py @@ -83,7 +83,6 @@ def get_relative_itemid(self, subitem_id): return item.property.path except Exception as ex: self._log_warning("Problem evaluating name of {0}: {1}", subitem_id, ex) - #self._log_exception(ex) # Return the value of an item related to the StateEngine Object Item # item_id: Relative id of item whose value should be returned @@ -93,10 +92,10 @@ def get_relative_itemvalue(self, subitem_id): self._log_debug("Executing method 'get_relative_itemvalue({0})'", subitem_id) try: item = self._abitem.return_item(subitem_id) + self._log_info("Return {0} for item {1}", item.property.value, subitem_id) return item.property.value except Exception as ex: self._log_warning("Problem evaluating value of {0}: {1}", subitem_id, ex) - #self._log_exception(ex) def get_relative_itemname(self, subitem_id): self._log_debug("Executing method 'get_relative_itemname({0})'", subitem_id) diff --git a/stateengine/StateEngineItem.py b/stateengine/StateEngineItem.py index 133221f05..10ab0c4fe 100755 --- a/stateengine/StateEngineItem.py +++ b/stateengine/StateEngineItem.py @@ -55,7 +55,11 @@ def __init__(self, smarthome, item): self.shtime = Shtime.get_instance() self.__sh = smarthome self.__item = item - self.__id = self.__item.property.path + try: + self.__id = self.__item.property.path + except Exception as err: + self._log_info("Problem initializing ID of item {}. {}", self.__item, err) + self.__id = item self.__name = str(self.__item) # initialize logging self.__logger = SeLogger.create(self.__item) @@ -105,7 +109,7 @@ def __init__(self, smarthome, item): try: self.__states.append(StateEngineState.SeState(self, item_state)) except ValueError as ex: - self.__logger.error("Ignoring state {0} because: {1}".format(item_state.property.path, str(ex))) + self.__logger.error("Ignoring state {0} because: {1}".format(item_state.property.path, ex)) if len(self.__states) == 0: raise ValueError("{0}: No states defined!".format(self.id)) @@ -126,6 +130,9 @@ def __init__(self, smarthome, item): else: self.__startup_delay_callback(self.__item, "Init", None, None) + def __repr__(self): + return "SeItem item: {}.".format(self.__id) + # Find the state, matching the current conditions and perform the actions of this state # caller: Caller that triggered the update # noinspection PyCallingNonCallable,PyUnusedLocal @@ -194,7 +201,7 @@ def update_state(self, item, caller=None, source=None, dest=None): # New state is last state if self.__laststate_internal_name != new_state.name: self.__laststate_set(new_state) - new_state.run_stay(self.__repeat_actions.get()) + new_state.run_stay(self.__repeat_actions.get()) else: # New state is different from last state @@ -215,6 +222,8 @@ def __update_check_can_enter(self, state): self.__variables["current.state_id"] = state.id self.__variables["current.state_name"] = state.name return state.can_enter() + except Exception as ex: + self.__logger.warning("Problem with currentstate {0}", ex) finally: self.__variables["current.state_id"] = "" self.__variables["current.state_name"] = "" @@ -483,5 +492,6 @@ def return_item(self, item_id: str): # attribute: Name of the attribute of the StateEngine object item, which contains the item_id to read def return_item_by_attribute(self, attribute): if attribute not in self.__item.conf: + self.__logger.warning("Problem with attribute '{0}'.".format(attribute)) return None return self.return_item(self.__item.conf[attribute]) diff --git a/stateengine/StateEngineState.py b/stateengine/StateEngineState.py index 8276f8ce2..16aa2e5f1 100755 --- a/stateengine/StateEngineState.py +++ b/stateengine/StateEngineState.py @@ -47,7 +47,11 @@ def text(self): def __init__(self, abitem, item_state): super().__init__(abitem) self.__item = item_state - self.__id = self.__item.property.path + try: + self.__id = self.__item.property.path + self._log_info("Init state {}", self.__id) + except Exception as err: + self._log_info("Problem init state ID of Item {}. {}", self.__item, err) self.__name = "" self.__text = StateEngineValue.SeValue(self._abitem, "State Name", False, "str") self.__conditions = StateEngineConditionSets.SeConditionSets(self._abitem) @@ -55,13 +59,15 @@ def __init__(self, abitem, item_state): self.__actions_enter = StateEngineActions.SeActions(self._abitem) self.__actions_stay = StateEngineActions.SeActions(self._abitem) self.__actions_leave = StateEngineActions.SeActions(self._abitem) - self._log_info("Init state {}", item_state.property.path) self._log_increase_indent() try: self.__fill(self.__item, 0) finally: self._log_decrease_indent() + def __repr__(self): + return "SeState item: {}, id {}.".format(self.__item, self.__id) + # Check conditions if state can be entered # returns: True = At least one enter condition set is fulfulled, False = No enter condition set is fulfilled def can_enter(self): @@ -169,7 +175,7 @@ def __fill(self, item_state, recursion_depth): elif child_name == "enter" or child_name.startswith("enter_"): self.__conditions.update(child_name, child_item, parent_item) except ValueError as ex: - raise ValueError("Condition {0}: {1}".format(child_name, str(ex))) + raise ValueError("Condition {0} error: {1}".format(child_name, ex)) # Actions defined directly in the item go to "enter_or_stay" for attribute in item_state.conf: diff --git a/stateengine/StateEngineTools.py b/stateengine/StateEngineTools.py index ea7b56eee..05a210848 100755 --- a/stateengine/StateEngineTools.py +++ b/stateengine/StateEngineTools.py @@ -19,7 +19,9 @@ # along with this plugin. If not, see . ######################################################################### import datetime +import logging +logger = logging.getLogger(__name__) # # Some general tool functions # @@ -60,7 +62,7 @@ def cast_num(value): return float(value) except: pass - raise ValueError("Can't cast {0} to int!".format(str(value))) + raise ValueError("Can't cast {0} to int!".format(value)) # cast a value as boolean. Throws ValueError or TypeError if cast is not possible @@ -166,10 +168,21 @@ def get_eval_name(eval_func): if eval_func is None: return None if eval_func is not None: - if isinstance(eval_func, str): - return eval_func + if isinstance(eval_func, list): + functionnames = [] + for func in eval_func: + if isinstance(func, str): + functionnames.append(func) + else: + functionnames.append(func.__module__ + "." + func.__name__) + logger.error("eval func return {}".format(functionnames)) + return functionnames else: - return eval_func.__module__ + "." + eval_func.__name__ + if isinstance(eval_func, str): + return eval_func + else: + logger.error("module return {}".format(eval_func.__module__ + "." + eval_func.__name__)) + return eval_func.__module__ + "." + eval_func.__name__ # determine original caller/source diff --git a/stateengine/StateEngineValue.py b/stateengine/StateEngineValue.py index b054ea4aa..cf8ce03d7 100755 --- a/stateengine/StateEngineValue.py +++ b/stateengine/StateEngineValue.py @@ -21,7 +21,6 @@ from . import StateEngineTools from . import StateEngineEval - # Class representing a value for a condition (either value or via item/eval) class SeValue(StateEngineTools.SeItemChild): # Constructor @@ -49,6 +48,9 @@ def __init__(self, abitem, name, allow_value_list=False, value_type=None): else: self.__cast_func = None + def __repr__(self): + return "SeValue item: {}, name {}, value {}.".format(self.__item, self.__name, self.__value) + # Indicate of object is empty (neither value nor item nor eval set) def is_empty(self): return self.__value is None and self.__item is None and self.__eval is None and self.__varname is None @@ -67,13 +69,22 @@ def set_from_attr(self, item, attribute_name, default_value=None): # name: name of object ("time" is being handeled different) def set(self, value, name=""): if isinstance(value, list): - source, field_value = StateEngineTools.partition_strip(value[0], ":") - if field_value == "": - source = "value" - field_value = value - else: - value[0] = field_value - field_value = value + source = [] + field_value = [] + for i, val in enumerate(value): + if isinstance(val, str): + s, f = StateEngineTools.partition_strip(val, ":") + else: + s = "value" + f = val + source.append(s) + field_value.append(f) + if field_value[i] == "": + source[i] = "value" + field_value[i] = value[i] + else: + value[i] = field_value[i] + field_value[i] = value[i] elif isinstance(value, str): source, field_value = StateEngineTools.partition_strip(value, ":") if name == "time" and source.isdigit() and field_value.isdigit(): @@ -86,15 +97,37 @@ def set(self, value, name=""): source = "value" field_value = value - if source == "value": - if isinstance(field_value, list) and not self.__allow_value_list: - raise ValueError("{0}: value_in is not allowed".format(self.__name)) - self.__value = self.__do_cast(field_value) + if isinstance(source, list): + for i, s in enumerate(source): + if isinstance(field_value[i], list) and not self.__allow_value_list: + raise ValueError("{0}: value_in is not allowed. Field_value: {1} ({2})".format(self.__name, field_value[i], self.__allow_value_list)) + else: + self.__value = [] if self.__value is None else self.__value + self.__value.append(None if s != "value" else self.__do_cast(field_value[i])) + self.__item = [] if self.__item is None else self.__item + self.__item.append(None if s != "item" else self._abitem.return_item(field_value[i])) + self.__eval = [] if self.__eval is None else self.__eval + self.__eval.append(None if s != "eval" else field_value[i]) + self.__varname = [] if self.__varname is None else self.__varname + self.__varname.append(None if s != "var" else field_value[i]) + self.__item = [i for i in self.__item if i] + self.__eval = [i for i in self.__eval if i] + self.__varname = [i for i in self.__varname if i] + self.__value = [i for i in self.__value if i] + self.__value = self.__value[0] if len(self.__value) == 1 else None if len(self.__value) == 0 else self.__value + self.__item = self.__item[0] if len(self.__item) == 1 else None if len(self.__item) == 0 else self.__item + self.__eval = self.__eval[0] if len(self.__eval) == 1 else None if len(self.__eval) == 0 else self.__eval + self.__varname = self.__varname[0] if len(self.__varname) == 1 else None if len(self.__varname) == 0 else self.__varname else: - self.__value = None - self.__item = None if source != "item" else self._abitem.return_item(field_value) - self.__eval = None if source != "eval" else field_value - self.__varname = None if source != "var" else field_value + self.__item = None if source != "item" else self._abitem.return_item(field_value) + self.__eval = None if source != "eval" else field_value + self.__varname = None if source != "var" else field_value + if source == "value": + if isinstance(field_value, list) and not self.__allow_value_list: + raise ValueError("{0}: value_in is not allowed".format(self.__name)) + self.__value = self.__do_cast(field_value) + else: + self.__value = None # Set cast function # cast_func: cast function @@ -104,16 +137,21 @@ def set_cast(self, cast_func): # determine and return value def get(self, default=None): + returnvalues = [] if self.__value is not None: - return self.__value - elif self.__eval is not None: - return self.__get_eval() - elif self.__item is not None: - return self.__get_from_item() - elif self.__varname is not None: - return self.__get_from_variable() - else: + returnvalues.append(self.__value) + if self.__eval is not None: + returnvalues.append(self.__get_eval()) + if self.__item is not None: + returnvalues.append(self.__get_from_item()) + if self.__varname is not None: + returnvalues.append(self.__get_from_variable()) + if len(returnvalues) == 0: return default + elif len(returnvalues) == 1: + return returnvalues[0] + else: + return returnvalues def get_type(self): if self.__value is not None: @@ -131,11 +169,15 @@ def get_type(self): def write_to_logger(self): if self.__value is not None: self._log_debug("{0}: {1}", self.__name, self.__value) - elif self.__item is not None: - self._log_debug("{0} from item: {1}", self.__name, self.__item.property.path) - elif self.__eval is not None: + if self.__item is not None: + if isinstance(self.__item, list): + for i in self.__item: + self._log_debug("{0} from item: {1}", self.__name, i.property.path) + else: + self._log_debug("{0} from item: {1}", self.__name, self.__item.property.path) + if self.__eval is not None: self._log_debug("{0} from eval: {1}", self.__name, self.__eval) - elif self.__varname is not None: + if self.__varname is not None: self._log_debug("{0} from variable: {1}", self.__name, self.__varname) # Get Text (similar to logger text) @@ -145,7 +187,11 @@ def get_text(self, prefix=None, suffix=None): if self.__value is not None: value = "{0}: {1}".format(self.__name, self.__value, prefix, suffix) elif self.__item is not None: - value = "{0} from item: {1}".format(self.__name, self.__item.property.path) + if isinstance(self.__item, list): + for i in self.__item: + self._log_debug("{0} from item: {1}", self.__name, i.property.path) + else: + self._log_debug("{0} from item: {1}", self.__name, self.__item.property.path) elif self.__eval is not None: value = "{0} from eval: {1}".format(self.__name, self.__eval) elif self.__varname is not None: @@ -162,58 +208,96 @@ def get_text(self, prefix=None, suffix=None): def __do_cast(self, value): if value is not None and self.__cast_func is not None: try: - if type(value) == list: + if isinstance(value, list): # noinspection PyCallingNonCallable - value = [self.__cast_func(element) for element in value] + valuelist = [] + for element in value: + valuelist.append(element if element == 'novalue' else self.__cast_func(element)) + value = valuelist else: # noinspection PyCallingNonCallable value = self.__cast_func(value) except Exception as ex: - self._log_info("Problem casting value '{0}': {1}.", value, str(ex)) + self._log_info("Problem casting value '{0}' to {2}: {1}.", value, ex, self.__cast_func) return None return value # Determine value by executing eval-function def __get_eval(self): + # noinspection PyUnusedLocal + sh = self._sh if isinstance(self.__eval, str): - # noinspection PyUnusedLocal - sh = self._sh if "stateengine_eval" in self.__eval: # noinspection PyUnusedLocal stateengine_eval = StateEngineEval.SeEval(self._abitem) try: - value = eval(self.__eval) + values = eval(self.__eval) except Exception as ex: - self._log_info("Problem evaluating '{0}': {1}.", StateEngineTools.get_eval_name(self.__eval), str(ex)) + self._log_info("Problem evaluating '{0}': {1}.", StateEngineTools.get_eval_name(self.__eval), ex) return None else: - try: - # noinspection PyCallingNonCallable - value = self.__eval() - except Exception as ex: - self._log_info("Problem calling '{0}': {1}.", StateEngineTools.get_eval_name(self.__eval), str(ex)) - return None + if isinstance(self.__eval, list): + values = [] + for val in self.__eval: + self._log_info("Checking eval '{0}': {1}.", self.__eval, val) + if isinstance(val, str): + if "stateengine_eval" in val: + # noinspection PyUnusedLocal + stateengine_eval = StateEngineEval.SeEval(self._abitem) + self._log_debug("Using internal eval function {}".format(stateengine_eval)) + try: + value = eval(val) + except Exception as ex: + self._log_info("Problem evaluating from list '{0}': {1}.", StateEngineTools.get_eval_name(val), ex) + value = None + else: + try: + value = val() + except Exception as ex: + self._log_info("Problem calling '{0}': {1}.", StateEngineTools.get_eval_name(val), ex) + value = None + if value is not None: + values.append(self.__do_cast(value)) + else: + try: + values = self.__eval() + except Exception as ex: + self._log_info("Problem calling '{0}': {1}.", StateEngineTools.get_eval_name(self.__eval), ex) + return None - return self.__do_cast(value) + return self.__do_cast(values) # Determine value from item def __get_from_item(self): try: - # noinspection PyCallingNonCallable - value = self.__item() + if isinstance(self.__item, list): + values = [] + for val in self.__item: + self._log_info("Checking item '{0}': {1}.", self.__item, val) + value = val.property.value + values.append(self.__do_cast(value)) + else: + values = self.__item.property.value except Exception as ex: - self._log_info("Problem while reading item '{0}': {1}.", self.__item.property.path, str(ex)) + self._log_info("Problem while reading item '{0}': {1}.", self.__item.property.path, ex) return None - return self.__do_cast(value) + return self.__do_cast(values) - # Fetermine value from variable + # Determine value from variable def __get_from_variable(self): try: - value = self._abitem.get_variable(self.__varname) + if isinstance(self.__varname, list): + values = [] + for var in self.__varname: + self._log_info("Checking variable '{0}': {1}.", self.__varname, var) + value = self._abitem.get_variable(var) + values.append(self.__do_cast(value)) + else: + values = self._abitem.get_variable(self.__varname) except Exception as ex: - self._log_info("Problem while reading variable '{0}': {1}.", self.__varname, str(ex)) + self._log_info("Problem while reading variable '{0}': {1}.", self.__varname, ex) return None - return self.__do_cast(value) + return values From 8d7d5a800e6da46fe8b69f684972bbdc047db823 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sat, 1 Jun 2019 22:42:12 +0200 Subject: [PATCH 072/200] =?UTF-8?q?Update=20Doku:=20Listeneintr=C3=A4ge=20?= =?UTF-8?q?f=C3=BCr=20Bedingungen?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- stateengine/user_doc/user_doc5.rst | 38 ++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/stateengine/user_doc/user_doc5.rst b/stateengine/user_doc/user_doc5.rst index 7607d2c25..14a0205e3 100755 --- a/stateengine/user_doc/user_doc5.rst +++ b/stateengine/user_doc/user_doc5.rst @@ -73,6 +73,43 @@ die jeweils mit einem Unterstrich "_" getrennt werden: - ````: siehe unten. Beispiel: min = der Wert des muss mindestens dem beim Attribut angegebenen Wert entsprechen. - ````: Hier wird entweder das im Regelwerk-Item mittels ``se_item_`` deklarierte Item oder eine besondere Bedingung (siehe unten) referenziert. +.. rubric:: Bedingungslisten + :name: bedingungslisten + +Sämtliche nun gelisteten Bedingungen können entweder eine einzelne Angabe haben oder aus einer Liste mit mehreren Bedingungen bestehen. +In letzterem Fall fungiert die Liste als ODER Abfrage. Sobald eine der gelisteten Werte eingetroffen ist, wird die Bedingung als wahr angenommen +und der Zustand aktiviert. + +.. code-block:: yaml + + se_laststate: + - 'kochen' + - 'eval:1+2' + - 'item:..laststate_id' + +Im oben gezeigten Beispiel kann der letzte Status einen von drei Werten beinhalten, damit die Bedingung wahr ist. In welcher Form diese Werte +angegeben werden, ist offen - es müssen also nicht nur reine Strings in die Liste eingefügt werden. + +Werden sowohl min(age) als auch max(age) als Liste definiert, spielt die Reihenfolge der Liste eine Rolle, da die beiden Werte als Paar herangezogen werden. + +.. code-block:: yaml + + se_minage_: + - '5' + - 'eval:1+2' + - 'novalue' + + se_maxage_: + - '10' + - 'eval:5*sh.meinwert()' + - 'item:EinzweitesItem' + +Obige Bedingung wird beispielsweise wahr bei: +- einem Wert zwischen 5 und 10 +- einem Wert zwischen 3 und 5 * der Wert des Items meinwert +- einem Wert maximal so hoch wie der in EinzweitesIem hinterlegte + +Wichtig ist dabei zu beachten, dass Abfragen von Items und Eval Funktionen am Ende der Liste platziert werden sollten. .. rubric:: Vergleichsfunktion :name: vergleichsfunktion @@ -153,6 +190,7 @@ Die Altersbedingung (Mindestalter, Höchstalter) wird negiert zulässige Werte sind "true", "1", "yes", "on" bzw. "false", "0", "no", "off" + .. rubric:: "Besondere" Bedingungen :name: besonderebedingungen From 155049c83d58a055147ca783be1a43b24eefe87b Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sat, 1 Jun 2019 22:52:49 +0200 Subject: [PATCH 073/200] Update Doku: Logging --- stateengine/user_doc/user_doc11.rst | 2 +- stateengine/user_doc/user_doc2.rst | 36 +++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 1 deletion(-) diff --git a/stateengine/user_doc/user_doc11.rst b/stateengine/user_doc/user_doc11.rst index b98aedc70..0ae3a6a3a 100755 --- a/stateengine/user_doc/user_doc11.rst +++ b/stateengine/user_doc/user_doc11.rst @@ -44,7 +44,7 @@ Ermittlung des Werts für ein Item, hier wird jedoch kein Item benötigt. Außerdem wird der Rückgabewert der Funktion ignoriert. .. rubric:: Aktion: Auslösen einer Logikausführung - :name: aktionauslseneinerlogikausfhrung + :name: aktionausloeseneinerlogikausfuehrung .. code-block:: yaml diff --git a/stateengine/user_doc/user_doc2.rst b/stateengine/user_doc/user_doc2.rst index b5a909f08..bf8ccdb78 100755 --- a/stateengine/user_doc/user_doc2.rst +++ b/stateengine/user_doc/user_doc2.rst @@ -21,3 +21,39 @@ Konfiguration #log_level: 0 #log_directory: var/log/StateEngine/ #log_maxage: 0 + +.. rubric:: Logging + :name: logging + +Es gibt zwei Möglichkeiten, den Output des Plugins zu loggen: +**intern** +Hierbei werden, sofern das Loglevel 1 oder 2 beträgt, sämtliche Logeinträge in eigene Dateien in einem selbst definierten Verzeichnis geschrieben. + +**logging.yaml** +Sowohl der Output des Plugins generell, als auch der Einträge für bestimmte Items können in der logging.yaml Datei wie folge deklariert werden: + +.. code-block:: yaml + + #etc/logging.yaml + stateengine_file: + class: logging.handlers.TimedRotatingFileHandler + formatter: shng_simple + level: DEBUG + utc: false + when: midnight + backupCount: 7 + filename: ./var/log/stateengine.log + encoding: utf8 + + plugins.stateengine: + # Default logger for SmartHomeNG plugins + handlers: [shng_details_file] + level: ERROR + + plugins.stateengine.licht: + # Default logger for SmartHomeNG plugins + handlers: [stateengine_file] + level: DEBUG + +Das obige Beispiel würde in die Datei var/log/stateengine.log sämtliche Debug Information schreiben, die für das Item und dessen Unteritem relevant sind, +also z.B. sämtliche Lichter. Zusätzlich werden alle Fehlermeldungen in die Datei smarthome-details.log geschrieben. From 8533e819f365f3c28abb9183c2b24a84e4d91e72 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 2 Jun 2019 06:42:12 +0200 Subject: [PATCH 074/200] docu update for logging --- stateengine/user_doc/user_doc2.rst | 47 +++++++++++++++--------------- 1 file changed, 24 insertions(+), 23 deletions(-) diff --git a/stateengine/user_doc/user_doc2.rst b/stateengine/user_doc/user_doc2.rst index bf8ccdb78..1995a588c 100755 --- a/stateengine/user_doc/user_doc2.rst +++ b/stateengine/user_doc/user_doc2.rst @@ -30,30 +30,31 @@ Es gibt zwei Möglichkeiten, den Output des Plugins zu loggen: Hierbei werden, sofern das Loglevel 1 oder 2 beträgt, sämtliche Logeinträge in eigene Dateien in einem selbst definierten Verzeichnis geschrieben. **logging.yaml** -Sowohl der Output des Plugins generell, als auch der Einträge für bestimmte Items können in der logging.yaml Datei wie folge deklariert werden: +Sowohl der Output des Plugins generell, als auch der Einträge für bestimmte Items können in der logging.yaml Datei wie folgt deklariert werden: .. code-block:: yaml #etc/logging.yaml - stateengine_file: - class: logging.handlers.TimedRotatingFileHandler - formatter: shng_simple - level: DEBUG - utc: false - when: midnight - backupCount: 7 - filename: ./var/log/stateengine.log - encoding: utf8 - - plugins.stateengine: - # Default logger for SmartHomeNG plugins - handlers: [shng_details_file] - level: ERROR - - plugins.stateengine.licht: - # Default logger for SmartHomeNG plugins - handlers: [stateengine_file] - level: DEBUG - -Das obige Beispiel würde in die Datei var/log/stateengine.log sämtliche Debug Information schreiben, die für das Item und dessen Unteritem relevant sind, -also z.B. sämtliche Lichter. Zusätzlich werden alle Fehlermeldungen in die Datei smarthome-details.log geschrieben. + handlers: + stateengine_licht_file: + class: logging.handlers.TimedRotatingFileHandler + formatter: shng_simple + level: DEBUG + utc: false + when: midnight + backupCount: 2 + filename: ./var/log/stateengine_licht.log + encoding: utf8 + + loggers: + plugins.stateengine: + # Default logger for SmartHomeNG plugins + handlers: [shng_details_file] + level: ERROR + + plugins.stateengine.licht: + # Default logger for SmartHomeNG plugins + handlers: [stateengine_licht_file] + level: DEBUG + +Das obige Beispiel würde in die Datei var/log/stateengine_licht.log sämtliche Debug Information schreiben, die für das Item "licht" und dessen Unteritem relevant sind. Zusätzlich werden alle Fehler des Plugins in die Datei smarthome-details.log geschrieben. From 0fa940b61dd58d50d7d3672013e6da67c81ed538 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 2 Jun 2019 06:50:59 +0200 Subject: [PATCH 075/200] Update itemparse (expand paths, use has_iattr --- stateengine/__init__.py | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/stateengine/__init__.py b/stateengine/__init__.py index 99948cded..6a94164e4 100755 --- a/stateengine/__init__.py +++ b/stateengine/__init__.py @@ -83,10 +83,12 @@ def __init__(self, sh): # Parse an item # noinspection PyMethodMayBeStatic def parse_item(self, item): - if "se_manual_include" in item.conf or "se_manual_exclude" in item.conf: + if self.has_iattr(item.conf, "se_item_*"): + item.expand_relativepathes('se_item_*', '', '') + elif self.has_iattr(item.conf, "se_manual_include") or self.has_iattr(item.conf, "se_manual_exclude"): item._eval = "sh.stateengine_plugin_functions.manual_item_update_eval('" + item.property.path + "', caller, source)" - elif "se_manual_invert" in item.conf: - item._eval = "not sh." + item.property.path + "()" + elif self.has_iattr(item.conf, "se_manual_invert"): + item._eval = "not sh." + item.property.value return None From c63f1d543b05911b0f8d8a41b98c3bf8f761d6a3 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 2 Jun 2019 09:08:41 +0200 Subject: [PATCH 076/200] New version, prepare new relative item declaration check --- stateengine/StateEngineItem.py | 2 +- stateengine/__init__.py | 11 +++++++---- stateengine/plugin.yaml | 2 +- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/stateengine/StateEngineItem.py b/stateengine/StateEngineItem.py index 10ab0c4fe..39a8bb7fd 100755 --- a/stateengine/StateEngineItem.py +++ b/stateengine/StateEngineItem.py @@ -465,7 +465,7 @@ def return_item(self, item_id: str): if item is None: self.__logger.warning("Item '{0}' not found!".format(item_id)) return item - + self.__logger.debug("Testing for relative item declaration {}".format(item_id)) parent_level = 0 for c in item_id: if c != '.': diff --git a/stateengine/__init__.py b/stateengine/__init__.py index 6a94164e4..5163b5e7e 100755 --- a/stateengine/__init__.py +++ b/stateengine/__init__.py @@ -33,7 +33,7 @@ class StateEngine(SmartPlugin): - PLUGIN_VERSION = '1.5.1' + PLUGIN_VERSION = '1.5.2' # Constructor # noinspection PyUnusedLocal,PyMissingConstructor @@ -83,9 +83,12 @@ def __init__(self, sh): # Parse an item # noinspection PyMethodMayBeStatic def parse_item(self, item): - if self.has_iattr(item.conf, "se_item_*"): + try: item.expand_relativepathes('se_item_*', '', '') - elif self.has_iattr(item.conf, "se_manual_include") or self.has_iattr(item.conf, "se_manual_exclude"): + item.expand_relativepathes('se_*', ['item:', 'sh.', 'sh.', 'sh.'], ['', '.path', '.value', ')']) + except Exception: + pass + if self.has_iattr(item.conf, "se_manual_include") or self.has_iattr(item.conf, "se_manual_exclude"): item._eval = "sh.stateengine_plugin_functions.manual_item_update_eval('" + item.property.path + "', caller, source)" elif self.has_iattr(item.conf, "se_manual_invert"): item._eval = "not sh." + item.property.value @@ -102,7 +105,7 @@ def run(self): ab_item = StateEngineItem.SeItem(self.get_sh(), item) self.__items[ab_item.id] = ab_item except ValueError as ex: - self.logger.error("Problem with Item: {0}: {1}".format(item.property.path, str(ex))) + self.logger.error("Problem with Item: {0}: {1}".format(item.property.path, ex)) if len(self.__items) > 0: self.logger.info("Using StateEngine for {} items".format(len(self.__items))) diff --git a/stateengine/plugin.yaml b/stateengine/plugin.yaml index ff122071a..e065352a1 100755 --- a/stateengine/plugin.yaml +++ b/stateengine/plugin.yaml @@ -26,7 +26,7 @@ plugin: documentation: https://www.smarthomeng.de/user/plugins/stateengine/user_doc.html support: https://knx-user-forum.de/forum/supportforen/smarthome-py/1303071-stateengine-plugin-support - version: 1.5.1 + version: 1.5.2 sh_minversion: 1.6 multi_instance: False classname: StateEngine From 8e38d291e18da4c7bc345734f760b6298977f5f6 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 2 Jun 2019 10:03:51 +0200 Subject: [PATCH 077/200] Additional manual_exclude/include options/function It is now possible to use all infos from the KNX plugin: KNX: phycial address: group address Furthermore, empty spaces and upper/lowercase shouldn't matter anymore --- stateengine/StateEngineFunctions.py | 14 ++++++++------ stateengine/__init__.py | 2 +- stateengine/user_doc/user_doc10.rst | 11 ++++++----- stateengine/user_doc/user_doc8.rst | 6 +++--- stateengine/user_doc/user_doc9.rst | 4 ++-- 5 files changed, 20 insertions(+), 17 deletions(-) diff --git a/stateengine/StateEngineFunctions.py b/stateengine/StateEngineFunctions.py index e0dc7aeec..5f8bed7b4 100755 --- a/stateengine/StateEngineFunctions.py +++ b/stateengine/StateEngineFunctions.py @@ -124,9 +124,10 @@ def manual_item_update_eval(self, item_id, caller=None, source=None): # If current value is in list -> Return "NoTrigger" for entry in exclude: - entry_caller, __, entry_source = entry.partition(":") - if (entry_caller == original_caller or entry_caller == "*") and ( - entry_source == original_source or entry_source == "*"): + entry_caller, __, entry_source, entry_additional = entry.partition(":") + if (entry_caller.lower().strip() == original_caller.lower() or entry_caller == "*") and ( + entry_source.lower().strip() == original_source.lower() or entry_source == "*") and ( + entry_additional.lower().strip() == entry_additional.lower() or entry_additional == "*"): elog.debug("{0}: matching. Writing value {1}", entry, retval_no_trigger) return retval_no_trigger elog.debug("{0}: not matching", entry) @@ -145,9 +146,10 @@ def manual_item_update_eval(self, item_id, caller=None, source=None): # If current value is in list -> Return "Trigger" for entry in include: - entry_caller, __, entry_source = entry.partition(":") - if (entry_caller == original_caller or entry_caller == "*") and ( - entry_source == original_source or entry_source == "*"): + entry_caller, __, entry_source, entry_additional = entry.partition(":") + if (entry_caller.lower().strip() == original_caller.lower() or entry_caller == "*") and ( + entry_source.lower().strip() == original_source.lower() or entry_source == "*") and ( + entry_additional.lower().strip() == entry_additional.lower() or entry_additional == "*"): elog.debug("{0}: matching. Writing value {1}", entry, retval_trigger) return retval_trigger elog.debug("{0}: not matching", entry) diff --git a/stateengine/__init__.py b/stateengine/__init__.py index 5163b5e7e..285d6466d 100755 --- a/stateengine/__init__.py +++ b/stateengine/__init__.py @@ -85,7 +85,7 @@ def __init__(self, sh): def parse_item(self, item): try: item.expand_relativepathes('se_item_*', '', '') - item.expand_relativepathes('se_*', ['item:', 'sh.', 'sh.', 'sh.'], ['', '.path', '.value', ')']) + item.expand_relativepathes('se_*', ['item:', 'sh.', 'sh.', 'sh.', 'sh.'], ['', '.path', '.value', '.name', ')']) except Exception: pass if self.has_iattr(item.conf, "se_manual_include") or self.has_iattr(item.conf, "se_manual_exclude"): diff --git a/stateengine/user_doc/user_doc10.rst b/stateengine/user_doc/user_doc10.rst index 59ccfc260..fef60ae84 100755 --- a/stateengine/user_doc/user_doc10.rst +++ b/stateengine/user_doc/user_doc10.rst @@ -244,7 +244,7 @@ bei jeder manuellen Betätigung invertiert wird: se_manual_logitem: beispiel.raffstore1.automatik.manuell se_manual_exclude: - database:* - - KNX:1.1.4 + - KNX:1.1.4:* eval_trigger: - taster1 - taster2 @@ -271,9 +271,10 @@ Jalousieaktor. Hierfür stehen zwei weitere Attribute bereit: Bei beiden Attributen wird eine Liste von Elementen angegeben. Die einzelnen Elemente bestehen dabei aus dem Aufrufenden -(``Caller``) einem Doppelpunkt und der Quelle (``Source``). Ohne Leerzeichen! +(``Caller``) einem Doppelpunkt und der Quelle (``Source``), bei Bedarf auch einer +weiteren durch Doppelpunkt getrennte Information wie z.B. die Gruppenadresse beim KNX Plugin. Mehrere Elemente werden durch "|" getrennt bzw. im yaml als Liste deklariert. -Für ``Caller`` und ``Source`` kann dabei jeweils auch ``"*"`` angegeben werden, dies +Für ``Caller`` und ``Source`` sowie ``Additional`` kann dabei jeweils auch ``"*"`` angegeben werden, dies bedeutet, dass der jeweilige Teil nicht berücksichtigt werd. Wenn bei der Prüfung festgestellt wird, dass ein Wert über eine @@ -282,12 +283,12 @@ zurückverfolgt bis zur ursprünglichen Änderung, die die Eval-Kette ausgelöst hat. Diese ursprüngliche Änderung wird dann geprüft. Der Wert von ``Caller`` zeigt an, welche Funktionalität das Item -geändert hat. Der Wert von ``Source`` ist Abhängig vom Caller. +geändert hat. Der Wert von ``Source`` und ``Additional`` ist Abhängig vom Caller. Häufig verwendete ``Caller`` sind: - ``Init``: Initialisierung von smarthomeNG. ``Source`` ist in der Regel leer - ``Visu``: Änderung über die Visualisierung (Visu-Plugin). ``Source`` beinhaltet die IP und den Port der Gegenstelle -- ``KNX``: Änderung über das KNX-Plugin. ``Source`` ist die physische Adresse des sendenden Geräts +- ``KNX``: Änderung über das KNX-Plugin. ``Source`` ist die physische Adresse des sendenden Geräts. ``Additional`` beinhaltet die Gruppenadresse. Wenn ``se_manual_include`` oder ``se_manual_exclude`` angegeben diff --git a/stateengine/user_doc/user_doc8.rst b/stateengine/user_doc/user_doc8.rst index 26b74b1c9..517d15b0d 100755 --- a/stateengine/user_doc/user_doc8.rst +++ b/stateengine/user_doc/user_doc8.rst @@ -311,7 +311,7 @@ Regelwerk-Items "rules" sollen ebenfalls je nach Bedarf ergänzt werden. - beispiel.raffstore1.hoehe - beispiel.raffstore1.lamelle se_manual_exclude: - - 'KNX:0.0.0' # Hier die Gruppenadresse des Schalt/Jalousieaktors angeben! + - 'KNX:0.0.0:*' # Hier die physikalische Adresse des Schalt/Jalousieaktors angeben! - 'Init:*' - 'database:*' @@ -475,7 +475,7 @@ abgeändert. Es wird explizit auf Template-Imports via struct verzichtet. - beispiel.raffstore2.lamelle # Änderungen, die ursprünglich von diesen Triggern (:) ausgelöst wurden, sollen nicht als manuelle Bedienung gewertet werden se_manual_exclude: - - KNX:y.y.y + - KNX:*:ga=1/2/3 # Hier die Gruppenadresse angeben - Init:* anwesenheit: @@ -712,7 +712,7 @@ Letzten Endes wird alles in einem item.yaml auf folgende Art und Weise implement - ...dimmen.taster se_manual_exclude: - Database:* - - KNX:1.1.2 + - KNX:1.1.2:* settings_edited: type: bool diff --git a/stateengine/user_doc/user_doc9.rst b/stateengine/user_doc/user_doc9.rst index 6c6c7d12d..20302102a 100755 --- a/stateengine/user_doc/user_doc9.rst +++ b/stateengine/user_doc/user_doc9.rst @@ -37,7 +37,7 @@ können wie folgt eingebunden werden: - beispiel.raffstore1.hoehe - beispiel.raffstore1.lamelle se_manual_exclude: - - KNX:y.y.y + - KNX:y.y.y:* - Init:* rules: @@ -121,7 +121,7 @@ z.B. Schalten eines Lichts oder Fahren einer Jalousie mittels Taster oder Visu. In diesem Fall soll die automatiche Evaluierung für eine gewisse Zeit pausieren. Beim ``manuell`` Item muss unter Umständen der Eintrag ``se_manual_exclude`` in der eigenen -Baumstruktur überschrieben und durch einen Eintrag ``- KNX:GA des Aktors`` +Baumstruktur überschrieben und durch einen Eintrag (z.B. beim Einsatz von KNX Aktoren) ``- KNX:physikalische Adresse:Gruppenadresse`` ergänzt werden. Außerdem muss ein eval_trigger manuell deklariert werden. Hier sollten alle Items gelistet sein, die für ein vroübergehendes Aussetzen der Automatisierung sorgen sollen (z.B. Schalt- und Dimm-Items) From cc445ef40f6aee4ea63c24f0474110b686cdb1cb Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 2 Jun 2019 10:48:04 +0200 Subject: [PATCH 078/200] fix init relativepaths property --- stateengine/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stateengine/__init__.py b/stateengine/__init__.py index 285d6466d..f71b28323 100755 --- a/stateengine/__init__.py +++ b/stateengine/__init__.py @@ -85,7 +85,7 @@ def __init__(self, sh): def parse_item(self, item): try: item.expand_relativepathes('se_item_*', '', '') - item.expand_relativepathes('se_*', ['item:', 'sh.', 'sh.', 'sh.', 'sh.'], ['', '.path', '.value', '.name', ')']) + item.expand_relativepathes('se_*', ['item:', 'sh.', 'sh.', 'sh.', 'sh.'], ['', '.property.path', '.property.value', '.property.name']) except Exception: pass if self.has_iattr(item.conf, "se_manual_include") or self.has_iattr(item.conf, "se_manual_exclude"): From 6483102d588bb81a745bd30c24cae452b5190652 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 2 Jun 2019 11:30:49 +0200 Subject: [PATCH 079/200] Better handling of action definitions Previously it was important to define a action like this: - 'to:eval:bla' Now you can provide the list entry like this: - to: 'eval: bla' --- stateengine/StateEngineActions.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/stateengine/StateEngineActions.py b/stateengine/StateEngineActions.py index 55bbc3ef6..441f581fc 100755 --- a/stateengine/StateEngineActions.py +++ b/stateengine/StateEngineActions.py @@ -128,7 +128,10 @@ def __handle_combined_action_attribute(self, name, value_list): # parse parameters parameter = {'function': None, 'force': None, 'repeat': None, 'delay': 0, 'order': None} for entry in value_list: + if isinstance(entry, dict): + entry = list("{!s}:{!s}".format(k,v) for (k,v) in entry.items())[0] key, val = StateEngineTools.partition_strip(entry, ":") + val = ":".join(map(str.strip, val.split(":"))) if key == "function": parameter[key] = StateEngineTools.cast_str(val) elif key == "force": From 6c8a30b84c222aa38855f2f0bceeda537f6515f2 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 2 Jun 2019 13:46:45 +0200 Subject: [PATCH 080/200] fix typo and log --- stateengine/StateEngineAction.py | 4 ++-- stateengine/StateEngineCondition.py | 1 - 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/stateengine/StateEngineAction.py b/stateengine/StateEngineAction.py index b9bde50f1..b8b98a5ed 100755 --- a/stateengine/StateEngineAction.py +++ b/stateengine/StateEngineAction.py @@ -492,11 +492,11 @@ def _execute(self, actionname: str, repeat_text: str = ""): def suspend_get_value(self, value): if value is None: - raise ValueError("Action {0}: Secial action 'suspend' requires arguments!") + raise ValueError("Action {0}: Special action 'suspend' requires arguments!") suspend, manual = StateEngineTools.partition_strip(value, ",") if suspend is None or manual is None: - raise ValueError("Action {0}: Secial action 'suspend' requires two arguments (separated by a comma)!") + raise ValueError("Action {0}: Special action 'suspend' requires two arguments (separated by a comma)!") suspend_item = self._abitem.return_item(suspend) if suspend_item is None: diff --git a/stateengine/StateEngineCondition.py b/stateengine/StateEngineCondition.py index 37d5e8290..fdcdc824a 100755 --- a/stateengine/StateEngineCondition.py +++ b/stateengine/StateEngineCondition.py @@ -390,7 +390,6 @@ def __get_current(self): if self.__eval is not None: # noinspection PyUnusedLocal sh = self._sh - self._log_debug("Gget current = {}".format(self.__eval)) if isinstance(self.__eval, str): # noinspection PyUnusedLocal if "stateengine_eval" in self.__eval: From 047b33b9d1157bee3ca8efeabe9c6d238436f6fc Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 2 Jun 2019 15:13:32 +0200 Subject: [PATCH 081/200] Manual item now supports source_details previous try didn't work ;) --- stateengine/StateEngineFunctions.py | 50 +++++++++++++++++++++-------- 1 file changed, 36 insertions(+), 14 deletions(-) diff --git a/stateengine/StateEngineFunctions.py b/stateengine/StateEngineFunctions.py index 5f8bed7b4..62ef20508 100755 --- a/stateengine/StateEngineFunctions.py +++ b/stateengine/StateEngineFunctions.py @@ -86,8 +86,8 @@ def manual_item_update_eval(self, item_id, caller=None, source=None): retval_trigger = not item() elog.debug("Current value of item {0} is {1}", item_id, retval_no_trigger) - original_caller, original_source = self.get_original_caller(elog, caller, source) - elog.debug("original trigger by caller '{0}' source '{1}'", original_caller, original_source) + original_caller, original_source, original_source_details = self.get_original_caller(elog, caller, source) + elog.debug("original trigger by caller '{0}' source '{1}', details '{2}'", original_caller, original_source, original_source_details) if "se_manual_on" in item.conf: # get list of include entries @@ -102,9 +102,14 @@ def manual_item_update_eval(self, item_id, caller=None, source=None): # If current value is in list -> Return "Trigger" for entry in include: - entry_caller, __, entry_source = entry.partition(":") - if (entry_caller == original_caller or entry_caller == "*") and ( - entry_source == original_source or entry_source == "*"): + try: + entry_caller, entry_source, entry_source_details = entry.split(":") + except Exception: + entry_caller, __, entry_source = entry.partition(":") + entry_source_details = "*" + if (entry_caller.lower().strip() == original_caller.lower() or entry_caller == "*") and ( + entry_source.lower().strip() == original_source.lower() or entry_source == "*") and ( + entry_source_details.lower().strip() == original_source_details.lower() or entry_source_details == "*"): elog.debug("{0}: matching. Writing value {1}", entry, retval_no_trigger) return retval_no_trigger elog.debug("{0}: not matching", entry) @@ -124,10 +129,14 @@ def manual_item_update_eval(self, item_id, caller=None, source=None): # If current value is in list -> Return "NoTrigger" for entry in exclude: - entry_caller, __, entry_source, entry_additional = entry.partition(":") + try: + entry_caller, entry_source, entry_source_details = entry.split(":") + except Exception: + entry_caller, __, entry_source = entry.partition(":") + entry_source_details = "*" if (entry_caller.lower().strip() == original_caller.lower() or entry_caller == "*") and ( entry_source.lower().strip() == original_source.lower() or entry_source == "*") and ( - entry_additional.lower().strip() == entry_additional.lower() or entry_additional == "*"): + entry_source_details.lower().strip() == original_source_details.lower() or entry_source_details == "*"): elog.debug("{0}: matching. Writing value {1}", entry, retval_no_trigger) return retval_no_trigger elog.debug("{0}: not matching", entry) @@ -146,10 +155,14 @@ def manual_item_update_eval(self, item_id, caller=None, source=None): # If current value is in list -> Return "Trigger" for entry in include: - entry_caller, __, entry_source, entry_additional = entry.partition(":") + try: + entry_caller, entry_source, entry_source_details = entry.split(":") + except Exception: + entry_caller, __, entry_source = entry.partition(":") + entry_source_details = "*" if (entry_caller.lower().strip() == original_caller.lower() or entry_caller == "*") and ( entry_source.lower().strip() == original_source.lower() or entry_source == "*") and ( - entry_additional.lower().strip() == entry_additional.lower() or entry_additional == "*"): + entry_source_details.lower().strip() == original_source_details.lower() or entry_source_details == "*"): elog.debug("{0}: matching. Writing value {1}", entry, retval_trigger) return retval_trigger elog.debug("{0}: not matching", entry) @@ -178,14 +191,23 @@ def get_original_caller(self, elog, caller, source): elog.debug("get_original_caller({0}, {1}): original item not found", original_caller, original_source) break original_changed_by = original_item.changed_by() + elog.debug("Changed by {}", original_changed_by) if ":" not in original_changed_by: text = "get_original_caller({0}, {1}): changed by {2} -> separator missing" - elog.debug(text, original_caller, original_source, original_changed_by) + elog.debug(text, original_caller, original_source) break oc = original_caller os = original_source - original_caller, __, original_source = original_changed_by.partition(":") - elog.debug("get_original_caller({0}, {1}): changed by {2}, {3} at {4}", oc, os, original_caller, original_source, original_item.last_change()) - elog.debug("get_original_caller: returning {0}, {1}", original_caller, original_source) - return original_caller, original_source + try: + original_caller, original_source, original_source_details = original_changed_by.split(":") + od = original_source_details + except Exception: + original_caller, __, original_source = original_changed_by.partition(":") + original_source_details = None + od = 'no details' + elog.debug("get_original_caller({0}, {1}, {2}): changed by {3}, {4}, {5} at {6}", oc, os, od, + original_caller, original_source, original_source_details, original_item.last_change()) + + elog.debug("get_original_caller: returning {0}, {1}, {2}", original_caller, original_source, original_source_details) + return original_caller, original_source, original_source_details From 58ca80aa613346827d7cade9c453b5c4632d0ecc Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 2 Jun 2019 15:56:20 +0200 Subject: [PATCH 082/200] improve logging --- stateengine/StateEngineLogger.py | 1 + 1 file changed, 1 insertion(+) diff --git a/stateengine/StateEngineLogger.py b/stateengine/StateEngineLogger.py index bc14e01c6..fbe58da35 100755 --- a/stateengine/StateEngineLogger.py +++ b/stateengine/StateEngineLogger.py @@ -132,6 +132,7 @@ def header(self, text): self.__indentlevel = 0 text += " " self.log(1, text.ljust(80, "=")) + self.logger.info(text.ljust(80, "=")) # log with level=info # @param text text to log From 9b4dbf248c63fde15fcb003a2f31de97ed733957 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 2 Jun 2019 16:17:58 +0200 Subject: [PATCH 083/200] improve and correct logging --- stateengine/StateEngineAction.py | 6 +++--- stateengine/StateEngineActions.py | 12 +++++++----- stateengine/StateEngineFunctions.py | 4 ++-- stateengine/StateEngineTools.py | 5 ----- 4 files changed, 12 insertions(+), 15 deletions(-) diff --git a/stateengine/StateEngineAction.py b/stateengine/StateEngineAction.py index b8b98a5ed..cbe10d964 100755 --- a/stateengine/StateEngineAction.py +++ b/stateengine/StateEngineAction.py @@ -492,11 +492,11 @@ def _execute(self, actionname: str, repeat_text: str = ""): def suspend_get_value(self, value): if value is None: - raise ValueError("Action {0}: Special action 'suspend' requires arguments!") + raise ValueError("Action {0}: Special action 'suspend' requires arguments!", self._name) suspend, manual = StateEngineTools.partition_strip(value, ",") if suspend is None or manual is None: - raise ValueError("Action {0}: Special action 'suspend' requires two arguments (separated by a comma)!") + raise ValueError("Action {0}: Special action 'suspend' requires two arguments (separated by a comma)!", self._name) suspend_item = self._abitem.return_item(suspend) if suspend_item is None: @@ -525,4 +525,4 @@ def suspend_execute(self): suspend_over = suspend_item.age() suspend_remaining = int(suspend_time - suspend_over + 0.5) # adding 0.5 causes round up ... self._abitem.set_variable("item.suspend_remaining", suspend_remaining) - self._log_debug("Updated variable 'item.suspend_remaining' to {0}".format(suspend_remaining)) + self._log_debug("Updated variable 'item.suspend_remaining' to {0}", suspend_remaining) diff --git a/stateengine/StateEngineActions.py b/stateengine/StateEngineActions.py index 441f581fc..9f7f09d8c 100755 --- a/stateengine/StateEngineActions.py +++ b/stateengine/StateEngineActions.py @@ -76,7 +76,7 @@ def update(self, attribute, value): except ValueError as ex: if name in self.__actions: del self.__actions[name] - self._log_warning("Ignoring action {0} because: {1} (2)".format(attribute, ex)) + self._log_warning("Ignoring action {0} because: {1}", attribute, ex) #raise ValueError("Action {0}: {1}".format(attribute, ex)) # ensure that action exists and create if missing @@ -150,14 +150,16 @@ def __handle_combined_action_attribute(self, name, value_list): if parameter['force'] is not None: # Parameter force is supported only for type "set" and type "force" if parameter['function'] != "set" and parameter['function'] != "force": - self._log_warning("Attribute 'se_action_{0}': Parameter 'force' not supported for function '{1}'".format(name, parameter['function'])) + self._log_warning("Attribute 'se_action_{0}': Parameter 'force' not supported for function '{1}'", name, parameter['function']) elif parameter['force'] and parameter['function'] == "set": # Convert type "set" with force=True to type "force" - self._log_info("Attribute 'se_action_{0}': Parameter 'function' changed from 'set' to 'force', because parameter 'force' is 'True'!".format(name)) + self._log_info("Attribute 'se_action_{0}': Parameter 'function' changed from 'set' to 'force', " \ + "because parameter 'force' is 'True'!", name) parameter['function'] = "force" elif not parameter['force'] and parameter['function'] == "force": # Convert type "force" with force=False to type "set" - self._log_info("Attribute 'se_action_{0}': Parameter 'function' changed from 'force' to 'set', because parameter 'force' is 'False'!".format(name)) + self._log_info("Attribute 'se_action_{0}': Parameter 'function' changed from 'force' to 'set', "\ + "because parameter 'force' is 'False'!", name) parameter['function'] = "set" # create action based on function @@ -200,7 +202,7 @@ def __handle_combined_action_attribute(self, name, value_list): exists = False if name in self.__actions: del self.__actions[name] - self._log_warning("Ignoring action {0} because: {1}".format(name, ex)) + self._log_warning("Ignoring action {0} because: {1}", name, ex) # add additional parameters diff --git a/stateengine/StateEngineFunctions.py b/stateengine/StateEngineFunctions.py index 62ef20508..e8dc972cd 100755 --- a/stateengine/StateEngineFunctions.py +++ b/stateengine/StateEngineFunctions.py @@ -59,7 +59,7 @@ def __get_lock(self, lock_id): def manual_item_update_eval(self, item_id, caller=None, source=None): item = self.items.return_item(item_id) if item is None: - self.logger.error("manual_item_update_eval: item {0} not found!".format(item_id)) + self.logger.error("manual_item_update_eval: item {0} not found!", item_id) # Leave immediately in case StateEngine Plugin is not yet fully running if not self.__ab_alive: @@ -73,7 +73,7 @@ def manual_item_update_eval(self, item_id, caller=None, source=None): elog_item_id = item.conf["se_manual_logitem"] elog_item = self.items.return_item(elog_item_id) if elog_item is None: - self.logger.error("manual_item_update_item: se_manual_logitem {0} not found!".format(elog_item_id)) + self.logger.error("manual_item_update_item: se_manual_logitem {0} not found!", elog_item_id) elog = StateEngineLogger.SeLoggerDummy() else: elog = StateEngineLogger.SeLogger.create(elog_item) diff --git a/stateengine/StateEngineTools.py b/stateengine/StateEngineTools.py index 05a210848..e6b45213c 100755 --- a/stateengine/StateEngineTools.py +++ b/stateengine/StateEngineTools.py @@ -19,9 +19,6 @@ # along with this plugin. If not, see . ######################################################################### import datetime -import logging - -logger = logging.getLogger(__name__) # # Some general tool functions # @@ -175,13 +172,11 @@ def get_eval_name(eval_func): functionnames.append(func) else: functionnames.append(func.__module__ + "." + func.__name__) - logger.error("eval func return {}".format(functionnames)) return functionnames else: if isinstance(eval_func, str): return eval_func else: - logger.error("module return {}".format(eval_func.__module__ + "." + eval_func.__name__)) return eval_func.__module__ + "." + eval_func.__name__ From b2f1d811fbebae70b45197aed0e2d8ae682f07f2 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 2 Jun 2019 16:30:03 +0200 Subject: [PATCH 084/200] refix manual item init --- stateengine/__init__.py | 4 ++-- stateengine/plugin.yaml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/stateengine/__init__.py b/stateengine/__init__.py index f71b28323..22aeb0b07 100755 --- a/stateengine/__init__.py +++ b/stateengine/__init__.py @@ -89,9 +89,9 @@ def parse_item(self, item): except Exception: pass if self.has_iattr(item.conf, "se_manual_include") or self.has_iattr(item.conf, "se_manual_exclude"): - item._eval = "sh.stateengine_plugin_functions.manual_item_update_eval('" + item.property.path + "', caller, source)" + item._eval = "sh.stateengine_plugin_functions.manual_item_update_eval('" + item.id() + "', caller, source)" elif self.has_iattr(item.conf, "se_manual_invert"): - item._eval = "not sh." + item.property.value + item._eval = "not sh." + item.id() + "()" return None diff --git a/stateengine/plugin.yaml b/stateengine/plugin.yaml index 54c7b7406..e065352a1 100755 --- a/stateengine/plugin.yaml +++ b/stateengine/plugin.yaml @@ -522,4 +522,4 @@ plugin_functions: NONE # Definition of plugin functions defined by this plugin logic_parameters: NONE -# Definition of logic parameters defined by this plugin \ No newline at end of file +# Definition of logic parameters defined by this plugin From 76f583aa364ed08706a8615c608dc071790653ad Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 2 Jun 2019 18:44:55 +0200 Subject: [PATCH 085/200] Update __init__.py --- stateengine/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/stateengine/__init__.py b/stateengine/__init__.py index 22aeb0b07..0f2aebf27 100755 --- a/stateengine/__init__.py +++ b/stateengine/__init__.py @@ -85,7 +85,8 @@ def __init__(self, sh): def parse_item(self, item): try: item.expand_relativepathes('se_item_*', '', '') - item.expand_relativepathes('se_*', ['item:', 'sh.', 'sh.', 'sh.', 'sh.'], ['', '.property.path', '.property.value', '.property.name']) + item.expand_relativepathes('se_*', ['item:', 'sh.', 'sh.', 'sh.', 'sh.'], + ['', '.property.path', '.property.value', '.property.name', ')']) except Exception: pass if self.has_iattr(item.conf, "se_manual_include") or self.has_iattr(item.conf, "se_manual_exclude"): From 91422d101f8e0cec89f91e4db9a6d1a9e3d2c137 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 2 Jun 2019 19:15:52 +0200 Subject: [PATCH 086/200] reduce expand relativepathes to se_item declaration Everything else makes things more complicated than useful. Stick to the plugin functions to get relative item id or values. --- stateengine/__init__.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/stateengine/__init__.py b/stateengine/__init__.py index 0f2aebf27..8c9861bb0 100755 --- a/stateengine/__init__.py +++ b/stateengine/__init__.py @@ -85,8 +85,6 @@ def __init__(self, sh): def parse_item(self, item): try: item.expand_relativepathes('se_item_*', '', '') - item.expand_relativepathes('se_*', ['item:', 'sh.', 'sh.', 'sh.', 'sh.'], - ['', '.property.path', '.property.value', '.property.name', ')']) except Exception: pass if self.has_iattr(item.conf, "se_manual_include") or self.has_iattr(item.conf, "se_manual_exclude"): From 62209678a2d62c11e86ca8cfc49657eb1a5d3718 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 2 Jun 2019 21:50:45 +0200 Subject: [PATCH 087/200] Allow se_eval instead of stateengine_eval --- stateengine/README.md | 24 +++++++++++++++------- stateengine/StateEngineAction.py | 4 ++-- stateengine/StateEngineCondition.py | 5 ++--- stateengine/StateEngineEval.py | 16 ++++++++++----- stateengine/StateEngineValue.py | 17 ++++++++++------ stateengine/plugin.yaml | 6 +++--- stateengine/user_doc/user_doc10.rst | 31 ++++++++++++++++++++++------- stateengine/user_doc/user_doc11.rst | 2 +- stateengine/user_doc/user_doc3.rst | 0 stateengine/user_doc/user_doc6.rst | 2 +- stateengine/user_doc/user_doc8.rst | 6 +++--- stateengine/user_doc/user_doc9.rst | 6 +++--- 12 files changed, 78 insertions(+), 41 deletions(-) mode change 100644 => 100755 stateengine/user_doc/user_doc3.rst diff --git a/stateengine/README.md b/stateengine/README.md index 6997f5888..063d4ad85 100755 --- a/stateengine/README.md +++ b/stateengine/README.md @@ -13,21 +13,31 @@ Copy stateengine.example.html from the sv_widgets folder to your smartvisu/dropi http://URL/index.php?page=widgets/stateengine.example ## Changelog +### v1.5.2 +* Get relative items at startup for all se_item_* attributes +* Check for source_details in manual_exclude/include functions +* Improve logging and some code parts, better problem handling +* Allow list entries for conditions (original_caller, laststate, min/max, etc.) + +### v1.5.1 +* Include original 1.4.2 version in subfolder +* Some fixes + ### v1.5.0 * Use new item property feature * Fix exception if rules item does not exist ### v1.4.2 -* Added and fixed documentation (onkelandy) -* Added a smartvisu widget (onkelandy) +* Added and fixed documentation +* Added a smartvisu widget * Added conversion script for easy change from autoblind to stateengine plugin ### v1.4.1 -* Added to official develop repository (onkelandy) -* Renamed to StateEngine (onkelandy) -* Fixed compatibility of logic trigger for SmarthomeNG 1.4+ (onkelandy) -* Changed state condition evaluation to OrderedDict to keep original order (onkelandy) -* Added additional option for manual item called "manual_on" to figure out if item WAS trigger by specific KNX GA (onkelandy) +* Added to official develop repository +* Renamed to StateEngine +* Fixed compatibility of logic trigger for SmarthomeNG 1.4+ +* Changed state condition evaluation to OrderedDict to keep original order +* Added additional option for manual item called "manual_on" to figure out if item WAS trigger by specific KNX GA * Added Webinterface with documentation (german) ### v1.4.0 diff --git a/stateengine/StateEngineAction.py b/stateengine/StateEngineAction.py index cbe10d964..160a897a3 100755 --- a/stateengine/StateEngineAction.py +++ b/stateengine/StateEngineAction.py @@ -328,9 +328,9 @@ def _execute(self, actionname: str, repeat_text: str = ""): if isinstance(self.__eval, str): # noinspection PyUnusedLocal sh = self._sh - if "stateengine_eval" in self.__eval: + if "stateengine_eval" in self.__eval or "se_eval" in self.__eval: # noinspection PyUnusedLocal - stateengine_eval = StateEngineEval.SeEval(self._abitem) + stateengine_eval = se_eval = StateEngineEval.SeEval(self._abitem) try: eval(self.__eval) except Exception as ex: diff --git a/stateengine/StateEngineCondition.py b/stateengine/StateEngineCondition.py index fdcdc824a..d335c7276 100755 --- a/stateengine/StateEngineCondition.py +++ b/stateengine/StateEngineCondition.py @@ -392,10 +392,9 @@ def __get_current(self): sh = self._sh if isinstance(self.__eval, str): # noinspection PyUnusedLocal - if "stateengine_eval" in self.__eval: + if "stateengine_eval" in self.__eval or "se_eval" in self.__eval: # noinspection PyUnusedLocal - stateengine_eval = StateEngineEval.SeEval(self._abitem) - self._log_debug("Using internal eval function {}".format(stateengine_eval)) + stateengine_eval = se_eval = StateEngineEval.SeEval(self._abitem) try: value = eval(self.__eval) except Exception as ex: diff --git a/stateengine/StateEngineEval.py b/stateengine/StateEngineEval.py index e8dc03464..4f0b3709e 100755 --- a/stateengine/StateEngineEval.py +++ b/stateengine/StateEngineEval.py @@ -97,14 +97,20 @@ def get_relative_itemvalue(self, subitem_id): except Exception as ex: self._log_warning("Problem evaluating value of {0}: {1}", subitem_id, ex) - def get_relative_itemname(self, subitem_id): - self._log_debug("Executing method 'get_relative_itemname({0})'", subitem_id) + # Return the property of an item related to the StateEngine Object Item + # item_id: Relative id of item whose property should be returned + # prop: name of property, e.g. last_change. See https://www.smarthomeng.de/user/konfiguration/items_properties.html?highlight=property + # + # See description of StateEngineItem.SeItem.return_item for details + def get_relative_itemproperty(self, subitem_id, prop): + self._log_debug("Executing method 'get_relative_itemproperty({0}, {1})'", subitem_id, prop) try: item = self._abitem.return_item(subitem_id) - self._log_debug("Item Name from {0}: {1}", subitem_id, item.property.name) - return item.property.name + propvalue = getattr(item.property, prop) + self._log_debug("Item property {0} from {1} is: {2}", prop, item.property.path, propvalue) + return propvalue except Exception as ex: - self._log_warning("Problem evaluating value of {0}: {1}", subitem_id, ex) + self._log_warning("Problem evaluating property {0} of {1}: {2}", prop, subitem_id, ex) # Insert end time of suspension into text # suspend_item_id: Item whose age is used to determine how much of the suspend time is already over diff --git a/stateengine/StateEngineValue.py b/stateengine/StateEngineValue.py index cf8ce03d7..fe5d0459c 100755 --- a/stateengine/StateEngineValue.py +++ b/stateengine/StateEngineValue.py @@ -69,6 +69,8 @@ def set_from_attr(self, item, attribute_name, default_value=None): # name: name of object ("time" is being handeled different) def set(self, value, name=""): if isinstance(value, list): + if isinstance(value[0], dict) or isinstance(value[0], tuple): + value = list("{!s}:{!s}".format(k,v) for (k,v) in value[0].items()) source = [] field_value = [] for i, val in enumerate(value): @@ -228,9 +230,9 @@ def __get_eval(self): # noinspection PyUnusedLocal sh = self._sh if isinstance(self.__eval, str): - if "stateengine_eval" in self.__eval: + if "stateengine_eval" in self.__eval or "se_eval" in self.__eval: # noinspection PyUnusedLocal - stateengine_eval = StateEngineEval.SeEval(self._abitem) + stateengine_eval = se_eval = StateEngineEval.SeEval(self._abitem) try: values = eval(self.__eval) except Exception as ex: @@ -240,12 +242,12 @@ def __get_eval(self): if isinstance(self.__eval, list): values = [] for val in self.__eval: - self._log_info("Checking eval '{0}': {1}.", self.__eval, val) + self._log_info("Checking eval: {0}.", val) + self._log_increase_indent() if isinstance(val, str): - if "stateengine_eval" in val: + if "stateengine_eval" in val or "se_eval" in val: # noinspection PyUnusedLocal - stateengine_eval = StateEngineEval.SeEval(self._abitem) - self._log_debug("Using internal eval function {}".format(stateengine_eval)) + stateengine_eval = se_eval = StateEngineEval.SeEval(self._abitem) try: value = eval(val) except Exception as ex: @@ -259,9 +261,12 @@ def __get_eval(self): value = None if value is not None: values.append(self.__do_cast(value)) + self._log_decrease_indent() else: try: + self._log_increase_indent() values = self.__eval() + self._log_decrease_indent() except Exception as ex: self._log_info("Problem calling '{0}': {1}.", StateEngineTools.get_eval_name(self.__eval), ex) return None diff --git a/stateengine/plugin.yaml b/stateengine/plugin.yaml index e065352a1..58e84d068 100755 --- a/stateengine/plugin.yaml +++ b/stateengine/plugin.yaml @@ -427,7 +427,7 @@ item_structs: se_item_retrigger: ..rules se_item_suspend_end: ..suspend_end se_item_suspend_active: ..settings.suspend_active - se_suspend_time: eval:stateengine_eval.get_relative_itemvalue('..settings.suspendduration') * 60 + se_suspend_time: eval:se_eval.get_relative_itemproperty('..settings.suspendduration', 'value') * 60 eval_trigger: - ..manuell @@ -442,7 +442,7 @@ item_structs: - 'order: 1' se_action_suspend_end: - 'function: set' - - "to: eval:stateengine_eval.insert_suspend_time('..suspend', suspend_text='%X')" + - "to: eval:se_eval.insert_suspend_time('..suspend', suspend_text='%X')" - 'repeat: True' - 'order: 2' se_action_retrigger: @@ -461,7 +461,7 @@ item_structs: - 'to: ' enter_manuell: - se_value_trigger_source: eval:stateengine_eval.get_relative_itemid('..manuell') + se_value_trigger_source: eval:se_eval.get_relative_itemproperty('..manuell', 'path') se_value_suspend_active: True enter_stay: diff --git a/stateengine/user_doc/user_doc10.rst b/stateengine/user_doc/user_doc10.rst index fef60ae84..6b56ae4a6 100755 --- a/stateengine/user_doc/user_doc10.rst +++ b/stateengine/user_doc/user_doc10.rst @@ -19,14 +19,14 @@ verwendet werden können: .. code-block:: yaml - stateengine_eval.sun_tracking() + se_eval.sun_tracking() **Zufallszahl** *Über min und max kann die kleinste/größte Nummer, die zurückgegeben werden soll, festgelegt werden.* .. code-block:: yaml - stateengine_eval.get_random_int(min,max) + se_eval.get_random_int(min,max) ``min`` und ``max`` können weggelassen werden, in diesem Fall sind die Vorgabewerte 0 für ``min`` und 255 für ``max``. @@ -36,35 +36,52 @@ Vorgabewerte 0 für ``min`` und 255 für ``max``. .. code-block:: yaml - stateengine_eval.execute(command) + se_eval.execute(command) **Wert einer Variable ermitteln** *Liefert den Wert der Variablen * .. code-block:: yaml - stateengine_eval.get_variable(varname) + se_eval.get_variable(varname) **Item-Id relativ zum Regelwerk-Item ermitteln** *Eine Item-Id relativ zur Item-Id des Regelwerk-Items wird ermittelt.* .. code-block:: yaml - stateengine_eval.get_relative_itemid(subitem_id) + se_eval.get_relative_itemid(subitem_id) + se_eval.get_relative_itemid('..suspend') + +Statt dieser Funktion sollte se_eval.get_relative_itemproperty('..suspend', 'path') verwendet werden. **Item-Wert relativ zum Regelwerk-Item ermitteln** *Der Wert eines Items relativ zur Item-Id des Regelwerk-Items wird ermittelt.* .. code-block:: yaml - stateengine_eval.get_relative_itemvalue(subitem_id) + se_eval.get_relative_itemvalue(subitem_id) + se_eval.get_relative_itemvalue('..suspend') + +Statt dieser Funktion sollte se_eval.get_relative_itemproperty('..suspend', 'value') verwendet werden. + +**Item-Property relativ zum Regelwerk-Item ermitteln** +*Eine Property eines Items relativ zur Item-Id des Regelwerk-Items wird ermittelt.* + +.. code-block:: yaml + + se_eval.get_relative_itemproperty(subitem_id, property) + se_eval.get_relative_itemproperty('..suspend', 'last_change_age') + +Welche Werte für ``property`` genutzt werden können, ist hier nachzulesen: +`Item Properties `_). **Suspend-Ende in einen Text einsetzen** *Das Ende der Suspend-Zeit wird in den Text suspend_text eingesetzt.* .. code-block:: yaml - stateengine_eval.insert_suspend_time(suspend_item_id, suspend_text="Ausgesetzt bis %X") + se_eval.insert_suspend_time(suspend_item_id, suspend_text="Ausgesetzt bis %X") Im Text sind entsprechende Platzhalter vorzusehen (Siehe `strftime() and strptime() diff --git a/stateengine/user_doc/user_doc11.rst b/stateengine/user_doc/user_doc11.rst index 0ae3a6a3a..cd798f80d 100755 --- a/stateengine/user_doc/user_doc11.rst +++ b/stateengine/user_doc/user_doc11.rst @@ -208,7 +208,7 @@ etc). Sonnenstand: <...> se_set_height: value:100 - se_set_lamella: eval:stateengine_eval.sun_tracking() + se_set_lamella: eval:se_eval.sun_tracking() <...> Sonder: <...> diff --git a/stateengine/user_doc/user_doc3.rst b/stateengine/user_doc/user_doc3.rst old mode 100644 new mode 100755 diff --git a/stateengine/user_doc/user_doc6.rst b/stateengine/user_doc/user_doc6.rst index 4393928c7..cd540ffd3 100755 --- a/stateengine/user_doc/user_doc6.rst +++ b/stateengine/user_doc/user_doc6.rst @@ -48,7 +48,7 @@ Das folgende Beispiel führt je nach Zustand folgende Aktionen aus: - 'to: value:100' se_action_lamella: - 'function: set' - - 'to: eval:stateengine_eval.sun_tracking()' + - 'to: eval:se_eval.sun_tracking()' <...> Sonder: <...> diff --git a/stateengine/user_doc/user_doc8.rst b/stateengine/user_doc/user_doc8.rst index 517d15b0d..c58a2a7a2 100755 --- a/stateengine/user_doc/user_doc8.rst +++ b/stateengine/user_doc/user_doc8.rst @@ -149,7 +149,7 @@ definiert und jederzeit abgeändert werden. # - Lamellen zur Sonne ausrichten se_action_lamelle: - 'function: set' - - 'to: eval:stateengine_eval.sun_tracking()' + - 'to: eval:se_eval.sun_tracking()' # Einstieg in "Sonnenschutz": Wenn enter: @@ -633,10 +633,10 @@ weshalb diese Vorgehensweise erst ab 1.5.1 empfohlen wird. on_enter_or_stay: se_action_sollwert: - 'function: set' - - "to: eval:sh.return_item(stateengine_eval.get_relative_itemid('..settings.{}.sollwert'.format(stateengine_eval.get_relative_itemvalue('..state_name').lower())))()" + - "to: eval:sh.return_item(se_eval.get_relative_itemid('..settings.{}.sollwert'.format(se_eval.get_relative_itemvalue('..state_name').lower())))()" se_action_prio: - 'function: set' - - "to: eval:sh.return_item(stateengine_eval.get_relative_itemid('..settings.{}.prio'.format(stateengine_eval.get_relative_itemvalue('..state_name').lower())))()" + - "to: eval:sh.return_item(se_eval.get_relative_itemid('..settings.{}.prio'.format(se_eval.get_relative_itemvalue('..state_name').lower())))()" Außerdem werden pro Aktortyp entsprechende Setting Items angelegt. Je nach Bedarf kann dann auf diese zurückgegriffen werden. diff --git a/stateengine/user_doc/user_doc9.rst b/stateengine/user_doc/user_doc9.rst index 20302102a..4a5e33c16 100755 --- a/stateengine/user_doc/user_doc9.rst +++ b/stateengine/user_doc/user_doc9.rst @@ -168,7 +168,7 @@ beim nächsten Durchlauf eventuell durch andere Zustände überschrieben. se_item_retrigger: ..rules se_item_suspend_end: ..suspend_end se_item_suspend_active: ..settings.suspend_active - se_suspend_time: eval:stateengine_eval.get_relative_itemvalue('..settings.suspendduration') * 60 + se_suspend_time: eval:se_eval.get_relative_itemvalue('..settings.suspendduration') * 60 eval_trigger: - ..manuell @@ -183,7 +183,7 @@ beim nächsten Durchlauf eventuell durch andere Zustände überschrieben. - 'order: 1' se_action_suspend_end: - 'function: set' - - "to: eval:stateengine_eval.insert_suspend_time('..suspend', suspend_text='%X')" + - "to: eval:se_eval.insert_suspend_time('..suspend', suspend_text='%X')" - 'repeat: True' - 'order: 2' se_action_retrigger: @@ -202,7 +202,7 @@ beim nächsten Durchlauf eventuell durch andere Zustände überschrieben. - 'to: ' enter_manuell: - se_value_trigger_source: eval:stateengine_eval.get_relative_itemid('..manuell') + se_value_trigger_source: eval:se_eval.get_relative_itemid('..manuell') se_value_suspend_active: True enter_stay: From 21073fe31126bdebb4673eeb3ee9626240c65211 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 2 Jun 2019 22:33:57 +0200 Subject: [PATCH 088/200] improved parsing of condition --- stateengine/StateEngineValue.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/stateengine/StateEngineValue.py b/stateengine/StateEngineValue.py index fe5d0459c..1325b7582 100755 --- a/stateengine/StateEngineValue.py +++ b/stateengine/StateEngineValue.py @@ -69,11 +69,13 @@ def set_from_attr(self, item, attribute_name, default_value=None): # name: name of object ("time" is being handeled different) def set(self, value, name=""): if isinstance(value, list): - if isinstance(value[0], dict) or isinstance(value[0], tuple): - value = list("{!s}:{!s}".format(k,v) for (k,v) in value[0].items()) source = [] field_value = [] for i, val in enumerate(value): + self._log_debug("VALUE: {}", val) + if isinstance(val, dict) or isinstance(val, tuple): + val = list("{!s}:{!s}".format(k,v) for (k,v) in val.items())[0] + self._log_debug("VALUE: {}", val) if isinstance(val, str): s, f = StateEngineTools.partition_strip(val, ":") else: From 8c1c0acaed22d5a7fbb835bafdeb2f66674d9d9c Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 2 Jun 2019 22:41:27 +0200 Subject: [PATCH 089/200] Update StateEngineValue.py --- stateengine/StateEngineValue.py | 2 -- 1 file changed, 2 deletions(-) diff --git a/stateengine/StateEngineValue.py b/stateengine/StateEngineValue.py index 1325b7582..f3f9dfb75 100755 --- a/stateengine/StateEngineValue.py +++ b/stateengine/StateEngineValue.py @@ -72,10 +72,8 @@ def set(self, value, name=""): source = [] field_value = [] for i, val in enumerate(value): - self._log_debug("VALUE: {}", val) if isinstance(val, dict) or isinstance(val, tuple): val = list("{!s}:{!s}".format(k,v) for (k,v) in val.items())[0] - self._log_debug("VALUE: {}", val) if isinstance(val, str): s, f = StateEngineTools.partition_strip(val, ":") else: From e98bdec25031e77f57a70cd8df97d99f179701a7 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Mon, 3 Jun 2019 16:52:11 +0200 Subject: [PATCH 090/200] use regex for manual_includ/exclude It is now possible to use wildcards at any position in the manual item exclude/include list. --- stateengine/StateEngineFunctions.py | 76 ++++++++++------------------- stateengine/user_doc/user_doc10.rst | 15 ++++-- 2 files changed, 37 insertions(+), 54 deletions(-) diff --git a/stateengine/StateEngineFunctions.py b/stateengine/StateEngineFunctions.py index e8dc972cd..86b28576e 100755 --- a/stateengine/StateEngineFunctions.py +++ b/stateengine/StateEngineFunctions.py @@ -20,6 +20,7 @@ ######################################################################### import logging import threading +import re from . import StateEngineLogger from lib.item import Items @@ -86,8 +87,8 @@ def manual_item_update_eval(self, item_id, caller=None, source=None): retval_trigger = not item() elog.debug("Current value of item {0} is {1}", item_id, retval_no_trigger) - original_caller, original_source, original_source_details = self.get_original_caller(elog, caller, source) - elog.debug("original trigger by caller '{0}' source '{1}', details '{2}'", original_caller, original_source, original_source_details) + original = self.get_original_caller(elog, caller, source) + elog.debug("original trigger by '{0}'", original) if "se_manual_on" in item.conf: # get list of include entries @@ -102,14 +103,10 @@ def manual_item_update_eval(self, item_id, caller=None, source=None): # If current value is in list -> Return "Trigger" for entry in include: - try: - entry_caller, entry_source, entry_source_details = entry.split(":") - except Exception: - entry_caller, __, entry_source = entry.partition(":") - entry_source_details = "*" - if (entry_caller.lower().strip() == original_caller.lower() or entry_caller == "*") and ( - entry_source.lower().strip() == original_source.lower() or entry_source == "*") and ( - entry_source_details.lower().strip() == original_source_details.lower() or entry_source_details == "*"): + entry = re.compile(entry, re.IGNORECASE) + result = entry.match(original) + elog.debug("Checking regex result {}", result) + if result is not None: elog.debug("{0}: matching. Writing value {1}", entry, retval_no_trigger) return retval_no_trigger elog.debug("{0}: not matching", entry) @@ -129,14 +126,10 @@ def manual_item_update_eval(self, item_id, caller=None, source=None): # If current value is in list -> Return "NoTrigger" for entry in exclude: - try: - entry_caller, entry_source, entry_source_details = entry.split(":") - except Exception: - entry_caller, __, entry_source = entry.partition(":") - entry_source_details = "*" - if (entry_caller.lower().strip() == original_caller.lower() or entry_caller == "*") and ( - entry_source.lower().strip() == original_source.lower() or entry_source == "*") and ( - entry_source_details.lower().strip() == original_source_details.lower() or entry_source_details == "*"): + entry = re.compile(entry, re.IGNORECASE) + result = entry.match(original) + elog.debug("Checking regex result {}", result) + if result is not None: elog.debug("{0}: matching. Writing value {1}", entry, retval_no_trigger) return retval_no_trigger elog.debug("{0}: not matching", entry) @@ -155,14 +148,10 @@ def manual_item_update_eval(self, item_id, caller=None, source=None): # If current value is in list -> Return "Trigger" for entry in include: - try: - entry_caller, entry_source, entry_source_details = entry.split(":") - except Exception: - entry_caller, __, entry_source = entry.partition(":") - entry_source_details = "*" - if (entry_caller.lower().strip() == original_caller.lower() or entry_caller == "*") and ( - entry_source.lower().strip() == original_source.lower() or entry_source == "*") and ( - entry_source_details.lower().strip() == original_source_details.lower() or entry_source_details == "*"): + entry = re.compile(entry, re.IGNORECASE) + result = entry.match(original) + elog.debug("Checking regex result {}", result) + if result is not None: elog.debug("{0}: matching. Writing value {1}", entry, retval_trigger) return retval_trigger elog.debug("{0}: not matching", entry) @@ -183,31 +172,16 @@ def manual_item_update_eval(self, item_id, caller=None, source=None): # caller: caller # source: source def get_original_caller(self, elog, caller, source): - original_caller = caller - original_source = source - while original_caller == "Eval": - original_item = self.items.return_item(original_source) + while caller == "Eval": + original_item = self.items.return_item(source) if original_item is None: - elog.debug("get_original_caller({0}, {1}): original item not found", original_caller, original_source) + elog.debug("get_caller({0}, {1}): original item not found", caller, source) break original_changed_by = original_item.changed_by() - elog.debug("Changed by {}", original_changed_by) - if ":" not in original_changed_by: - text = "get_original_caller({0}, {1}): changed by {2} -> separator missing" - elog.debug(text, original_caller, original_source) - break - oc = original_caller - os = original_source - - try: - original_caller, original_source, original_source_details = original_changed_by.split(":") - od = original_source_details - except Exception: - original_caller, __, original_source = original_changed_by.partition(":") - original_source_details = None - od = 'no details' - elog.debug("get_original_caller({0}, {1}, {2}): changed by {3}, {4}, {5} at {6}", oc, os, od, - original_caller, original_source, original_source_details, original_item.last_change()) - - elog.debug("get_original_caller: returning {0}, {1}, {2}", original_caller, original_source, original_source_details) - return original_caller, original_source, original_source_details + oc = caller + os = source + caller, __, source = original_changed_by.partition(":") + elog.debug("get_caller({0}, {1}): changed by {2} at {3}", oc, os, + original_changed_by, original_item.last_change()) + + return original_changed_by diff --git a/stateengine/user_doc/user_doc10.rst b/stateengine/user_doc/user_doc10.rst index 6b56ae4a6..b9e23eae4 100755 --- a/stateengine/user_doc/user_doc10.rst +++ b/stateengine/user_doc/user_doc10.rst @@ -290,9 +290,8 @@ Bei beiden Attributen wird eine Liste von Elementen angegeben. Die einzelnen Elemente bestehen dabei aus dem Aufrufenden (``Caller``) einem Doppelpunkt und der Quelle (``Source``), bei Bedarf auch einer weiteren durch Doppelpunkt getrennte Information wie z.B. die Gruppenadresse beim KNX Plugin. -Mehrere Elemente werden durch "|" getrennt bzw. im yaml als Liste deklariert. -Für ``Caller`` und ``Source`` sowie ``Additional`` kann dabei jeweils auch ``"*"`` angegeben werden, dies -bedeutet, dass der jeweilige Teil nicht berücksichtigt werd. +Für den gesamten Ausdruck können RegEx genutzt werden, also beispielsweise "*" als Wildcard, +damit der jeweilige Teil nicht berücksichtigt wird. Wenn bei der Prüfung festgestellt wird, dass ein Wert über eine Eval-Funktionalität geändert wurde, so wird die Änderung @@ -314,6 +313,16 @@ sind, muss ``se_manual_invert`` nicht angegeben werden. Um etwaige Probleme mit den exclude und include Funktionen einfacher erkennen zu können, kann ein spezielles Logging aktiviert werden: ``se_manual_logitem: `` +Ein weiteres Beispiel mit Wildcards. Groß- und Kleinschreibung spielen generell keine Rolle. + +.. code-block:: yaml + + #items/item.yaml + se_manual_exclude: + - cli:127.0.*.1 + - knx:1.0.0:3/5/* + + .. rubric:: Der Suspend-Zustand :name: dersuspendzustand From 8ebaca485d055ca65adb6d25ece054da7231d2e4 Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Tue, 4 Jun 2019 16:05:52 +0200 Subject: [PATCH 091/200] Fixed Error-Handling and optimized web-interface --- unifi/README.md | 6 +-- unifi/__init__.py | 74 +++++++++++++++++++++----------- unifi/plugin.yaml | 2 +- unifi/ubiquiti/unifi.py | 7 +++ unifi/webif/templates/index.html | 39 ++++++++++------- 5 files changed, 85 insertions(+), 43 deletions(-) diff --git a/unifi/README.md b/unifi/README.md index d5bb9d564..e3fcf8c0c 100644 --- a/unifi/README.md +++ b/unifi/README.md @@ -1,6 +1,6 @@ # Unifi -#### Version 1.6.0 +#### Version 1.6.1 Plugin to read some data from UniFi Controllers and to control it @@ -8,11 +8,11 @@ Plugin to read some data from UniFi Controllers and to control it ### Changes Since version 1.6.0 -- Initial upload +- Fixed logging issues +- Extended Web-Interface ## Todo -* Auto generate items.yaml by reading details from UniFi Controller and populate this in the WebIf. * Add additional data as Itemtypes from the UniFi API, based on real-world demands. ## Requirements diff --git a/unifi/__init__.py b/unifi/__init__.py index d749f2e46..332d860fa 100644 --- a/unifi/__init__.py +++ b/unifi/__init__.py @@ -32,6 +32,7 @@ from lib.model.smartplugin import * from lib.network import Network from plugins.unifi.ubiquiti.unifi import API as UniFiAPI +from plugins.unifi.ubiquiti.unifi import DataException as UniFiDataException import ruamel.yaml as yaml import json @@ -174,9 +175,10 @@ def _get_device_node_item(self, node_data, parent_type=""): single_dev_key = portmap[port_no][0][0] node_body[single_dev_key] = portmap[port_no][0][1] node_body[single_dev_key]['port_enabled'] = {} - node_body[single_dev_key]['port_enabled'][UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_SW_PORT_ENABLED - node_body[single_dev_key]['port_enabled'][UniFiConst.ATTR_SW_PORT_PROF_OFF] = 'Disabled' - node_body[single_dev_key]['port_enabled'][UniFiConst.ATTR_SW_PORT_PROF_ON] = 'All' + # Removed Port-Prof-Off as the default will be considered during run-time. + # node_body[single_dev_key]['port_enabled'][UniFiConst.ATTR_SW_PORT_PROF_OFF] = 'Disabled' + node_body[single_dev_key]['port_enabled'][UniFiConst.ATTR_SW_PORT_PROF_ON] = self._api.get_port_profile_for( + n['mac'], port_no) node_body[single_dev_key]['port_enabled'][UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_SW_PORT_ENABLED node_body[single_dev_key]['port_enabled']['type'] = 'bool' else: @@ -187,8 +189,10 @@ def _get_device_node_item(self, node_data, parent_type=""): attached_clnts[UniFiConst.ATTR_SW_PORT_NO] = port_no attached_clnts['port_enabled'] = {} - attached_clnts['port_enabled'][UniFiConst.ATTR_SW_PORT_PROF_OFF] = 'Disabled' - attached_clnts['port_enabled'][UniFiConst.ATTR_SW_PORT_PROF_ON] = 'All' + # Removed Port-Prof-Off as the default will be considered during run-time. + #attached_clnts['port_enabled'][UniFiConst.ATTR_SW_PORT_PROF_OFF] = 'Disabled' + attached_clnts['port_enabled'][UniFiConst.ATTR_SW_PORT_PROF_ON] = self._api.get_port_profile_for( + n['mac'], port_no) attached_clnts['port_enabled'][UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_SW_PORT_ENABLED attached_clnts['port_enabled']['type'] = 'bool' node_body["non_unifi_switch_at_port_{}".format(port_no)] = attached_clnts @@ -225,6 +229,17 @@ def get_item_hierarchy(self): return yaml.dump(model, Dumper=yaml.SafeDumper, indent=4, width=768, allow_unicode=True, default_flow_style=False) + def get_total_number_of_requests_to_controller(self): + return self._api.get_request_count() + + def get_controller_url(self): + return self._api.get_connection_data()['url'] + + def get_controller_user(self): + return self._api.get_connection_data()['user'] + + def get_controller_site(self): + return self._api.get_connection_data()['site'] class UniFiControllerClient(SmartPlugin): """ @@ -232,7 +247,7 @@ class UniFiControllerClient(SmartPlugin): the update functions for the items """ - PLUGIN_VERSION = '1.6.0' + PLUGIN_VERSION = '1.6.1' def __init__(self, sh, *args, **kwargs): """ @@ -323,18 +338,22 @@ def stop(self): self.logger.debug("Stop method called") self.alive = False - def _log_item_issue(self, item, msg, enable_logging=True): - self._model.append_item_issue(item, msg) + def _log_item_issue(self, item, msg, enable_logging=True, defaulting=False): + if defaulting: + self._model.append_item_issue(item, "DEFAULT: "+msg) + else: + self._model.append_item_issue(item, "INFO: "+msg) + if enable_logging: - self.logger.debug(msg) + self.logger.info(msg) def _log_item_warning(self, item, msg, enable_logging=True): - self._model.append_item_issue(item, msg) + self._model.append_item_issue(item, "WARNING: "+msg) if enable_logging: self.logger.warning(msg) def _log_item_error(self, item, msg, enable_logging=True): - self._model.append_item_issue(item, msg) + self._model.append_item_issue(item, "ERROR: " + msg) if enable_logging: self.logger.error(msg) @@ -347,7 +366,7 @@ def _mac_check(self, item, item_type: str, leaf_item=None): def _get_attribute_recursive(self, item, item_type: str, check=None, enable_logging=True, leaf_item=None): if item is None: - self._log_item_issue(leaf_item, "No {} attribute provided in item {} (or parent)".format( + self._log_item_warning(leaf_item, "No {} attribute provided in item {} (or parent)".format( item_type, leaf_item.path())) return None if leaf_item is None: @@ -363,14 +382,14 @@ def _get_attribute_recursive(self, item, item_type: str, check=None, enable_logg item_type, item.path(), leaf_item.path()), enable_logging) return item.conf[item_type] except AttributeError: - self._log_item_issue(leaf_item, "No {} attribute provided in item {} (or parent)".format( + self._log_item_warning(leaf_item, "No {} attribute provided in item {} (or parent)".format( item_type, leaf_item.path())) return None - return self._get_attribute_recursive(item.return_parent(), item_type, check, leaf_item) + return self._get_attribute_recursive(item.return_parent(), item_type, check, enable_logging, leaf_item) def _get_one_of_attr_recursive(self, item, item_types: list, check=None, enable_logging=True, leaf_item=None): if item is None: - self._log_item_issue(leaf_item, "No {} attribute provided in item {} (or parent)".format( + self._log_item_warning(leaf_item, "No {} attribute provided in item {} (or parent)".format( json.dump(item_types), leaf_item.path())) return None if leaf_item is None: @@ -388,10 +407,10 @@ def _get_one_of_attr_recursive(self, item, item_types: list, check=None, enable_ return item.conf[item_type] except AttributeError: - self._log_item_issue(leaf_item, "No {} attribute provided in item {} (or parent)".format( + self._log_item_warning(leaf_item, "No {} attribute provided in item {} (or parent)".format( item_type, leaf_item.path())) return None - return self._get_one_of_attr_recursive(item.return_parent(), item_types, check, leaf_item) + return self._get_one_of_attr_recursive(item.return_parent(), item_types, check, enable_logging, leaf_item) def parse_item(self, item): """ @@ -444,15 +463,15 @@ def parse_item(self, item): return prof_on = self._get_attribute_recursive(item, UniFiConst.ATTR_SW_PORT_PROF_ON) if prof_on is None: - return + self._log_item_issue(item, "Will use 'All' as Port Profile for on", defaulting=True) prof_off = self._get_attribute_recursive(item, UniFiConst.ATTR_SW_PORT_PROF_OFF) if prof_off is None: - return + self._log_item_issue(item, "Will use 'Disabled' as Port Profile for off", defaulting=True) self._model.append_item(item) return self.update_item else: - self._log_item_warning(item, "unifi_type %s unknown at %s" % (i_attr, item.path())) + self._log_item_error(item, "unifi_type %s unknown at %s" % (i_attr, item.path())) def parse_logic(self, logic): """ @@ -491,7 +510,7 @@ def update_item(self, item, caller=None, source=None, dest=None): port_number=int(self._get_attribute_recursive( i, UniFiConst.ATTR_SW_PORT_NO, enable_logging=self._logging)), profile_name=self._get_attribute_recursive( - i, UniFiConst.ATTR_SW_PORT_PROF_ON, enable_logging=self._logging) if i() else self._get_attribute_recursive(i, UniFiConst.ATTR_SW_PORT_PROF_OFF, enable_logging=self._logging)) + i, UniFiConst.ATTR_SW_PORT_PROF_ON, enable_logging=self._logging) or "All" if i() else self._get_attribute_recursive(i, UniFiConst.ATTR_SW_PORT_PROF_OFF, enable_logging=self._logging) or "Disabled") ) self.logger.debug( @@ -549,21 +568,28 @@ def _get_device_info(self, item, info_type): def _get_sw_port_profile(self, i): sw_mac = self._get_attribute_recursive( i, UniFiConst.ATTR_SW_MAC, check=self._mac_check, enable_logging=self._logging) - sw_port = int(self._get_attribute_recursive(i, UniFiConst.ATTR_SW_PORT_NO, - enable_logging=self._logging)) - return self._model._api.get_port_profile_for(sw_mac, sw_port) + try: + sw_port = int(self._get_attribute_recursive(i, UniFiConst.ATTR_SW_PORT_NO, + enable_logging=self._logging)) + return self._model._api.get_port_profile_for(sw_mac, sw_port) + except UniFiDataException: + self._log_item_warning(i, "Unable to determine current switch-profile for switch {}".format(sw_mac)) + return None def _check_sw_port_enabled(self, item): pp_on = self._get_attribute_recursive( item, UniFiConst.ATTR_SW_PORT_PROF_ON, enable_logging=self._logging) pp_off = self._get_attribute_recursive( item, UniFiConst.ATTR_SW_PORT_PROF_OFF, enable_logging=self._logging) + rslt = self._get_sw_port_profile(item) if rslt == pp_off: return False elif rslt == pp_on: return True + elif rslt is None: + return None else: self._log_item_warning(item, "Current port-profile \{}}\" doesn't match \"{}\" (on) or \"{}\" (off) in {}".format( rslt, pp_on, pp_off, item.path()), enable_logging=self._logging) diff --git a/unifi/plugin.yaml b/unifi/plugin.yaml index ab0c49cfa..dd95e98a6 100644 --- a/unifi/plugin.yaml +++ b/unifi/plugin.yaml @@ -12,7 +12,7 @@ plugin: # documentation: https://github.com/smarthomeNG/smarthome/wiki/CLI-Plugin # url of documentation (wiki) page support: https://knx-user-forum.de/forum/supportforen/smarthome-py/1278068-unifi-controller-api-wlan - version: 1.6.0 # Plugin version + version: 1.6.1 # Plugin version sh_minversion: 1.6 # minimum shNG version to use this plugin # sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) multi_instance: False # plugin supports multi instance diff --git a/unifi/ubiquiti/unifi.py b/unifi/ubiquiti/unifi.py index c44a1cbed..c322c8968 100644 --- a/unifi/ubiquiti/unifi.py +++ b/unifi/ubiquiti/unifi.py @@ -380,3 +380,10 @@ def get_device_info(self, device_mac: str, property_id: str, max_age: int = 30, def get_request_count(self): return self._request_count + + def get_connection_data(self): + to_ret = {} + to_ret['user'] = self._login_data['username'] + to_ret['site'] = self._site + to_ret['url'] = self._baseurl + return to_ret \ No newline at end of file diff --git a/unifi/webif/templates/index.html b/unifi/webif/templates/index.html index 39f9b3b55..0e962c8b1 100644 --- a/unifi/webif/templates/index.html +++ b/unifi/webif/templates/index.html @@ -6,27 +6,27 @@ - - + + - - + + - - + + - - + + - - + + - - + + @@ -109,7 +109,6 @@ - @@ -122,10 +121,20 @@ {% endif %} - From 43732f45288833da5cc00849b7b6989bd5c9928c Mon Sep 17 00:00:00 2001 From: onkelandy Date: Wed, 5 Jun 2019 15:48:25 +0200 Subject: [PATCH 092/200] stateengine item now gets triggered even if trigger item was updated by other stateengine item There are two state engines A and B. B should get triggerd if item X is changed. A changes X. B now gets re-evaluated what wasn't the case before. --- stateengine/StateEngineAction.py | 18 ++++++++++-------- stateengine/StateEngineItem.py | 7 ++++--- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/stateengine/StateEngineAction.py b/stateengine/StateEngineAction.py index 160a897a3..db0d2aaa0 100755 --- a/stateengine/StateEngineAction.py +++ b/stateengine/StateEngineAction.py @@ -51,6 +51,7 @@ def __cast_delay(value): # name: Name of action def __init__(self, abitem, name: str): super().__init__(abitem) + self._parent = abitem self.shtime = Shtime.get_instance() self.items = Items.get_instance() self._name = name @@ -217,7 +218,7 @@ def _execute(self, actionname: str, repeat_text: str = ""): self._log_debug("{0}: Set '{1}' to '{2}'.{3}", actionname, self.__item.property.path, value, repeat_text) # noinspection PyCallingNonCallable - self.__item(value, caller=self.__caller) + self.__item(value, caller='{} {}'.format(StateEngineDefaults.plugin_identification, self._parent)) # Class representing a single "se_setbyattr" action @@ -250,7 +251,7 @@ def _execute(self, actionname: str, repeat_text: str = ""): self._log_info("{0}: Setting values by attribute '{1}'.{2}", actionname, self.__byattr, repeat_text) for item in self.items.find_items(self.__byattr): self._log_info("\t{0} = {1}", item.property.path, item.conf[self.__byattr]) - item(item.conf[self.__byattr], caller=StateEngineDefaults.plugin_identification) + item(item.conf[self.__byattr], caller='{} {}'.format(StateEngineDefaults.plugin_identification, self._parent)) # Class representing a single "se_trigger" action @@ -418,24 +419,25 @@ def _execute(self, actionname: str, repeat_text: str = ""): return # Set to different value first ("force") + _caller = '{} {}'.format(StateEngineDefaults.plugin_identification, self._parent) if self.__item() == value: if self.__item._type == 'bool': self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.path, not value) - self.__item(not value, caller=StateEngineDefaults.plugin_identification) + self.__item(not value, caller=_caller) elif self.__item._type == 'str': if value != '': self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.path, '') - self.__item('', caller=StateEngineDefaults.plugin_identification) + self.__item('', caller=_caller) else: self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.path, '-') - self.__item('-', caller=StateEngineDefaults.plugin_identification) + self.__item('-', caller=_caller) elif self.__item._type == 'num': if value != 0: self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.path, 0) - self.__item(0, caller=StateEngineDefaults.plugin_identification) + self.__item(0, caller=_caller) else: self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.path, 1) - self.__item(1, caller=StateEngineDefaults.plugin_identification) + self.__item(1, caller=_caller) else: self._log_warning("{0}: Force not implemented for item type '{1}'", actionname, self.__item._type) else: @@ -443,7 +445,7 @@ def _execute(self, actionname: str, repeat_text: str = ""): self._log_debug("{0}: Set '{1}' to '{2}'.{3}", actionname, self.__item.property.path, value, repeat_text) # noinspection PyCallingNonCallable - self.__item(value, caller=StateEngineDefaults.plugin_identification) + self.__item(value, caller=_caller) # Class representing a single "se_special" action diff --git a/stateengine/StateEngineItem.py b/stateengine/StateEngineItem.py index 39a8bb7fd..76eab569b 100755 --- a/stateengine/StateEngineItem.py +++ b/stateengine/StateEngineItem.py @@ -131,7 +131,7 @@ def __init__(self, smarthome, item): self.__startup_delay_callback(self.__item, "Init", None, None) def __repr__(self): - return "SeItem item: {}.".format(self.__id) + return self.__id # Find the state, matching the current conditions and perform the actions of this state # caller: Caller that triggered the update @@ -153,8 +153,9 @@ def update_state(self, item, caller=None, source=None, dest=None): if orig_caller != caller: text = "Eval initially triggered by {0} (item={1} source={2})" self.__logger.debug(text, orig_caller, orig_item.property.path, orig_source) - - if orig_caller == StateEngineDefaults.plugin_identification or caller == StateEngineDefaults.plugin_identification: + cond1 = orig_caller == '{} {}'.format(StateEngineDefaults.plugin_identification, item_id) + cond2 = caller == '{} {}'.format(StateEngineDefaults.plugin_identification, item_id) + if cond1 or cond2: self.__logger.debug("Ignoring changes from {0}", StateEngineDefaults.plugin_identification) self.__update_in_progress = False return From 1e80af1b746699c1135ebe53d21b52d2da068998 Mon Sep 17 00:00:00 2001 From: Bernd Meiners Date: Thu, 6 Jun 2019 14:52:08 +0200 Subject: [PATCH 093/200] make knx-plugin code more readable --- knx/__init__.py | 5 ++--- knx/dpts.py | 22 ++++++++++++++++++++++ 2 files changed, 24 insertions(+), 3 deletions(-) mode change 100755 => 100644 knx/__init__.py diff --git a/knx/__init__.py b/knx/__init__.py old mode 100755 new mode 100644 index 6b233d9ee..b34d46a48 --- a/knx/__init__.py +++ b/knx/__init__.py @@ -822,10 +822,9 @@ def index(self, reload=None): :return: contents of the template after beeing rendered """ plgitems = [] + for item in self.items.return_items(): - if (self.plugin.has_iattr(item.conf, KNX_DPT) or self.plugin.has_iattr(item.conf, KNX_STATUS) or self.plugin.has_iattr(item.conf, KNX_SEND) or - self.plugin.has_iattr(item.conf, KNX_REPLY) or self.plugin.has_iattr(item.conf, KNX_CACHE) or self.plugin.has_iattr(item.conf, KNX_INIT) or - self.plugin.has_iattr(item.conf, KNX_LISTEN) or self.plugin.has_iattr(item.conf, KNX_POLL)): + if any(elem in item.property.attributes for elem in [KNX_DPT,KNX_STATUS,KNX_SEND,KNX_REPLY,KNX_CACHE,KNX_INIT,KNX_LISTEN,KNX_POLL]): plgitems.append(item) tmpl = self.tplenv.get_template('index.html') diff --git a/knx/dpts.py b/knx/dpts.py index bfb6cb21b..23e3ef4fe 100644 --- a/knx/dpts.py +++ b/knx/dpts.py @@ -181,6 +181,9 @@ def de9(payload): f = (m | s) * 0.01 * pow(2, e) return round(f, 2) +""" + Datapoint Type Time +""" def en10(dt): return [0, (dt.isoweekday() << 5) | dt.hour, dt.minute, dt.second] @@ -192,6 +195,9 @@ def de10(payload): s = payload[2] & 0x3f return datetime.time(h, m, s) +""" + Datapoint Type Date +""" def en11(date): return [0, date.day, date.month, date.year - 2000] @@ -203,6 +209,10 @@ def de11(payload): y = (payload[2] & 0x7f) + 2000 # sorry no 20th century... return datetime.date(y, m, d) +""" + Datapoint Unsigned long +""" + def en12(value): if value < 0: @@ -219,6 +229,9 @@ def de12(payload): return None return struct.unpack('>I', payload)[0] +""" + Datapoint Signed long +""" def en13(value): if value < -2147483648: @@ -235,6 +248,10 @@ def de13(payload): return None return struct.unpack('>i', payload)[0] +""" + Datapoint float (4 bytes) +""" + def en14(value): ret = bytearray([0]) @@ -248,6 +265,11 @@ def de14(payload): return struct.unpack('>f', payload)[0] +""" + Datapoint text + (up to 14 Bytes) +""" + def en16000(value): enc = bytearray(1) enc.extend(value.encode('ascii', 'replace')[:14]) From f191a9d47a3818fef97e8dc52154481200b6d081 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Thu, 6 Jun 2019 15:38:38 +0200 Subject: [PATCH 094/200] new query: last condition set It is now possible to get the value of the condition set id or name that was responsible for the last state change. --- stateengine/StateEngineCondition.py | 9 ++- stateengine/StateEngineConditionSet.py | 17 +++++- stateengine/StateEngineConditionSets.py | 4 +- stateengine/StateEngineItem.py | 80 +++++++++++++++++++++++-- stateengine/plugin.yaml | 14 +++++ stateengine/user_doc/user_doc5.rst | 19 +++++- stateengine/user_doc/user_doc9.rst | 14 +++++ 7 files changed, 146 insertions(+), 11 deletions(-) diff --git a/stateengine/StateEngineCondition.py b/stateengine/StateEngineCondition.py index d335c7276..685047291 100755 --- a/stateengine/StateEngineCondition.py +++ b/stateengine/StateEngineCondition.py @@ -95,6 +95,8 @@ def complete(self, item_state): self.__eval = StateEngineCurrent.values.get_sun_altitude elif self.__name == "age": self.__eval = self._abitem.get_age + elif self.__name == "condition_age": + self.__eval = self._abitem.get_condition_age elif self.__name == "time": self.__eval = StateEngineCurrent.values.get_time elif self.__name == "random": @@ -103,6 +105,10 @@ def complete(self, item_state): self.__eval = StateEngineCurrent.values.get_month elif self.__name == "laststate": self.__eval = self._abitem.get_laststate_id + elif self.__name == "lastconditionset" or self.__name == "lastconditionset_id": + self.__eval = self._abitem.get_lastconditionset_id + elif self.__name == "lastconditionset_name": + self.__eval = self._abitem.get_lastconditionset_name elif self.__name == "trigger_item": self.__eval = self._abitem.get_update_trigger_item elif self.__name == "trigger_caller": @@ -141,7 +147,8 @@ def complete(self, item_state): elif self.__name in ("weekday", "sun_azimut", "sun_altitude", "age", "delay", "random", "month"): self.__cast_all(StateEngineTools.cast_num) elif self.__name in ( - "laststate", "trigger_item", "trigger_caller", "trigger_source", "trigger_dest", "original_item", + "laststate", "lastconditionset", "lastconditionset_id", "lastconditionset_name", + "trigger_item", "trigger_caller", "trigger_source", "trigger_dest", "original_item", "original_caller", "original_source"): self.__cast_all(StateEngineTools.cast_str) elif self.__name == "time": diff --git a/stateengine/StateEngineConditionSet.py b/stateengine/StateEngineConditionSet.py index cbb07d262..f39f432d5 100755 --- a/stateengine/StateEngineConditionSet.py +++ b/stateengine/StateEngineConditionSet.py @@ -21,7 +21,6 @@ from . import StateEngineCondition from . import StateEngineTools - # Class representing a set of conditions class SeConditionSet(StateEngineTools.SeItemChild): # Name of condition set @@ -29,6 +28,10 @@ class SeConditionSet(StateEngineTools.SeItemChild): def name(self): return self.__name + @property + def id(self): + return self.__id + # List of conditions that are part of this condition set @property def conditions(self): @@ -37,9 +40,10 @@ def conditions(self): # Initialize the condition set # abitem: parent SeItem instance # name: Name of condition set - def __init__(self, abitem, name): + def __init__(self, abitem, name, id): super().__init__(abitem) self.__name = name + self.__id = id self.__conditions = {} def __repr__(self): @@ -106,15 +110,22 @@ def write_to_logger(self): self.__conditions[name].write_to_logger() self._log_decrease_indent() + def __currentconditionset_set(self, id, name): + self._abitem.set_variable('current.conditionset_id', id) + self._abitem.set_variable('current.conditionset_name', name) + # Check all conditions in the condition set. Return # returns: True = all conditions in set are matching, False = at least one condition is not matching def all_conditions_matching(self): try: - self._log_info("Check condition set '{0}':", self.__name) + self._log_info("Check condition set '{0}'", self.__name) self._log_increase_indent() + self.__currentconditionset_set(self.__id.property.path, self.__name) for name in self.__conditions: if not self.__conditions[name].check(): + self.__currentconditionset_set('','') return False + self._abitem.lastconditionset_set(self.__id.property.path, self.__name) return True finally: self._log_decrease_indent() diff --git a/stateengine/StateEngineConditionSets.py b/stateengine/StateEngineConditionSets.py index 0d05dd089..1c899ee02 100755 --- a/stateengine/StateEngineConditionSets.py +++ b/stateengine/StateEngineConditionSets.py @@ -24,6 +24,7 @@ # Class representing a list of condition sets class SeConditionSets(StateEngineTools.SeItemChild): + # Initialize the list of condition sets # abitem: parent SeItem instance def __init__(self, abitem): @@ -41,7 +42,7 @@ def count(self): def update(self, name, item, grandparent_item): # Add condition set if not yet existing if name not in self.__condition_sets: - self.__condition_sets[name] = StateEngineConditionSet.SeConditionSet(self._abitem, name) + self.__condition_sets[name] = StateEngineConditionSet.SeConditionSet(self._abitem, name, item) # Update this condition set self.__condition_sets[name].update(item, grandparent_item) @@ -64,6 +65,7 @@ def write_to_logger(self): def one_conditionset_matching(self): if self.count() == 0: self._log_debug("No condition sets defined -> matching") + self._abitem.lastconditionset_set('', '') return True for name in self.__condition_sets: if self.__condition_sets[name].all_conditions_matching(): diff --git a/stateengine/StateEngineItem.py b/stateengine/StateEngineItem.py index 76eab569b..86392f447 100755 --- a/stateengine/StateEngineItem.py +++ b/stateengine/StateEngineItem.py @@ -37,6 +37,10 @@ class SeItem: def id(self): return self.__id + @property + def variables(self): + return self.__variables + # return instance of smarthome.py class @property def sh(self): @@ -76,9 +80,15 @@ def __init__(self, smarthome, item): # Init laststate items/values self.__laststate_item_id = self.return_item_by_attribute("se_laststate_item_id") - self.__laststate_internal_id = "" if self.__laststate_item_id is None else self.__laststate_item_id() + self.__laststate_internal_id = "" if self.__laststate_item_id is None else self.__laststate_item_id.property.value self.__laststate_item_name = self.return_item_by_attribute("se_laststate_item_name") - self.__laststate_internal_name = "" if self.__laststate_item_name is None else self.__laststate_item_name() + self.__laststate_internal_name = "" if self.__laststate_item_name is None else self.__laststate_item_name.property.value + + # Init lastconditionset items/values + self.__lastconditionset_item_id = self.return_item_by_attribute("se_lastconditionset_item_id") + self.__lastconditionset_internal_id = "" if self.__lastconditionset_item_id is None else self.__lastconditionset_item_id.property.value + self.__lastconditionset_item_name = self.return_item_by_attribute("se_lastconditionset_item_name") + self.__lastconditionset_internal_name = "" if self.__lastconditionset_item_name is None else self.__lastconditionset_item_name.property.value self.__states = [] self.__repeat_actions = StateEngineValue.SeValue(self, "Repeat actions if state is not changed", False, "bool") @@ -101,7 +111,9 @@ def __init__(self, smarthome, item): "item.suspend_time": self.__suspend_time.get(), "item.suspend_remaining": 0, "current.state_id": "", - "current.state_name": "" + "current.state_name": "", + "current.conditionset_id": "", + "current.conditionset_name": "" } # initialize states @@ -178,6 +190,11 @@ def update_state(self, item, caller=None, source=None, dest=None): if last_state is not None: self.__logger.info("Last state: {0} ('{1}')", last_state.id, last_state.name) + _last_conditionset_id = self.__lastconditionset_get_id() + _last_conditionset_name = self.__lastconditionset_get_name() + if _last_conditionset_id not in ['', None]: + self.__logger.info("Last Conditionset: {0} ('{1}')", _last_conditionset_id, _last_conditionset_name) + # find new state new_state = None for state in self.__states: @@ -228,6 +245,8 @@ def __update_check_can_enter(self, state): finally: self.__variables["current.state_id"] = "" self.__variables["current.state_name"] = "" + self.__variables["current.conditionset_id"] = "" + self.__variables["current.conditionset_name"] = "" # region Laststate ************************************************************************************************* # Set laststate @@ -251,6 +270,29 @@ def __laststate_get(self): return state return None + # return id of last conditionset + def __lastconditionset_get_id(self): + _lastconditionset_item_id = self.return_item_by_attribute("se_lastconditionset_item_id") + _lastconditionset_item_id = "" if _lastconditionset_item_id is None else _lastconditionset_item_id.property.value + return _lastconditionset_item_id + + # return name of last conditionset + def __lastconditionset_get_name(self): + _lastconditionset_item_name = self.return_item_by_attribute("se_lastconditionset_item_name") + _lastconditionset_item_name = "" if _lastconditionset_item_name is None else _lastconditionset_item_name.property.value + return _lastconditionset_item_name + + def lastconditionset_set(self, new_id, new_name): + self.__lastconditionset_internal_id = new_id + if self.__lastconditionset_item_id is not None: + # noinspection PyCallingNonCallable + self.__lastconditionset_item_id(self.__lastconditionset_internal_id) + + self.__lastconditionset_internal_name = new_name + if self.__lastconditionset_item_name is not None: + # noinspection PyCallingNonCallable + self.__lastconditionset_item_name(self.__lastconditionset_internal_name) + # endregion # region Helper methods ******************************************************************************************** @@ -363,6 +405,14 @@ def __write_to_log(self): if self.__laststate_item_name is not None: self.__logger.info("Item 'Laststate Name': {0}", self.__laststate_item_name.property.path) + # log lastcondition settings + _conditionset_id = self.return_item_by_attribute("se_lastconditionset_item_id") + _conditionset_name = self.return_item_by_attribute("se_lastconditionset_item_name") + if _conditionset_id is not None: + self.__logger.info("Item 'Lastcondition Id': {0}", _conditionset_id.property.path) + if _conditionset_name is not None: + self.__logger.info("Item 'Lastcondition Name': {0}", _conditionset_name.property.path) + # log states for state in self.__states: state.write_to_log() @@ -378,7 +428,8 @@ def cli_detail(self, handler): crons, cycles = self.__verbose_crons_and_cycles() triggers = self.__verbose_triggers() handler.push("AutoState Item {0}:\n".format(self.id)) - handler.push("\tCurrent state: {0}\n".format(self.__laststate_internal_name)) + handler.push("\tCurrent state: {0}\n".format(self.get_laststate_name())) + handler.push("\tCurrent conditionset: {0}\n".format(self.get_lastconditionset_name())) handler.push(self.__startup_delay.get_text("\t", "\n")) handler.push("\tCycle: {0}\n".format(cycles)) handler.push("\tCron: {0}\n".format(crons)) @@ -391,15 +442,34 @@ def cli_detail(self, handler): # return age of item def get_age(self): if self.__laststate_item_id is not None: - return self.__laststate_item_id.age() + return self.__laststate_item_id.property.last_change_age else: self.__logger.warning('No item for last state id given. Can not determine age!') return 0 + def get_condition_age(self): + if self.__lastconditionset_item_id is not None: + return self.__lastconditionset_item_id.property.last_change_age + else: + self.__logger.warning('No item for last condition id given. Can not determine age!') + return 0 + # return id of last state def get_laststate_id(self): return self.__laststate_internal_id + # return name of last state + def get_laststate_name(self): + return self.__laststate_internal_name + + # return id of last conditionset + def get_lastconditionset_id(self): + return self.__lastconditionset_internal_id + + # return name of last conditionset + def get_lastconditionset_name(self): + return self.__lastconditionset_internal_name + # return update trigger item def get_update_trigger_item(self): return self.__update_trigger_item diff --git a/stateengine/plugin.yaml b/stateengine/plugin.yaml index 58e84d068..0e0fe9a50 100755 --- a/stateengine/plugin.yaml +++ b/stateengine/plugin.yaml @@ -342,6 +342,18 @@ item_structs: visu_acl: r cache: True + conditionset_id: + remark: The id/path of the actual condition set is assigned to this item by the stateengine + type: str + visu_acl: r + cache: True + + conditionset_name: + remark: The name of the actual condition set is assigned to this item by the stateengine + type: str + visu_acl: r + cache: True + rules: name: Regeln und Item Verweise für den Zustandsautomaten remark: configure your se_item_* and eval_triggers here @@ -355,6 +367,8 @@ item_structs: se_laststate_item_id: ..state_id se_laststate_item_name: ..state_name + se_lastconditionset_item_id: ..conditionset_id + se_lastconditionset_item_name: ..conditionset_name state_lock: name: Zustandsvorlage zum Sperren der Evaluierung diff --git a/stateengine/user_doc/user_doc5.rst b/stateengine/user_doc/user_doc5.rst index 14a0205e3..90821a185 100755 --- a/stateengine/user_doc/user_doc5.rst +++ b/stateengine/user_doc/user_doc5.rst @@ -82,7 +82,7 @@ und der Zustand aktiviert. .. code-block:: yaml - se_laststate: + se_value_laststate: - 'kochen' - 'eval:1+2' - 'item:..laststate_id' @@ -249,6 +249,11 @@ Sonnenaufgang/Sonnenuntergang, 90 → Sonne exakt im Zenith Das Alter wird über die letzte Änderung des Items, das als ``se_laststate_item_id`` angegeben ist, ermittelt. +**condition_age** +*Zeit seit der letzten Änderung des Bedingungssets (Sekunden)* +Das Alter wird über die letzte Änderung des Items, das als +``se_lastconditionset_item_id`` angegeben ist, ermittelt. + **random** *Zufallszahl zwischen 0 und 100* Wenn etwas zufällig mit einer Wahrscheinlichkeit von 60% passieren @@ -257,8 +262,20 @@ verwendet werden. **laststate** *Id des Zustandsitems des aktuellen Status* +Die Abfrage se_value_laststate ist besonders wichtig für +Bedingungsabfragen, die über das Verbleiben im aktuellen Zustand +bestimmen (z.b. enter_stay). So können aber auch Stati übersprungen +werden, wenn sie nicht nach einem bestimmten anderen Zustand aktiviert +werden sollen. Wichtig: Hier muss die vollständige Item-Id angegeben werden +**lastconditionset_id/name** +*Id des Bedingungssets des aktuellen Status* +Wie bei laststate sind auch die lastconditionset Bedingungsabfragen +primär relevant für Abfragen zum Verbleiben in einem Zustand. Gerade bei +komplexeren Bedingungssets macht es oftmals Sinn, nach dem Set zu fragen, +das denn nun wirklich für die letzte Zustandsbestimmung relevant war. + **trigger_item, trigger_caller, trigger_source, trigger_dest** *item, caller, source und dest-Werte, durch die die Zustandsermittlung direkt ausgelöst wurde* diff --git a/stateengine/user_doc/user_doc9.rst b/stateengine/user_doc/user_doc9.rst index 4a5e33c16..a9239392f 100755 --- a/stateengine/user_doc/user_doc9.rst +++ b/stateengine/user_doc/user_doc9.rst @@ -74,6 +74,18 @@ se_plugin. Dieser Codeblock wird zwingend von jedem Zustandsautomaten benötigt. visu_acl: r cache: True + conditionset_id: + remark: The id/path of the actual condition set is assigned to this item by the stateengine + type: str + visu_acl: r + cache: True + + conditionset_name: + remark: The name of the actual condition set is assigned to this item by the stateengine + type: str + visu_acl: r + cache: True + rules: name: Regeln und Item Verweise für den Zustandsautomaten type: bool @@ -86,6 +98,8 @@ se_plugin. Dieser Codeblock wird zwingend von jedem Zustandsautomaten benötigt. se_laststate_item_id: ..state_id se_laststate_item_name: ..state_name + se_lastconditionset_item_id: ..conditionset_id + se_lastconditionset_item_name: ..conditionset_name Die ``state_lock`` Vorlage beinhaltet zum einen den Lock Zustand mit dem Namen "gesperrt", zum anderen ein Item mit dem Namen ``lock``. Wird dieses auf "1/True" gesetzt, wird der From 04c971380e247ba986c54054381235157610dc8c Mon Sep 17 00:00:00 2001 From: onkelandy Date: Fri, 7 Jun 2019 14:47:40 +0200 Subject: [PATCH 095/200] optimize error message if item does not exist --- uzsu/__init__.py | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/uzsu/__init__.py b/uzsu/__init__.py index 00c8ed67e..a6c808a42 100755 --- a/uzsu/__init__.py +++ b/uzsu/__init__.py @@ -226,18 +226,20 @@ def _add_type(self, item): :type item: item :return: The item type of the item that is changed """ + _itemforuzsu = self.get_iattr_value(item.conf, ITEM_TAG[0]) try: - _uzsuitem = self.itemsApi.return_item(self.get_iattr_value(item.conf, ITEM_TAG[0])) + _uzsuitem = self.itemsApi.return_item(_itemforuzsu) except Exception as err: _uzsuitem = None - self.logger.warning("Item to be set by uzsu '{}' does not exist. Error: {}".format( - self.get_iattr_value(item.conf, ITEM_TAG[0]), err)) + self.logger.warning("Item to be set by uzsu '{}' does not exist. Error: {}".format(_itemforuzsu, err)) try: _itemtype = _uzsuitem.type() except Exception as err: - _itemtype = 'foo' if _uzsuitem else None - self.logger.warning("Item to be set by uzsu '{}' does not have a type attribute. Error: {}".format( - self.get_iattr_value(item.conf, ITEM_TAG[0]), err)) + _itemtype = 'foo' if _uzsuitem is not None else None + if _itemtype is None: + self.logger.warning("Item to be set by uzsu '{}' does not exist. Error: {}".format(_itemforuzsu, err)) + else: + self.logger.warning("Item to be set by uzsu '{}' does not have a type attribute. Error: {}".format(_itemforuzsu, err)) return _itemtype def _logics_activate(self, activevalue=None, item=None): From aff39f0967865484741c19114fb0265cf0fc538a Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sat, 8 Jun 2019 11:39:00 +0200 Subject: [PATCH 096/200] fix problem with plugin.yaml (name of player and playlist renamed!) --- squeezebox/plugin.yaml | 104 +++++++++++++++++++++-------------------- 1 file changed, 53 insertions(+), 51 deletions(-) diff --git a/squeezebox/plugin.yaml b/squeezebox/plugin.yaml index 0fe41b83b..f02d0ef34 100644 --- a/squeezebox/plugin.yaml +++ b/squeezebox/plugin.yaml @@ -163,28 +163,28 @@ item_structs: abortscan: type: bool visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_send: abortscan squeezebox_recv: abortscan wipecache: type: bool visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_send: wipecache squeezebox_recv: wipecache libraries: type: str visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_send: libraries squeezebox_recv: libraries totalgenres: type: num visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_send: info total genres ? squeezebox_recv: info total genres squeezebox_init: info total genres @@ -192,7 +192,7 @@ item_structs: totalduration: type: num visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_send: info total duration ? squeezebox_recv: info total duration squeezebox_init: info total duration @@ -200,7 +200,7 @@ item_structs: totalartists: type: num visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_send: info total artists ? squeezebox_recv: info total artists squeezebox_init: info total artists @@ -208,7 +208,7 @@ item_structs: totalalbums: type: num visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_send: info total albums ? squeezebox_recv: info total albums squeezebox_init: info total albums @@ -216,7 +216,7 @@ item_structs: totalsongs: type: num visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_send: info total songs ? squeezebox_recv: info total songs squeezebox_init: info total songs @@ -231,7 +231,7 @@ item_structs: query: type: bool visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_send: rescan ? progress: @@ -243,7 +243,7 @@ item_structs: query: type: bool visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_send: rescanprogress server: @@ -265,7 +265,7 @@ item_structs: query: type: bool visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_send: player count ? player: @@ -294,7 +294,7 @@ item_structs: query: type: bool visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_send: syncgroups ? signalstrength: @@ -307,10 +307,10 @@ item_structs: query: type: bool visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_send: signalstrength ? - name: + player_name: type: str visu_acl: rw squeezebox_send: name {} @@ -320,7 +320,7 @@ item_structs: connected: type: bool visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_send: connected ? squeezebox_recv: connected squeezebox_init: connected @@ -335,7 +335,7 @@ item_structs: sync: type: str visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_send: sync {} squeezebox_init: sync squeezebox_recv: sync @@ -343,13 +343,13 @@ item_structs: query: type: bool visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_send: sync ? unsync: type: bool visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_send: sync - power: @@ -375,24 +375,26 @@ item_structs: query: type: bool visu_acl: rw - enforce_updates: 'True' - squeezebox_send: display ? ? + enforce_updates: True + squeezebox_send: display ? connect: type: str visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_send: connect {} squeezebox_recv: connect disconnect: type: str visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_send: disconnect {} squeezebox_recv: disconnect info: + name: Vorlage-Struktur für Squeezebox Mediainfo + genre: type: str visu_acl: ro @@ -414,7 +416,7 @@ item_structs: currentalbumarturl: type: str visu_acl: ro - cache: 'True' + cache: True squeezebox_albumart: remark: Will get set to http://:/music/current/cover.jpg?player= automatically on plugin start @@ -443,7 +445,7 @@ item_structs: squeezebox_init: duration controls: - name: Vorlage-Struktur für Squeezebox Player + name: Vorlage-Struktur für Squeezebox Playercontrols mode: type: str @@ -456,12 +458,12 @@ item_structs: query: type: bool visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_send: mode ? mute: type: bool - enforce_updates: 'True' + enforce_updates: True visu_acl: rw squeezebox_send: mixer muting {} squeezebox_recv: prefset server mute @@ -478,17 +480,17 @@ item_structs: type: num squeezebox_send: mixer volume {} remark: Use this item in conjunction with the fade() item function - enforce_updates: 'True' + enforce_updates: True up: type: bool - enforce_updates: 'True' + enforce_updates: True visu_acl: rw squeezebox_send: button volup down: type: bool - enforce_updates: 'True' + enforce_updates: True visu_acl: rw squeezebox_send: button voldown @@ -507,8 +509,8 @@ item_structs: customskip: type: str visu_acl: rw - enforce_updates: 'True' - cache: 'True' + enforce_updates: True + cache: True remark: Use a filter to potentially skip songs with specific attributes (low rating, genre, etc.) squeezebox_send: customskip setfilter filter{}.cs.xml @@ -575,28 +577,28 @@ item_structs: play: type: bool visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_send: play 3 squeezebox_recv: play stop: type: bool visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_send: stop squeezebox_recv: stop pause: type: bool visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_send: pause {} 3 squeezebox_recv: pause time: type: num visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_recv: time squeezebox_init: time squeezebox_send: time {} @@ -606,13 +608,13 @@ item_structs: visu_acl: rw squeezebox_send: time ? cycle: 100 - enforce_updates: 'True' + enforce_updates: True remark: Queries current song time every 10 seconds and updates time item forward: type: num visu_acl: rw - enforce_updates: 'True' + enforce_updates: True value: 10 remark: Item value defines time in seconds to skip in current song squeezebox_send: time +{} @@ -620,30 +622,30 @@ item_structs: rewind: type: num visu_acl: rw - enforce_updates: 'True' + enforce_updates: True value: 10 remark: Item value defines time in seconds to go back in current song squeezebox_send: time -{} next: type: bool - enforce_updates: 'True' + enforce_updates: True visu_acl: rw squeezebox_send: playlist index +1 previous: type: bool - enforce_updates: 'True' + enforce_updates: True visu_acl: rw squeezebox_send: playlist index -1 playlist: - name: Vorlage-Struktur für Squeezebox Playlists + remark: Vorlage-Struktur für Squeezebox Playlists index: type: num visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_send: playlist index {} squeezebox_init: playlist index squeezebox_recv: playlist index @@ -651,13 +653,13 @@ item_structs: query: type: bool visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_send: playlist index ? - name: + playlist_name: type: str visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_send: playlist name {} squeezebox_init: playlist name squeezebox_recv: playlist name @@ -665,30 +667,30 @@ item_structs: query: type: bool visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_send: playlist name ? save: type: str visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_send: playlist save {} load: type: str - enforce_updates: 'True' + enforce_updates: True visu_acl: rw squeezebox_send: playlist resume {} loadalbum: type: str - enforce_updates: 'True' + enforce_updates: True visu_acl: rw squeezebox_send: playlist loadalbum {} loadtracks: type: str - enforce_updates: 'True' + enforce_updates: True visu_acl: rw squeezebox_send: playlist loadtracks {} @@ -730,7 +732,7 @@ item_structs: clear: type: bool visu_acl: rw - enforce_updates: 'True' + enforce_updates: True squeezebox_send: playlist clear squeezebox_recv: playlist clear From a6ebae765d72d491b361e1e7627d18709d382ea1 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 9 Jun 2019 13:26:59 +0200 Subject: [PATCH 097/200] improve error message for get_relative_itemproperty --- stateengine/StateEngineEval.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/stateengine/StateEngineEval.py b/stateengine/StateEngineEval.py index 4f0b3709e..b7ce5d365 100755 --- a/stateengine/StateEngineEval.py +++ b/stateengine/StateEngineEval.py @@ -106,11 +106,15 @@ def get_relative_itemproperty(self, subitem_id, prop): self._log_debug("Executing method 'get_relative_itemproperty({0}, {1})'", subitem_id, prop) try: item = self._abitem.return_item(subitem_id) + except Exception as ex: + self._log_warning("Problem evaluating property of {0} - relative item might not exist. Error: {1}", subitem_id, ex) + return + try: propvalue = getattr(item.property, prop) - self._log_debug("Item property {0} from {1} is: {2}", prop, item.property.path, propvalue) + self._log_debug("Item property {0} from {1} is: {2}", prop, item.property.path, propvalue) return propvalue except Exception as ex: - self._log_warning("Problem evaluating property {0} of {1}: {2}", prop, subitem_id, ex) + self._log_warning("Problem evaluating property {0} of {1} - property might not exist. Error: {2}", prop, subitem_id, ex) # Insert end time of suspension into text # suspend_item_id: Item whose age is used to determine how much of the suspend time is already over From dcf80df966b3c83af05c1c4067a353ac61c11947 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 9 Jun 2019 13:46:20 +0200 Subject: [PATCH 098/200] New eval function get_attributevalue --- stateengine/StateEngineEval.py | 22 ++++++++++++++++++++++ stateengine/user_doc/user_doc10.rst | 14 ++++++++++++++ 2 files changed, 36 insertions(+) diff --git a/stateengine/StateEngineEval.py b/stateengine/StateEngineEval.py index b7ce5d365..4799e5cb9 100755 --- a/stateengine/StateEngineEval.py +++ b/stateengine/StateEngineEval.py @@ -116,6 +116,28 @@ def get_relative_itemproperty(self, subitem_id, prop): except Exception as ex: self._log_warning("Problem evaluating property {0} of {1} - property might not exist. Error: {2}", prop, subitem_id, ex) + # Return an attribute of the current state declaration + # item: can be a (relative) item or a stateengine variable + # attrib: name of attribute, can actually be any attribute name you can think of ;) + # + # See description of StateEngineItem.SeItem.return_item for details + def get_attributevalue(self, item, attrib): + self._log_debug("Executing method 'get_attributevalue({0}, {1})'", item, attrib) + if ":" in item: + type, item = StateEngineTools.partition_strip(item, ":") + item = self._abitem.return_item(self._abitem.get_variable(item)) if type =="var" else item + #item = self._abitem.return_item(item) if type == "item" else item + else: + item = self._abitem.return_item(item) + try: + attribvalue = item.conf[attrib] + #attribvalue = getattr(item.property.attributes, attrib) + self._log_debug("Item attribute {0} from {1} is: {2}", attrib, item.property.path, attribvalue) + return attribvalue + except Exception as ex: + self._log_warning("Problem evaluating attribute {0} of {1} - attribute might not exist. " + "Existing item attributes are: {3}. Error: {2}.", attrib, item, ex, getattr(item.property, 'attributes')) + # Insert end time of suspension into text # suspend_item_id: Item whose age is used to determine how much of the suspend time is already over # suspend_text: Text to insert end time of suspension into. Use strftime/strptime format codes for the end time diff --git a/stateengine/user_doc/user_doc10.rst b/stateengine/user_doc/user_doc10.rst index b9e23eae4..5d26a5804 100755 --- a/stateengine/user_doc/user_doc10.rst +++ b/stateengine/user_doc/user_doc10.rst @@ -76,6 +76,20 @@ Statt dieser Funktion sollte se_eval.get_relative_itemproperty('..suspend', 'val Welche Werte für ``property`` genutzt werden können, ist hier nachzulesen: `Item Properties `_). +**Wert eines Item-Attributs ermitteln** +*Der Wert eines Attributs wird ermittelt.* + +.. code-block:: yaml + + se_eval.get_attribute_value(item or var, attribute) + se_eval.get_attribute_value('..settings', 'some_special_attribute') + se_eval.get_attribute_value('var:current.state_id', 'some_special_attribute') + +Der erste Wert muss ein String sein, der entweder ein (relatives) Item enthält +oder eine StateEngine Variable (startet mit var:). Der zweite Wert ist der +Attributname, der eruiert werden soll. Gerade in Kombination mit der Abfrage +der aktuellen Status- oder Conditionset-ID können hier Konfigurationen vereinfacht werden. + **Suspend-Ende in einen Text einsetzen** *Das Ende der Suspend-Zeit wird in den Text suspend_text eingesetzt.* From a338e5f823160b3a91c25403d09a6459235d90f6 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 9 Jun 2019 14:02:38 +0200 Subject: [PATCH 099/200] extend documentation for loggingfilters and switch from autoblind to stateengine --- stateengine/user_doc/user_doc1.rst | 10 ++++++++++ stateengine/user_doc/user_doc2.rst | 21 ++++++++++++++++++--- 2 files changed, 28 insertions(+), 3 deletions(-) diff --git a/stateengine/user_doc/user_doc1.rst b/stateengine/user_doc/user_doc1.rst index f8221e82c..03f2287a1 100755 --- a/stateengine/user_doc/user_doc1.rst +++ b/stateengine/user_doc/user_doc1.rst @@ -51,3 +51,13 @@ Die folgenden Bedingungen können Teil der Bedingungsgruppen sein: Zusätzlich können beliebige Items (z.B. Temperatur) als Bedingungen geprüft werden (Minimum, Maximum oder Wert) + +.. rubric:: Umstieg von Autblind + :name: umstieg + +Das `Autoblind Plugin `_ +von i-am-offline wurde für SmarthomeNG 1.6 ins offizielle Repo übernommen und +dabei erweitert und optimiert. Für einen Umstieg ist es wichtig, die Attribute +``as`` durch ``se`` zu ersetzen. Im Pluginverzeichnis befindet sich ein Bash- +Script, das diesen Prozess deutlich vereinfacht und nicht nur die Attrinbute in +den items/*.yaml Dateien ersetzt, sondern auch die Cachefiles umbenennt. diff --git a/stateengine/user_doc/user_doc2.rst b/stateengine/user_doc/user_doc2.rst index 1995a588c..cabc577fa 100755 --- a/stateengine/user_doc/user_doc2.rst +++ b/stateengine/user_doc/user_doc2.rst @@ -27,14 +27,21 @@ Konfiguration Es gibt zwei Möglichkeiten, den Output des Plugins zu loggen: **intern** -Hierbei werden, sofern das Loglevel 1 oder 2 beträgt, sämtliche Logeinträge in eigene Dateien in einem selbst definierten Verzeichnis geschrieben. +Hierbei werden, sofern das Loglevel 1 oder 2 beträgt, sämtliche Logeinträge in +eigene Dateien in einem selbst definierten Verzeichnis geschrieben. **logging.yaml** -Sowohl der Output des Plugins generell, als auch der Einträge für bestimmte Items können in der logging.yaml Datei wie folgt deklariert werden: +Sowohl der Output des Plugins generell, als auch der Einträge für bestimmte Items +können in der logging.yaml Datei wie folgt deklariert werden: .. code-block:: yaml #etc/logging.yaml + filters: + notfound: + (): lib.logutils.Filter + msg: "(.*)Item (.*) not found!" + handlers: stateengine_licht_file: class: logging.handlers.TimedRotatingFileHandler @@ -45,6 +52,7 @@ Sowohl der Output des Plugins generell, als auch der Einträge für bestimmte It backupCount: 2 filename: ./var/log/stateengine_licht.log encoding: utf8 + filters: [notfound] loggers: plugins.stateengine: @@ -57,4 +65,11 @@ Sowohl der Output des Plugins generell, als auch der Einträge für bestimmte It handlers: [stateengine_licht_file] level: DEBUG -Das obige Beispiel würde in die Datei var/log/stateengine_licht.log sämtliche Debug Information schreiben, die für das Item "licht" und dessen Unteritem relevant sind. Zusätzlich werden alle Fehler des Plugins in die Datei smarthome-details.log geschrieben. +Das obige Beispiel würde in die Datei var/log/stateengine_licht.log sämtliche +Debug Information schreiben, die für das Item "licht" und dessen Unteritem +relevant sind. Aufgrund des aktiven Filters "notfound" werden sämtliche +Einträge zu nicht gefundenen Items übersprungen. + +Zusätzlich werden alle Fehler des Plugins in die Datei +smarthome-details.log geschrieben. Da der Filter hier nicht aktiv ist, +werden auch Informationen zu nicht gefundenen Items geloggt. From 16d4fc520e4089a6a648829e6987dd486fb3017e Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 9 Jun 2019 14:30:47 +0200 Subject: [PATCH 100/200] add get_relative_item function --- stateengine/StateEngineEval.py | 12 ++++++++++++ stateengine/user_doc/user_doc10.rst | 17 +++++++++++++++-- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/stateengine/StateEngineEval.py b/stateengine/StateEngineEval.py index 4799e5cb9..f5f44a549 100755 --- a/stateengine/StateEngineEval.py +++ b/stateengine/StateEngineEval.py @@ -84,6 +84,18 @@ def get_relative_itemid(self, subitem_id): except Exception as ex: self._log_warning("Problem evaluating name of {0}: {1}", subitem_id, ex) + # Return the item object related to the StateEngine Object Item + # item_id: Relative id of item whose absolute item object should be returned + # + # See description of StateEngineItem.SeItem.return_item for details + def get_relative_item(self, subitem_id): + self._log_debug("Executing method 'get_relative_item({0})'", subitem_id) + try: + item = self._abitem.return_item(subitem_id) + return item + except Exception as ex: + self._log_warning("Problem evaluating item {0}: {1}", subitem_id, ex) + # Return the value of an item related to the StateEngine Object Item # item_id: Relative id of item whose value should be returned # diff --git a/stateengine/user_doc/user_doc10.rst b/stateengine/user_doc/user_doc10.rst index 5d26a5804..81fc7d1ed 100755 --- a/stateengine/user_doc/user_doc10.rst +++ b/stateengine/user_doc/user_doc10.rst @@ -45,6 +45,17 @@ Vorgabewerte 0 für ``min`` und 255 für ``max``. se_eval.get_variable(varname) +**Item relativ zum Regelwerk-Item ermitteln** +*Ein Item Objekt relativ zur Item-Id des Regelwerk-Items wird ermittelt.* + +.. code-block:: yaml + + se_eval.get_relative_item(subitem_id) + se_eval.get_relative_item('..suspend') + +Das zurückgelieferte Item kann nun genutzt werden, um in einem eval Ausdruck +gesetzt oder abgefragt zu werden. + **Item-Id relativ zum Regelwerk-Item ermitteln** *Eine Item-Id relativ zur Item-Id des Regelwerk-Items wird ermittelt.* @@ -53,7 +64,8 @@ Vorgabewerte 0 für ``min`` und 255 für ``max``. se_eval.get_relative_itemid(subitem_id) se_eval.get_relative_itemid('..suspend') -Statt dieser Funktion sollte se_eval.get_relative_itemproperty('..suspend', 'path') verwendet werden. +Statt dieser Funktion kann se_eval.get_relative_itemproperty('..suspend', 'path') +verwendet werden. **Item-Wert relativ zum Regelwerk-Item ermitteln** *Der Wert eines Items relativ zur Item-Id des Regelwerk-Items wird ermittelt.* @@ -63,7 +75,8 @@ Statt dieser Funktion sollte se_eval.get_relative_itemproperty('..suspend', 'pat se_eval.get_relative_itemvalue(subitem_id) se_eval.get_relative_itemvalue('..suspend') -Statt dieser Funktion sollte se_eval.get_relative_itemproperty('..suspend', 'value') verwendet werden. +Statt dieser Funktion kann se_eval.get_relative_itemproperty('..suspend', 'value') +verwendet werden. **Item-Property relativ zum Regelwerk-Item ermitteln** *Eine Property eines Items relativ zur Item-Id des Regelwerk-Items wird ermittelt.* From ea5c66901583229b420ddb2933c1b314e09e6fb7 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 9 Jun 2019 17:13:56 +0200 Subject: [PATCH 101/200] avoid double eval with min/max values --- stateengine/StateEngineCondition.py | 10 +++++++--- stateengine/StateEngineConditionSet.py | 2 +- stateengine/StateEngineItem.py | 2 +- stateengine/StateEngineValue.py | 4 ++-- 4 files changed, 11 insertions(+), 7 deletions(-) diff --git a/stateengine/StateEngineCondition.py b/stateengine/StateEngineCondition.py index 685047291..3ef97762c 100755 --- a/stateengine/StateEngineCondition.py +++ b/stateengine/StateEngineCondition.py @@ -284,8 +284,10 @@ def __check_value(self): return False else: - min_value = [self.__min.get()] if not isinstance(self.__min.get(), list) else self.__min.get() - max_value = [self.__max.get()] if not isinstance(self.__max.get(), list) else self.__max.get() + min_get_value = self.__min.get() + max_get_value = self.__max.get() + min_value = [min_get_value] if not isinstance(min_get_value, list) else min_get_value + max_value = [max_get_value] if not isinstance(max_get_value, list) else max_get_value min_value = self._flatten_list(min_value) max_value = self._flatten_list(max_value) diff_len = len(min_value) - len(max_value) @@ -305,7 +307,7 @@ def __check_value(self): if min is not None and max is not None and min > max: min, max = max, min self._log_warning("Condition {}: min must not be greater than max! " \ - "Values got switched: min is now {}, max is now {}".format(self.__name, min, max)) + "Values got switched: min is now {}, max is now {}", self.__name, min, max) if min is None and max is None: self._log_debug("no limit given -> matching") return True @@ -329,6 +331,8 @@ def __check_value(self): self._log_debug("given limits ok -> matching") return True + except Exception as ex: + self._log_warning("Problem checking value {}", ex) finally: self._log_decrease_indent() diff --git a/stateengine/StateEngineConditionSet.py b/stateengine/StateEngineConditionSet.py index f39f432d5..13e070cd5 100755 --- a/stateengine/StateEngineConditionSet.py +++ b/stateengine/StateEngineConditionSet.py @@ -123,7 +123,7 @@ def all_conditions_matching(self): self.__currentconditionset_set(self.__id.property.path, self.__name) for name in self.__conditions: if not self.__conditions[name].check(): - self.__currentconditionset_set('','') + self.__currentconditionset_set('', '') return False self._abitem.lastconditionset_set(self.__id.property.path, self.__name) return True diff --git a/stateengine/StateEngineItem.py b/stateengine/StateEngineItem.py index 86392f447..fbd4f64a1 100755 --- a/stateengine/StateEngineItem.py +++ b/stateengine/StateEngineItem.py @@ -241,7 +241,7 @@ def __update_check_can_enter(self, state): self.__variables["current.state_name"] = state.name return state.can_enter() except Exception as ex: - self.__logger.warning("Problem with currentstate {0}", ex) + self.__logger.warning("Problem with currentstate {0}. Error: {1}", state, ex) finally: self.__variables["current.state_id"] = "" self.__variables["current.state_name"] = "" diff --git a/stateengine/StateEngineValue.py b/stateengine/StateEngineValue.py index f3f9dfb75..ee1d7eb8f 100755 --- a/stateengine/StateEngineValue.py +++ b/stateengine/StateEngineValue.py @@ -49,7 +49,7 @@ def __init__(self, abitem, name, allow_value_list=False, value_type=None): self.__cast_func = None def __repr__(self): - return "SeValue item: {}, name {}, value {}.".format(self.__item, self.__name, self.__value) + return "SeValue item: {}, function {}.".format(self._abitem, self.__name) # Indicate of object is empty (neither value nor item nor eval set) def is_empty(self): @@ -242,7 +242,7 @@ def __get_eval(self): if isinstance(self.__eval, list): values = [] for val in self.__eval: - self._log_info("Checking eval: {0}.", val) + self._log_info("Checking eval: {0}.", val.replace("\n", "")) self._log_increase_indent() if isinstance(val, str): if "stateengine_eval" in val or "se_eval" in val: From 2c89729745b38ec499eae65b657cb1c8288c2801 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 9 Jun 2019 23:17:44 +0200 Subject: [PATCH 102/200] update docu: conditionset_id/name --- stateengine/user_doc/user_doc10.rst | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/stateengine/user_doc/user_doc10.rst b/stateengine/user_doc/user_doc10.rst index 81fc7d1ed..e1ebe54d8 100755 --- a/stateengine/user_doc/user_doc10.rst +++ b/stateengine/user_doc/user_doc10.rst @@ -141,6 +141,11 @@ Im Plugin stehen folgende Variablen zur Verfügung: **current.state_name:** *Der Name des Status, der gerade geprüft wird* +**current.conditionset_id:** +*Die Id der Bedingungsgruppe, die gerade geprüft wird* + +**current.conditionset_name:** +*Der Name der Bedingungsgruppe, die gerade geprüft wird* Zustandsnamen ------------- From 5d3d72b499676070bbcbebddf877318fff3fe17c Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 9 Jun 2019 23:20:39 +0200 Subject: [PATCH 103/200] Update README release notes --- stateengine/README.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/stateengine/README.md b/stateengine/README.md index 063d4ad85..5659ef0f8 100755 --- a/stateengine/README.md +++ b/stateengine/README.md @@ -18,6 +18,9 @@ http://URL/index.php?page=widgets/stateengine.example * Check for source_details in manual_exclude/include functions * Improve logging and some code parts, better problem handling * Allow list entries for conditions (original_caller, laststate, min/max, etc.) +* Functions can now be used by se_eval instead of stateengine_eval +* New functions: get_attributevalue, get_relative_item, get_relative_itemproperty +* Query current and last condition set is possible, also executing actions based on condition sets ### v1.5.1 * Include original 1.4.2 version in subfolder From e5c7c69936bc0d8261a483d2aa5d2f35c061a70a Mon Sep 17 00:00:00 2001 From: onkelandy Date: Mon, 10 Jun 2019 01:38:19 +0200 Subject: [PATCH 104/200] =?UTF-8?q?Aktionen=20k=C3=B6nnen=20abh=C3=A4ngig?= =?UTF-8?q?=20vom=20Bedingungsset=20ausgef=C3=BChrt=20oder=20ignoriert=20w?= =?UTF-8?q?erden?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- stateengine/StateEngineAction.py | 24 ++++++++++++++++++++++++ stateengine/StateEngineActions.py | 22 +++++++++++++++++++++- stateengine/StateEngineConditionSets.py | 1 + stateengine/user_doc/user_doc6.rst | 18 ++++++++++++++++++ 4 files changed, 64 insertions(+), 1 deletion(-) diff --git a/stateengine/StateEngineAction.py b/stateengine/StateEngineAction.py index db0d2aaa0..42b4e4e0d 100755 --- a/stateengine/StateEngineAction.py +++ b/stateengine/StateEngineAction.py @@ -25,6 +25,7 @@ import datetime from lib.shtime import Shtime from lib.item import Items +import re # Base class from which all action classes are derived @@ -57,6 +58,7 @@ def __init__(self, abitem, name: str): self._name = name self.__delay = StateEngineValue.SeValue(self._abitem, "delay") self.__repeat = None + self.__conditionset = StateEngineValue.SeValue(self._abitem, "conditionset", True, "str") self.__order = StateEngineValue.SeValue(self._abitem, "order", False, "num") self._scheduler_name = None @@ -72,6 +74,9 @@ def update_repeat(self, value): def update_order(self, value): self.__order.set(value) + def update_conditionsets(self, value): + self.__conditionset.set(value) + def get_order(self): return self.__order.get(1) @@ -80,6 +85,8 @@ def write_to_logger(self): self.__delay.write_to_logger() if self.__repeat is not None: self.__repeat.write_to_logger() + if self.__conditionset is not None: + self.__conditionset.write_to_logger() self.__order.write_to_logger() # Execute action (considering delay, etc) @@ -88,6 +95,23 @@ def write_to_logger(self): def execute(self, is_repeat: bool, allow_item_repeat: bool): if not self._can_execute(): return + condition_to_meet = None if self.__conditionset.is_empty() else self.__conditionset.get() + condition_met = True if condition_to_meet is None else False + condition_to_meet = condition_to_meet if isinstance(condition_to_meet, list) else [condition_to_meet] + current_condition = self._abitem.get_lastconditionset_id() + for cond in condition_to_meet: + try: + cond = re.compile(cond) + matching = cond.match(current_condition) + if matching: + self._log_debug("Given conditionset matches current one: {}", matching) + condition_met = True + except Exception as ex: + if cond is not None: + self._log_warning("Given conditionset {} is not a valid regex: {}", cond, ex) + if condition_met is False: + self._log_info("Action '{0}': Conditionset {1} not matching {2}. Skipping.", self._name, condition_to_meet, current_condition) + return if is_repeat: if self.__repeat is None: diff --git a/stateengine/StateEngineActions.py b/stateengine/StateEngineActions.py index 9f7f09d8c..e38832649 100755 --- a/stateengine/StateEngineActions.py +++ b/stateengine/StateEngineActions.py @@ -20,6 +20,7 @@ ######################################################################### from . import StateEngineAction from . import StateEngineTools +import ast # Class representing a list of actions @@ -32,6 +33,7 @@ def __init__(self, abitem): self.__unassigned_delays = {} self.__unassigned_repeats = {} self.__unassigned_orders = {} + self.__unassigned_conditionsets = {} # Return number of actions in list def count(self): @@ -60,6 +62,14 @@ def update(self, attribute, value): else: self.__actions[name].update_repeat(value) return + elif func == "se_conditionset": + # set repeat + if name not in self.__actions: + # If we do not have the action yet (conditionset-attribute before action-attribute), ... + self.__unassigned_conditionsets[name] = value + else: + self.__actions[name].update_conditionsets(value) + return elif func == "se_order": # set order if name not in self.__actions: @@ -115,6 +125,10 @@ def __ensure_action_exists(self, func, name): action.update_order(self.__unassigned_orders[name]) del self.__unassigned_orders[name] + if name in self.__unassigned_conditionsets: + action.update_conditionsets(self.__unassigned_conditionsets[name]) + del self.__unassigned_conditionsets[name] + self.__actions[name] = action return True @@ -126,12 +140,16 @@ def __handle_combined_action_attribute(self, name, value_list): raise ValueError("Attribute 'se_action_{0}': Value must be a string or a list!".format(name)) # parse parameters - parameter = {'function': None, 'force': None, 'repeat': None, 'delay': 0, 'order': None} + parameter = {'function': None, 'force': None, 'repeat': None, 'delay': 0, 'order': None, 'conditionset': None} for entry in value_list: if isinstance(entry, dict): entry = list("{!s}:{!s}".format(k,v) for (k,v) in entry.items())[0] key, val = StateEngineTools.partition_strip(entry, ":") val = ":".join(map(str.strip, val.split(":"))) + self._log_warning("Val is {}, type {}", val, type(val)) + if val[:1] == '[' and val[-1:] == ']': + val = ast.literal_eval(val) + self._log_warning("Val is {}, type {}", val, type(val)) if key == "function": parameter[key] = StateEngineTools.cast_str(val) elif key == "force": @@ -213,6 +231,8 @@ def __handle_combined_action_attribute(self, name, value_list): self.__actions[name].update_delay(parameter['delay']) if parameter['order'] is not None: self.__actions[name].update_order(parameter['order']) + if parameter['conditionset'] is not None: + self.__actions[name].update_conditionsets(parameter['conditionset']) # noinspection PyMethodMayBeStatic def __raise_missing_parameter_error(self, parameter, param_name): diff --git a/stateengine/StateEngineConditionSets.py b/stateengine/StateEngineConditionSets.py index 1c899ee02..ed27d473d 100755 --- a/stateengine/StateEngineConditionSets.py +++ b/stateengine/StateEngineConditionSets.py @@ -70,4 +70,5 @@ def one_conditionset_matching(self): for name in self.__condition_sets: if self.__condition_sets[name].all_conditions_matching(): return True + return False diff --git a/stateengine/user_doc/user_doc6.rst b/stateengine/user_doc/user_doc6.rst index cd540ffd3..3bc904d74 100755 --- a/stateengine/user_doc/user_doc6.rst +++ b/stateengine/user_doc/user_doc6.rst @@ -74,6 +74,7 @@ Hochkommas gesetzt werden: - 'delay: ' - 'order: ' - 'repeat: ' + - 'conditionset: ' .. rubric:: Auszuführende Aktionsart :name: function @@ -224,3 +225,20 @@ der zugewiesenen Zahlen ausgeführt. .. code-block:: yaml 'order: [1|2|...]' + +**conditionset: ** + +.. code-block:: yaml + + 'conditionset: ["enter_(.*)_test", "eval:sh.itemX.property.name"]' + +Über das Attribut wird festgelegt, dass die Aktion nur dann ausgeführt werden +soll, wenn der Zustand durch die angegebene Bedingungsgruppe eingenommen wurde. +Zum Vergleich wird immer der volle Pfad der Bedingungsgruppe herangezogen. +Conditionset erlaubt sowohl eine Liste als auch reguläre Ausdrücke, wodurch +nicht zwingend der komplette Pfad der Bedingungsgruppe bekannt sein muss. +Der gesamte Pfad könnte wie folgt evaluiert werden: + +.. code-block:: yaml + + "eval:se_eval.get_relative_itemid('{}.'.format(se_eval.get_relative_itemvalue('..state_id')))" From b5dbed9d1f690b92a27760f5e73b63ef3ed4ff0b Mon Sep 17 00:00:00 2001 From: onkelandy Date: Mon, 10 Jun 2019 22:39:27 +0200 Subject: [PATCH 105/200] Introduce a "retrigger" special action --- stateengine/StateEngineAction.py | 25 ++++++++++++++++++++--- stateengine/StateEngineActions.py | 4 +--- stateengine/plugin.yaml | 32 +++++++++++++++++++++--------- stateengine/user_doc/user_doc6.rst | 6 ++++-- 4 files changed, 50 insertions(+), 17 deletions(-) diff --git a/stateengine/StateEngineAction.py b/stateengine/StateEngineAction.py index 42b4e4e0d..384378b14 100755 --- a/stateengine/StateEngineAction.py +++ b/stateengine/StateEngineAction.py @@ -488,6 +488,8 @@ def update(self, value): special, value = StateEngineTools.partition_strip(value, ":") if special == "suspend": self.__value = self.suspend_get_value(value) + elif special == "retrigger": + self.__value = self.retrigger_get_value(value) else: raise ValueError("Action {0}: Unknown special value '{1}'!".format(self._name, special)) self.__special = special @@ -501,16 +503,21 @@ def complete(self, item_state): def write_to_logger(self): SeActionBase.write_to_logger(self) self._log_debug("Special Action: {0}", self.__special) - if self.__value is not None: + if isinstance(self.__value, list): self._log_debug("value: {0}", self.__value) + else: + self._log_debug("Retrigger item: {0}", self.__value.property.path) # Really execute the action def _execute(self, actionname: str, repeat_text: str = ""): - # Trigger logic - self._log_info("{0}: Executing special action '{1}' using value '{2}'.{3}", actionname, self.__special, self.__value, repeat_text) + self._log_info("{0}: Executing special action '{1}' using item '{2}'.{3}", + actionname, self.__special, self.__value.property.path, repeat_text) self._log_increase_indent() if self.__special == "suspend": self.suspend_execute() + elif self.__special == "retrigger": + # noinspection PyCallingNonCallable + self.__value(True, caller='{} Retrigger'.format(StateEngineDefaults.plugin_identification)) else: self._log_decrease_indent() raise ValueError("{0}: Unknown special value '{1}'!".format(actionname, self.__special)) @@ -534,6 +541,18 @@ def suspend_get_value(self, value): return [suspend_item, manual_item.property.path] + def retrigger_get_value(self, value): + if value is None: + raise ValueError("Action {0}: Special action 'retrigger' requires item", self._name) + + se_item, __ = StateEngineTools.partition_strip(value, ",") + + se_item = self._abitem.return_item(se_item) + if se_item is None: + raise ValueError("Action {0}: Retrigger item '{1}' not found!", self._name, se_item) + + return se_item + def suspend_execute(self): suspend_item = self.__value[0] if self._abitem.get_update_trigger_source() == self.__value[1]: diff --git a/stateengine/StateEngineActions.py b/stateengine/StateEngineActions.py index e38832649..8445ba71b 100755 --- a/stateengine/StateEngineActions.py +++ b/stateengine/StateEngineActions.py @@ -63,7 +63,7 @@ def update(self, attribute, value): self.__actions[name].update_repeat(value) return elif func == "se_conditionset": - # set repeat + # set conditionset if name not in self.__actions: # If we do not have the action yet (conditionset-attribute before action-attribute), ... self.__unassigned_conditionsets[name] = value @@ -146,10 +146,8 @@ def __handle_combined_action_attribute(self, name, value_list): entry = list("{!s}:{!s}".format(k,v) for (k,v) in entry.items())[0] key, val = StateEngineTools.partition_strip(entry, ":") val = ":".join(map(str.strip, val.split(":"))) - self._log_warning("Val is {}, type {}", val, type(val)) if val[:1] == '[' and val[-1:] == ']': val = ast.literal_eval(val) - self._log_warning("Val is {}, type {}", val, type(val)) if key == "function": parameter[key] = StateEngineTools.cast_str(val) elif key == "force": diff --git a/stateengine/plugin.yaml b/stateengine/plugin.yaml index 0e0fe9a50..816161136 100755 --- a/stateengine/plugin.yaml +++ b/stateengine/plugin.yaml @@ -333,33 +333,41 @@ item_structs: state_id: remark: The id/path of the actual state is assigned to this item by the stateengine type: str - visu_acl: r + visu_acl: ro cache: True state_name: remark: The name of the actual state is assigned to this item by the stateengine type: str - visu_acl: r + visu_acl: ro cache: True conditionset_id: remark: The id/path of the actual condition set is assigned to this item by the stateengine type: str - visu_acl: r + visu_acl: ro cache: True conditionset_name: remark: The name of the actual condition set is assigned to this item by the stateengine type: str - visu_acl: r + visu_acl: ro cache: True + retrigger: + remark: Item to retrigger the rule set evaluation + type: bool + visu_acl: rw + enforce_updates: True + rules: - name: Regeln und Item Verweise für den Zustandsautomaten + name: Zustandsautomat remark: configure your se_item_* and eval_triggers here type: bool se_plugin: active eval: True + eval_trigger: + - ..retrigger # se_startup_delay: 30 # se_repeat_actions: true @@ -409,6 +417,12 @@ item_structs: visu_acl: ro cache: True + retrigger: + remark: Item to retrigger the rule set evaluation + type: bool + visu_acl: rw + enforce_updates: True + manuell: type: bool name: manuell @@ -438,12 +452,12 @@ item_structs: rules: se_item_suspend: ..suspend - se_item_retrigger: ..rules se_item_suspend_end: ..suspend_end se_item_suspend_active: ..settings.suspend_active se_suspend_time: eval:se_eval.get_relative_itemproperty('..settings.suspendduration', 'value') * 60 eval_trigger: - ..manuell + - ..retrigger suspend: name: ausgesetzt @@ -460,10 +474,10 @@ item_structs: - 'repeat: True' - 'order: 2' se_action_retrigger: - - 'function: set' - - 'to: True' + - 'function: special' + - 'value: retrigger:..retrigger' - 'delay: var:item.suspend_remaining' - - 'repeat: True' + - 'repeat: False' - 'order: 3' on_leave: diff --git a/stateengine/user_doc/user_doc6.rst b/stateengine/user_doc/user_doc6.rst index 3bc904d74..eca28c274 100755 --- a/stateengine/user_doc/user_doc6.rst +++ b/stateengine/user_doc/user_doc6.rst @@ -177,8 +177,10 @@ wird gleichzeitig auf ``Rums`` gesetzt. - value: Für bestimmte Sondervorgänge sind besondere Aktionen im Plugin -definiert (z. B. für das Suspend). Diese werden jedoch nicht hier -erläutert, sondern an den Stellen, an denen sie verwendet werden. +definiert. Aktuell gibt es zwei besondere Vorgänge: + +- suspend:, (z.B. suspend:..suspend,..manuell) +- retrigger: (z.B. retrigger:..retrigger) .. rubric:: Zusätzliche Parameter :name: parameter From b4d3267dacc7b6eb427588376f1860601a9fa00c Mon Sep 17 00:00:00 2001 From: onkelandy Date: Mon, 10 Jun 2019 22:58:35 +0200 Subject: [PATCH 106/200] Update README.md --- stateengine/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/stateengine/README.md b/stateengine/README.md index 5659ef0f8..37e8ddbe4 100755 --- a/stateengine/README.md +++ b/stateengine/README.md @@ -21,6 +21,7 @@ http://URL/index.php?page=widgets/stateengine.example * Functions can now be used by se_eval instead of stateengine_eval * New functions: get_attributevalue, get_relative_item, get_relative_itemproperty * Query current and last condition set is possible, also executing actions based on condition sets +* Implement a new special function to retrigger the state machine ### v1.5.1 * Include original 1.4.2 version in subfolder From 339354fce09d491416e415bbf81bbe3299a38417 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Tue, 11 Jun 2019 09:23:17 +0200 Subject: [PATCH 107/200] fix struct for retrigger --- stateengine/plugin.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stateengine/plugin.yaml b/stateengine/plugin.yaml index 816161136..c2aa2c5f8 100755 --- a/stateengine/plugin.yaml +++ b/stateengine/plugin.yaml @@ -477,7 +477,7 @@ item_structs: - 'function: special' - 'value: retrigger:..retrigger' - 'delay: var:item.suspend_remaining' - - 'repeat: False' + - 'repeat: True' - 'order: 3' on_leave: From 6b023271cdbf8e4e90603df379dae06add7330ce Mon Sep 17 00:00:00 2001 From: onkelandy Date: Tue, 11 Jun 2019 23:36:47 +0200 Subject: [PATCH 108/200] implement "se_eval" also for actions; additional add/remove function; docu update --- stateengine/README.md | 2 + stateengine/StateEngineAction.py | 116 ++++++++- stateengine/StateEngineActions.py | 24 +- stateengine/StateEngineCondition.py | 2 +- stateengine/StateEngineTools.py | 34 ++- stateengine/StateEngineValue.py | 20 +- stateengine/user_doc.rst | 2 + stateengine/user_doc/user_doc10.rst | 384 +++++++--------------------- stateengine/user_doc/user_doc11.rst | 357 ++++++++++++++------------ stateengine/user_doc/user_doc12.rst | 217 ++++++++++++++++ stateengine/user_doc/user_doc13.rst | 41 +++ stateengine/user_doc/user_doc3.rst | 41 ++- stateengine/user_doc/user_doc6.rst | 41 ++- 13 files changed, 799 insertions(+), 482 deletions(-) create mode 100755 stateengine/user_doc/user_doc12.rst create mode 100755 stateengine/user_doc/user_doc13.rst diff --git a/stateengine/README.md b/stateengine/README.md index 37e8ddbe4..e1b40d017 100755 --- a/stateengine/README.md +++ b/stateengine/README.md @@ -22,6 +22,8 @@ http://URL/index.php?page=widgets/stateengine.example * New functions: get_attributevalue, get_relative_item, get_relative_itemproperty * Query current and last condition set is possible, also executing actions based on condition sets * Implement a new special function to retrigger the state machine +* Defining an item to be changed by an action can now be done via eval functions +* New function to add and remove entries from Items with type list ### v1.5.1 * Include original 1.4.2 version in subfolder diff --git a/stateengine/StateEngineAction.py b/stateengine/StateEngineAction.py index 384378b14..da4878052 100755 --- a/stateengine/StateEngineAction.py +++ b/stateengine/StateEngineAction.py @@ -128,6 +128,7 @@ def execute(self, is_repeat: bool, allow_item_repeat: bool): else: repeat_text = "" + self._getitem_fromeval() plan_next = self._sh.scheduler.return_next(self._scheduler_name) if plan_next is not None and plan_next > self.shtime.now(): self._log_info("Action '{0}: Removing previous delay timer '{1}'.", self._name, self._scheduler_name) @@ -151,12 +152,12 @@ def execute(self, is_repeat: bool, allow_item_repeat: bool): # set the action based on a set_(action_name) attribute # value: Value of the set_(action_name) attribute def update(self, value): - raise NotImplementedError("Class %s doesn't implement update()" % self.__class__.__name__) + raise NotImplementedError("Class {} doesn't implement update()".format(self.__class__.__name__)) # Complete action # item_state: state item to read from def complete(self, item_state): - raise NotImplementedError("Class %s doesn't implement complete()" % self.__class__.__name__) + raise NotImplementedError("Class {} doesn't implement complete()".format(self.__class__.__name__)) # Check if execution is possible def _can_execute(self): @@ -164,8 +165,10 @@ def _can_execute(self): # Really execute the action (needs to be implemented in derived classes) def _execute(self, actionname: str, repeat_text: str = ""): - raise NotImplementedError("Class %s doesn't implement _execute()" % self.__class__.__name__) + raise NotImplementedError("Class {} doesn't implement _execute()".format(self.__class__.__name__)) + def _getitem_fromeval(self): + return # Class representing a single "se_set" action class SeActionSetItem(SeActionBase): @@ -179,6 +182,28 @@ def __init__(self, abitem, name: str): self.__mindelta = StateEngineValue.SeValue(self._abitem, "mindelta") self.__caller = StateEngineDefaults.plugin_identification + def _getitem_fromeval(self): + if isinstance(self.__item, str): + if "stateengine_eval" in self.__item or "se_eval" in self.__item: + # noinspection PyUnusedLocal + stateengine_eval = se_eval = StateEngineEval.SeEval(self._abitem) + try: + item = self.__item.replace('sh', 'self._sh') + item = eval(item) + if item is not None: + self.__item = self._abitem.return_item(item) + self.__value.set_cast(self.__item.cast) + self.__mindelta.set_cast(self.__item.cast) + self._scheduler_name = self.__item.property.path + "-SeItemDelayTimer" + if self._abitem.id == self.__item.property.path: + self.__caller += '_self' + else: + self._log_error("Problem evaluating item '{}' from eval. It is None.", item) + return + except Exception as ex: + self._log_error("Problem evaluating item '{}' from eval: {}.", self.__item, ex) + return + # set the action based on a set_(action_name) attribute # value: Value of the set_(action_name) attribute def update(self, value): @@ -192,13 +217,18 @@ def complete(self, item_state): item = StateEngineTools.find_attribute(self._sh, item_state, "se_item_" + self._name) if item is not None: self.__item = self._abitem.return_item(item) + else: + item = StateEngineTools.find_attribute(self._sh, item_state, "se_eval_" + self._name) + self.__item = str(item) if self.__mindelta.is_empty(): mindelta = StateEngineTools.find_attribute(self._sh, item_state, "se_mindelta_" + self._name) if mindelta is not None: self.__mindelta.set(mindelta) - if self.__item is not None: + if isinstance(self.__item, str): + pass + elif self.__item is not None: self.__value.set_cast(self.__item.cast) self.__mindelta.set_cast(self.__item.cast) self._scheduler_name = self.__item.property.path + "-SeItemDelayTimer" @@ -208,7 +238,9 @@ def complete(self, item_state): # Write action to logger def write_to_logger(self): SeActionBase.write_to_logger(self) - if self.__item is not None: + if isinstance(self.__item, str): + self._log_debug("item from eval: {0}", self.__item) + elif self.__item is not None: self._log_debug("item: {0}", self.__item.property.path) self.__mindelta.write_to_logger() self.__value.write_to_logger() @@ -240,9 +272,12 @@ def _execute(self, actionname: str, repeat_text: str = ""): self._log_debug(text, actionname, self.__item.property.path, value, delta, mindelta) return - self._log_debug("{0}: Set '{1}' to '{2}'.{3}", actionname, self.__item.property.path, value, repeat_text) + self._execute_set_add_remove(actionname, repeat_text, self.__item, value) + + def _execute_set_add_remove(self, actionname, repeat_text, item, value): + self._log_debug("{0}: Set '{1}' to '{2}'. {3}", actionname, item.property.path, value, repeat_text) # noinspection PyCallingNonCallable - self.__item(value, caller='{} {}'.format(StateEngineDefaults.plugin_identification, self._parent)) + item(value, caller='{} {}'.format(StateEngineDefaults.plugin_identification, self._parent)) # Class representing a single "se_setbyattr" action @@ -394,13 +429,18 @@ def complete(self, item_state): item = StateEngineTools.find_attribute(self._sh, item_state, "se_item_" + self._name) if item is not None: self.__item = self._abitem.return_item(item) + else: + item = StateEngineTools.find_attribute(self._sh, item_state, "se_eval_" + self._name) + self.__item = str(item) if self.__mindelta.is_empty(): mindelta = StateEngineTools.find_attribute(self._sh, item_state, "se_mindelta_" + self._name) if mindelta is not None: self.__mindelta.set(mindelta) - if self.__item is not None: + if isinstance(self.__item, str): + pass + elif self.__item is not None: self.__value.set_cast(self.__item.cast) self.__mindelta.set_cast(self.__item.cast) self._scheduler_name = self.__item.property.path + "-SeItemDelayTimer" @@ -408,7 +448,9 @@ def complete(self, item_state): # Write action to logger def write_to_logger(self): SeActionBase.write_to_logger(self) - if self.__item is not None: + if isinstance(self.__item, str): + self._log_debug("item from eval: {0}", self.__item) + elif self.__item is not None: self._log_debug("item: {0}", self.__item.property.path) self.__mindelta.write_to_logger() self.__value.write_to_logger() @@ -426,6 +468,28 @@ def _can_execute(self): return True + def _getitem_fromeval(self): + if isinstance(self.__item, str): + if "stateengine_eval" in self.__item or "se_eval" in self.__item: + # noinspection PyUnusedLocal + stateengine_eval = se_eval = StateEngineEval.SeEval(self._abitem) + try: + item = self.__item.replace('sh', 'self._sh') + item = eval(item) + if item is not None: + self.__item = self._abitem.return_item(item) + self.__value.set_cast(self.__item.cast) + self.__mindelta.set_cast(self.__item.cast) + self._scheduler_name = self.__item.property.path + "-SeItemDelayTimer" + if self._abitem.id == self.__item.property.path: + self.__caller += '_self' + else: + self._log_error("Problem evaluating item '{}' from eval. It is None.", item) + return + except Exception as ex: + self._log_error("Problem evaluating item '{}' from eval: {}.", self.__item, ex) + return + # Really execute the action (needs to be implemented in derived classes) # noinspection PyProtectedMember def _execute(self, actionname: str, repeat_text: str = ""): @@ -571,3 +635,37 @@ def suspend_execute(self): suspend_remaining = int(suspend_time - suspend_over + 0.5) # adding 0.5 causes round up ... self._abitem.set_variable("item.suspend_remaining", suspend_remaining) self._log_debug("Updated variable 'item.suspend_remaining' to {0}", suspend_remaining) + + +# Class representing a single "se_add" action +class SeActionAddItem(SeActionSetItem): + # Initialize the action + # abitem: parent SeItem instance + # name: Name of action + def __init__(self, abitem, name: str): + super().__init__(abitem, name) + + def _execute_set_add_remove(self, actionname, repeat_text, item, value): + value = item.property.value + value + self._log_debug("{0}: Add '{1}' to '{2}'. {3}", actionname, value, item.property.path, repeat_text) + # noinspection PyCallingNonCallable + item(value, caller='{} {}'.format(StateEngineDefaults.plugin_identification, self._parent)) + + +# Class representing a single "se_remove" action +class SeActionRemoveItem(SeActionSetItem): + # Initialize the action + # abitem: parent SeItem instance + # name: Name of action + def __init__(self, abitem, name: str): + super().__init__(abitem, name) + + def _execute_set_add_remove(self, actionname, repeat_text, item, value): + currentvalue = item.property.value + for v in value: + try: + currentvalue = currentvalue.remove(v) + self._log_debug("{0}: Remove '{1}' from '{2}'. {3}", actionname, v, item.property.path, repeat_text) + except Exception as ex: + self._log_warning("{0}: Remove '{1}' from '{2}' failed: {3}", actionname, value, item.property.path, ex) + item(currentvalue, caller='{} {}'.format(StateEngineDefaults.plugin_identification, self._parent)) diff --git a/stateengine/StateEngineActions.py b/stateengine/StateEngineActions.py index 8445ba71b..03c949ab8 100755 --- a/stateengine/StateEngineActions.py +++ b/stateengine/StateEngineActions.py @@ -87,7 +87,6 @@ def update(self, attribute, value): if name in self.__actions: del self.__actions[name] self._log_warning("Ignoring action {0} because: {1}", attribute, ex) - #raise ValueError("Action {0}: {1}".format(attribute, ex)) # ensure that action exists and create if missing # func: action function @@ -110,6 +109,10 @@ def __ensure_action_exists(self, func, name): action = StateEngineAction.SeActionRun(self._abitem, name) elif func == "se_special": action = StateEngineAction.SeActionSpecial(self._abitem, name) + elif func == "se_add": + action = StateEngineAction.SeActionAddItem(self._abitem, name) + elif func == "se_remove": + action = StateEngineAction.SeActionRemoveItem(self._abitem, name) else: return False @@ -143,7 +146,7 @@ def __handle_combined_action_attribute(self, name, value_list): parameter = {'function': None, 'force': None, 'repeat': None, 'delay': 0, 'order': None, 'conditionset': None} for entry in value_list: if isinstance(entry, dict): - entry = list("{!s}:{!s}".format(k,v) for (k,v) in entry.items())[0] + entry = list("{!s}:{!s}".format(k, v) for (k, v) in entry.items())[0] key, val = StateEngineTools.partition_strip(entry, ":") val = ":".join(map(str.strip, val.split(":"))) if val[:1] == '[' and val[-1:] == ']': @@ -159,7 +162,7 @@ def __handle_combined_action_attribute(self, name, value_list): # function given and valid? if parameter['function'] is None: raise ValueError("Attribute 'se_action_{0}: Parameter 'function' must be set!".format(name)) - if parameter['function'] not in ('set', 'force', 'run', 'byattr', 'trigger', 'special'): + if parameter['function'] not in ('set', 'force', 'run', 'byattr', 'trigger', 'special', 'add', 'remove'): raise ValueError("Attribute 'se_action_{0}: Invalid value '{1}' for parameter 'function'!".format(name, parameter['function'])) # handle force @@ -169,12 +172,12 @@ def __handle_combined_action_attribute(self, name, value_list): self._log_warning("Attribute 'se_action_{0}': Parameter 'force' not supported for function '{1}'", name, parameter['function']) elif parameter['force'] and parameter['function'] == "set": # Convert type "set" with force=True to type "force" - self._log_info("Attribute 'se_action_{0}': Parameter 'function' changed from 'set' to 'force', " \ + self._log_info("Attribute 'se_action_{0}': Parameter 'function' changed from 'set' to 'force', " "because parameter 'force' is 'True'!", name) parameter['function'] = "force" elif not parameter['force'] and parameter['function'] == "force": # Convert type "force" with force=False to type "set" - self._log_info("Attribute 'se_action_{0}': Parameter 'function' changed from 'force' to 'set', "\ + self._log_info("Attribute 'se_action_{0}': Parameter 'function' changed from 'force' to 'set', " "because parameter 'force' is 'False'!", name) parameter['function'] = "set" @@ -214,13 +217,22 @@ def __handle_combined_action_attribute(self, name, value_list): self.__raise_missing_parameter_error(parameter, 'value') self.__actions[name].update(parameter['value']) exists = True + elif parameter['function'] == "add": + if self.__ensure_action_exists("se_add", name): + self.__raise_missing_parameter_error(parameter, 'value') + self.__actions[name].update(parameter['value']) + exists = True + elif parameter['function'] == "remove": + if self.__ensure_action_exists("se_remove", name): + self.__raise_missing_parameter_error(parameter, 'value') + self.__actions[name].update(parameter['value']) + exists = True except ValueError as ex: exists = False if name in self.__actions: del self.__actions[name] self._log_warning("Ignoring action {0} because: {1}", name, ex) - # add additional parameters if exists: if parameter['repeat'] is not None: diff --git a/stateengine/StateEngineCondition.py b/stateengine/StateEngineCondition.py index 3ef97762c..6b45b7852 100755 --- a/stateengine/StateEngineCondition.py +++ b/stateengine/StateEngineCondition.py @@ -52,7 +52,7 @@ def __repr__(self): return "SeCondition item: {}, name {}, eval {}, value {}.".format(self.__item, self.__name, self.__eval, self.__value) # set a certain function to a given value - # func: Function to set ('item', 'eval', 'value', 'min', 'max', 'negate', 'agemin', 'agemax' or 'agenegate' + # func: Function to set ('item', 'eval', 'value', 'min', 'max', 'negate', 'agemin', 'agemax' or 'agenegate') # value: Value for function def set(self, func, value): if func == "se_item": diff --git a/stateengine/StateEngineTools.py b/stateengine/StateEngineTools.py index e6b45213c..6333b271b 100755 --- a/stateengine/StateEngineTools.py +++ b/stateengine/StateEngineTools.py @@ -19,6 +19,7 @@ # along with this plugin. If not, see . ######################################################################### import datetime +from ast import literal_eval # # Some general tool functions # @@ -53,11 +54,15 @@ def cast_num(value): return value try: return int(value) - except: + except Exception: pass try: return float(value) - except: + except Exception: + pass + try: + return literal_eval(value) + except Exception: pass raise ValueError("Can't cast {0} to int!".format(value)) @@ -73,16 +78,16 @@ def cast_bool(value): elif value in [True, 1]: return True else: - raise ValueError("Can't cast {0} to bool!".format(str(value))) + raise ValueError("Can't cast {0} to bool!".format(value)) elif type(value) in [str, str]: if value.lower() in ['0', 'false', 'no', 'off']: return False elif value.lower() in ['1', 'true', 'yes', 'on']: return True else: - raise ValueError("Can't cast {0} to bool!".format(str(value))) + raise ValueError("Can't cast {0} to bool!".format(value)) else: - raise ValueError("Can't cast {0} to bool!".format(str(value))) + raise ValueError("Can't cast {0} to bool!".format(value)) # cast a value as string. Throws ValueError if cast is not possible @@ -93,7 +98,24 @@ def cast_str(value): if isinstance(value, str): return value else: - raise ValueError("Can't cast {0} to str!".format(str(value))) + raise ValueError("Can't cast {0} to str!".format(value)) + + +# cast a value as list. Throws ValueError if cast is not possible +# Taken from smarthome.py/lib/item.py +# value: value to cast +# returns: value as string +def cast_list(value): + if isinstance(value, str): + try: + value = literal_eval(value) + except Exception: + pass + if isinstance(value, list): + return value + else: + value = [value] + return value # cast value as datetime.time. Throws ValueError if cast is not possible diff --git a/stateengine/StateEngineValue.py b/stateengine/StateEngineValue.py index ee1d7eb8f..2f71193b1 100755 --- a/stateengine/StateEngineValue.py +++ b/stateengine/StateEngineValue.py @@ -36,7 +36,6 @@ def __init__(self, abitem, name, allow_value_list=False, value_type=None): self.__item = None self.__eval = None self.__varname = None - if value_type == "str": self.__cast_func = StateEngineTools.cast_str elif value_type == "num": @@ -45,11 +44,13 @@ def __init__(self, abitem, name, allow_value_list=False, value_type=None): self.__cast_func = StateEngineTools.cast_bool elif value_type == "time": self.__cast_func = StateEngineTools.cast_time + elif value_type == "list": + self.__cast_func = StateEngineTools.cast_list else: self.__cast_func = None def __repr__(self): - return "SeValue item: {}, function {}.".format(self._abitem, self.__name) + return "SeValue item: {}, function {}, value {}.".format(self._abitem, self.__name, self.get()) # Indicate of object is empty (neither value nor item nor eval set) def is_empty(self): @@ -58,7 +59,6 @@ def is_empty(self): # Set value directly from attribute # item: item containing the attribute # attribute_name: name of attribute to use - # value_type: type of value for casting (allowed: str, num ,bool, time) # default_value: default value to be used if item contains no such attribute def set_from_attr(self, item, attribute_name, default_value=None): value = item.conf[attribute_name] if attribute_name in item.conf else default_value @@ -73,7 +73,7 @@ def set(self, value, name=""): field_value = [] for i, val in enumerate(value): if isinstance(val, dict) or isinstance(val, tuple): - val = list("{!s}:{!s}".format(k,v) for (k,v) in val.items())[0] + val = list("{!s}:{!s}".format(k, v) for (k, v) in val.items())[0] if isinstance(val, str): s, f = StateEngineTools.partition_strip(val, ":") else: @@ -211,18 +211,22 @@ def __do_cast(self, value): if value is not None and self.__cast_func is not None: try: if isinstance(value, list): - # noinspection PyCallingNonCallable valuelist = [] for element in value: valuelist.append(element if element == 'novalue' else self.__cast_func(element)) value = valuelist else: - # noinspection PyCallingNonCallable value = self.__cast_func(value) except Exception as ex: - self._log_info("Problem casting value '{0}' to {2}: {1}.", value, ex, self.__cast_func) + if self.__cast_func == self.__cast_func.__globals__['_cast_list']: + try: + value = StateEngineTools.cast_num(value) + except Exception: + pass + value = [value] + return value + self._log_info("Problem casting value '{0}' to {1}: {2}.", value, self.__cast_func, ex) return None - return value # Determine value by executing eval-function diff --git a/stateengine/user_doc.rst b/stateengine/user_doc.rst index ef4f78d81..e4336ff95 100755 --- a/stateengine/user_doc.rst +++ b/stateengine/user_doc.rst @@ -21,3 +21,5 @@ Dokumentation user_doc/user_doc9.rst user_doc/user_doc10.rst user_doc/user_doc11.rst + user_doc/user_doc12.rst + user_doc/user_doc13.rst diff --git a/stateengine/user_doc/user_doc10.rst b/stateengine/user_doc/user_doc10.rst index e1ebe54d8..d5ed10dc5 100755 --- a/stateengine/user_doc/user_doc10.rst +++ b/stateengine/user_doc/user_doc10.rst @@ -1,19 +1,19 @@ .. index:: Plugins; Stateengine -.. index:: Stateengine; Advanced -.. _Advanced: +.. index:: Stateengine; Funktionen und Variablen +.. Funktionen und Variablen: -Advanced -======== +Funktionen und Variablen +######################## + +.. rubric:: Vordefinierte Funktionen + :name: vordefiniertefunktionen -Vordefinierte Funktionen ------------------------- Das stateengine Plugin stellt verschiedene vordefinierte Funktionen zur Verfügung, die einfach für ``se_set_`` und ``se_run_`` Aktionen verwendet werden können: - **Sonnenstandsabhängige Lamellenausrichtung** *Die Neigung der Lamellen wird automatisch von der Höhe der Sonne bestimmt.* @@ -124,8 +124,8 @@ bestimmt. Dies könnte auch über ein relatives Item angegeben werden, wobei dieses unbedingt in Anführungszeichen gesetzt werden muss, z.B. ``'..suspend'`` -Variablen ---------- +.. rubric:: Variablen + :name: speziellevariablen Im Plugin stehen folgende Variablen zur Verfügung: @@ -135,301 +135,107 @@ Im Plugin stehen folgende Variablen zur Verfügung: **item.suspend_remaining:** *Die übrige Dauer des Suspend Zustands* +Beide obigen Variablen werden vom Suspendzustand genutzt, können bei +Bedarf aber auch für andere Zwecke, welche auch immer, genutzt werden. + **current.state_id:** *Die Id des Status, der gerade geprüft wird* **current.state_name:** *Der Name des Status, der gerade geprüft wird* -**current.conditionset_id:** -*Die Id der Bedingungsgruppe, die gerade geprüft wird* - -**current.conditionset_name:** -*Der Name der Bedingungsgruppe, die gerade geprüft wird* - -Zustandsnamen -------------- - -**name (optional):** -*Name des Zustands* - -Der Name des Zustands wird im Protokoll sowie als Wert für das -über ``se_laststate_item_name`` angegebene Item verwendet. Wenn -kein Name angegeben ist, wird hier die Id des -Zustands-Items verwendet. - -**se_name:** -*Überschreiben des Namens des Zustands* - -Über das Attribut ``se_name`` kann der im Attribut ``name`` angegebene Wert -überschrieben werden, beispielsweise mittels ``eval:sh.eine_funktion()``. -Dies wirkt sich jedoch nur auf den Wert aus, der in das über -``se_laststate_item_name`` angegebene Item geschrieben wird. Dies kann -beispielsweise nützlich sein, um den Namen abhängig von einer Bedingungsgruppe -zu ändern. Ist also z.B. der Zustand auf Grund der Temperatur eingenommen worden, -könnte der Name auf "Zustand (Temp)" geändert werden. Ist der Zustand aufgrund -der Helligkeitsbedingung aktiv, könnte der Name auf "Zustand (Hell)" geändert werden. -Im Protokoll wird immer der über das Attribut ``name`` angegebene Wert verwendet. - - -CLI ---- - -Sofern die eingesetzte smarthomeNG-Version dies unterstützt, -registriert das stateengine-Plugin zwei eigene Kommandos beim -CLI-Plugin. - -**se_list** -*Zeigt eine Liste der Regelwerk-Items, für die das stateengine-Plugin aktiv ist* - -**se_detail ** -*Zeigt Details zum Objekt Item* - - -Sperren -------- - -Für das Sperren der automatischen Zustandsermittlung führt man ein -Sperr-Item ein, das beispielsweise über einen Taster oder die Visu änderbar -ist. Sperr-Item und Zustand können durch ``struct: stateengine.state_lock`` -auf Höhe des Regelwerk-Items automatisch implementiert werden. - -.. rubric:: Das "Sperr"-Item - :name: dassperritem - -Die Sperre soll aktiv sein, wenn das Sperr-Item den Wert ``True`` hat. -Das Sperritem definiert man wie folgt: - -.. code-block:: yaml - - #items/item.yaml - beispiel: - lock: - item: - type: bool - name: Sperr-Item - visu_acl: rw - cache: on - -.. rubric:: Der Sperr-Zustand - :name: dersperrzustand - -Der zugehörige Zustand könnte so aussehen und sollte als erster Zustand definiert -werden, da er anderen Zuständen gegenüber priorisiert werden soll. - -.. code-block:: yaml - - #items/item.yaml - beispiel: - jalousie1: - rules: - # Sperr-Item zu eval_trigger: - eval_trigger: - - - - beispiel.lock.item - - # Items für Bedingungen und Aktionen - se_item_lock: beispiel.lock.item #Siehe Beispiel oben - - locked: - type: foo - name: Manuell gesperrt - - enter: - se_value_lock: true - - -Aussetzen ---------- - -Eine besondere Anforderung: Nach bestimmten manuellen Aktionen (z. -B. über einen Taster, die Visu, o. ä.) soll die automatische -Zustandsermittlung für eine gewisse Zeit ausgesetzt werden. Nach -Ablauf dieser Zeit soll die Automatik wieder aktiv werden. - -Für dieses Verhalten sind zunächst einige weitere Steueritems -erforderlich, dann kann das Verhalten in einem Zustand abgebildet -werden. Suspend-Item und Zustand können durch ``struct: stateengine.state_suspend`` -auf Höhe des Regelwerk-Items automatisch implementiert werden. - -.. rubric:: Das "Suspend"-Item - :name: dassuspenditem - -Zunächst wird ein "Suspend"-Item benötigt. Dieses Item zeigt zum -einen die zeitweise Deaktivierung an, zum, anderen kann die -Deaktivierung über dieses Item vorzeitig beendet werden: - -.. code-block:: yaml - - #items/item.yaml - beispiel: - raffstore1: - automatik: - - suspend: - type: bool - knx_dpt: 1 - visu_acl: rw - cache: 'True' - -.. rubric:: Das "Manuell"-Item - :name: dasmanuellitem - -Ein weiteres Item wird benötigt, um alle Aktionen, die den -Suspend-Zustand auslösen sollen, zu kapseln. Dieses Item ist das -"Manuell"-Item. Es wird so angelegt, dass der Wert dieses Items -bei jeder manuellen Betätigung invertiert wird: - -.. code-block:: yaml - - #items/item.yaml - beispiel: - raffstore1: - automatik: - - manuell: - type: bool - se_manual_invert: 'True' - se_manual_logitem: beispiel.raffstore1.automatik.manuell - se_manual_exclude: - - database:* - - KNX:1.1.4:* - eval_trigger: - - taster1 - - taster2 - -In das Attribut ``eval_trigger`` werden alle Items eingetragen, -deren Änderung als manuelle Betätigung gewertet werden soll. - -Das Attribut ``se_manual_invert: true`` veranlasst das -stateengine-Plugin dabei, den Wert des Items bei Änderungen zu -invertieren, wie es für das Auslösen des Suspend-Zustands -erforderlich ist. - -In bestimmten Fällen ist es erforderlich, dass Item-Änderungen, die -durch bestimmte Aufrufe ausgelöst werden, nicht als manuelle -Betätigung gewertet werden. Hierzu zählt zum Beispiel die -Rückmeldung der Raffstore-Position nach dem Verfahren durch den -Jalousieaktor. Hierfür stehen zwei weitere Attribute bereit: - -**as_manual_include** -*Liste der Aufrufe, die als "manuelle Betätigung" gewertet werden sollen* - -**as_manual_exclude** -*Liste der Aufrufe, die nicht als "manuelle Betätigung" gewertet werden sollen* - -Bei beiden Attributen wird eine Liste von Elementen angegeben. Die -einzelnen Elemente bestehen dabei aus dem Aufrufenden -(``Caller``) einem Doppelpunkt und der Quelle (``Source``), bei Bedarf auch einer -weiteren durch Doppelpunkt getrennte Information wie z.B. die Gruppenadresse beim KNX Plugin. -Für den gesamten Ausdruck können RegEx genutzt werden, also beispielsweise "*" als Wildcard, -damit der jeweilige Teil nicht berücksichtigt wird. - -Wenn bei der Prüfung festgestellt wird, dass ein Wert über eine -Eval-Funktionalität geändert wurde, so wird die Änderung -zurückverfolgt bis zur ursprünglichen Änderung, die die Eval-Kette -ausgelöst hat. Diese ursprüngliche Änderung wird dann geprüft. - -Der Wert von ``Caller`` zeigt an, welche Funktionalität das Item -geändert hat. Der Wert von ``Source`` und ``Additional`` ist Abhängig vom Caller. -Häufig verwendete ``Caller`` sind: - -- ``Init``: Initialisierung von smarthomeNG. ``Source`` ist in der Regel leer -- ``Visu``: Änderung über die Visualisierung (Visu-Plugin). ``Source`` beinhaltet die IP und den Port der Gegenstelle -- ``KNX``: Änderung über das KNX-Plugin. ``Source`` ist die physische Adresse des sendenden Geräts. ``Additional`` beinhaltet die Gruppenadresse. - - -Wenn ``se_manual_include`` oder ``se_manual_exclude`` angegeben -sind, muss ``se_manual_invert`` nicht angegeben werden. - -Um etwaige Probleme mit den exclude und include Funktionen einfacher erkennen zu können, -kann ein spezielles Logging aktiviert werden: ``se_manual_logitem: `` - -Ein weiteres Beispiel mit Wildcards. Groß- und Kleinschreibung spielen generell keine Rolle. +Das angeführte Beispiel zeigt, wie eine Bedingung mit einem Wert abgeglichen +werden kann, der in einem passenden Settingitem hinterlegt ist. Konkret +würde beim Evaluieren vom Zustand_Eins mit dem Namen "sueden" die maximale +Helligkeit der Wetterstation mit dem Wert von automatik.settings.sueden.max_bright +verglichen werden. Im Zustand_Zwei namens osten würde der Vergleich hingegen +mit dem Item automatik.settings.osten.max_bright stattfinden. Zu beachten ist, +dass die Eval Ausdrücke exakt gleich sind, was ein Anlegen von eigenen Templates +deutlich vereinfacht. .. code-block:: yaml - #items/item.yaml - se_manual_exclude: - - cli:127.0.*.1 - - knx:1.0.0:3/5/* + #items/item.yaml + raffstore1: + automatik: + struct: stateengine.general + settings: + sueden: + max_bright: + type: num + value: 80 -.. rubric:: Der Suspend-Zustand - :name: dersuspendzustand + osten: + max_bright: + type: num + value: 30 -Mit diesen beiden Items kann nun ein einfacher Suspend-Zustand -definiert werden. Als Aktion im Suspend-Zustand wird dabei die -Sonderaktion "suspend" verwendet. Diese hat zwei Parameter: - -.. code-block:: yaml + rules: + se_item_brightness: wetterstation.helligkeit + cycle: 10 - se_special_suspend: suspend:, + Zustand_Eins: + name: sueden + enter: + se_max_brightness: eval:se_eval.get_relative_itemvalue('..settings.{}.max_bright'.format(se_eval.get_variable('current.state_name')) + Zustand_Zwei: + name: osten + enter: + se_max_brightness: eval:se_eval.get_relative_itemvalue('..settings.{}.max_bright'.format(se_eval.get_variable('current.state_name')) -Der Suspend-Zustand sieht damit wie folgt aus: -.. code-block:: yaml - - #items/item.yaml - beispiel: - raffstore1: - automatik: - rules: - suspend: - type: foo - name: Ausgesetzt - - on_enter_or_stay: - type: foo - name: Ausführen immer wenn ein Zustand aktiv ist - - # Suspend-Item setzen - se_special_suspend: suspend:beispiel.raffstore1.automatik.suspend,beispiel.raffstore1.automatik.manuell - - on_leave: - type: foo - name: Ausführen beim Verlassen des Zustands - - # Suspend-Item zurücksetzen - se_set_suspend: False - - enter_manuell: - type: foo - name: Bedingung: Suspend beginnen - - #Bedingung: Manuelle Aktion wurde durchgeführt - se_value_trigger_source: beispiel.raffstore1.automatik.manuell - - enter_stay: - type: foo - name: Bedingung: Im Suspend verbleiben - - #Bedingung: Suspend ist aktiv - se_value_laststate: var:current.state_id - - #Bedingung: Suspendzeit ist noch nicht abgelaufen - se_agemax_manuell: var:item.suspend_time - - #Bedingung: Suspend-Item wurde nicht extern geändert - se_value_suspend: True - -Da der Suspend-Zustand anderen Zuständen -vorgehen sollte, steht er üblicherweise sehr weit vorrne in der -Reihenfolge. In der Regel wird der Suspend-Zustand in der -Definition der zweite Zustand nach dem Lock-Zustand sein. - -.. rubric:: Dauer der zeitweisen Deaktivierung - :name: dauerderzeitweisendeaktivierung - -Die Dauer der zeitweisen Deaktivierung wird in der -Plugin-Konfiguration über die Einstellung ``suspend_time_default`` -angegeben. Vorgabewert sind 3600 Sekunden (1 Stunde). Wenn die -Dauer der zeitweisen Deaktivierung für ein einzelnes Regelwerk-Item -abweichend sein soll, kann dort das Attribut - -.. code-block:: yaml +**current.conditionset_id:** +*Die Id der Bedingungsgruppe, die gerade geprüft wird* - se_suspend_time: +**current.conditionset_name:** +*Der Name der Bedingungsgruppe, die gerade geprüft wird* -angegeben werden. Der Parameter kann auch durch ein Item festgelegt werden. +Das Beispiel zeigt einen Windzustand. Dieser übernimmt keine Funktionen, +sondern dient lediglich der Visualisierung (Sicherheitsrelevante Features +sollten unbedingt z.B. über den KNX Bus erfolgen!). + +- enter_normal wird angenommen, sobald das Wind-Item aktiv ist, zuvor aber +nicht der Lock-Zustand aktiv war. + +- enter_afterlock wird angenommen, sobald das Wind-Item aktiv ist und zuvor +der Sperr-Zustand aktiv war. + +- enter_stayafterlock wird Dank des se_value_conditionset_name dann angenommen, +solange das Wind-Item noch aktiv ist und der Zustand aufgrund des enter_afterlock +aktiviert wurde. + +Da bei der on_leave Aktion der Lock-Zustand nur dann aktiviert wird, wenn der +Zustand auf Grund eines "lock" Bedingungssets eingenommen wurde, kann nun der +Sperrzustand wieder hergestellt werden. + +.. code-block:: yaml + + #items/item.yaml + raffstore1: + automatik: + struct: stateengine.general + rules: + se_item_wind: ....sicherheit + wind: + name: wind + on_leave: + se_action_lock: + - function:set + - to:True + - conditionset:(.*)enter_(.*)lock + + enter_normal: + se_value_wind: True + se_value_laststate: eval:stateengine_eval.get_relative_itemid('..rules.lock') + se_negate_laststate: True + + enter_afterlock: + se_value_wind: True + se_value_laststate: eval:stateengine_eval.get_relative_itemid('..rules.lock') + + enter_stayafterlock: + se_value_wind: True + se_value_laststate: var:current.state_id + se_value_conditionset_name: ['var:current.conditionset_name', 'enter_afterlock'] diff --git a/stateengine/user_doc/user_doc11.rst b/stateengine/user_doc/user_doc11.rst index cd798f80d..8a6cb40af 100755 --- a/stateengine/user_doc/user_doc11.rst +++ b/stateengine/user_doc/user_doc11.rst @@ -1,217 +1,254 @@ .. index:: Plugins; Stateengine -.. index:: Stateengine; Aktionen - einzeln -.. _Aktionen - einzeln: +.. index:: Stateengine; Besondere Zustände +.. _Besondere Zustände: -Aktionen - einzeln -################## +Besondere Zustände +================== -Es gibt zwei Möglichkeiten, Aktionen zu definieren. +Sperren +------- -Bei der Einzelvariante werden alle -Parameter einer Aktion in separaten Attributen definiert. Über den -gemeinsamen Aktionsnamen gehören die Attribute einer Aktion -zusammen. +Für das Sperren der automatischen Zustandsermittlung führt man ein +Sperr-Item ein, das beispielsweise über einen Taster oder die Visu änderbar +ist. Sperr-Item und Zustand können durch ``struct: stateengine.state_lock`` +auf Höhe des Regelwerk-Items automatisch implementiert werden. -Ähnlich wie Bedingungen benötigen auch Aktionen einen Namen. Der -Name ist auch hier beliebig und wird lediglich in der Benennung -der Attribute verwendet. Die Namen aller Attribute, die zu einer -Bedingung gehören, folgen dem Muster ``se__``. +.. rubric:: Das "Sperr"-Item + :name: dassperritem -.. rubric:: Aktion: Item auf einen Wert setzen - :name: aktionitemaufeinenwertsetzen +Die Sperre soll aktiv sein, wenn das Sperr-Item den Wert ``True`` hat. +Das Sperritem definiert man wie folgt: .. code-block:: yaml - se_set_ - -Das Item, das verändert werden soll, muss auf Ebene des -Regelwerk-Items über das Attribut ``se_item_`` -angegeben werden. + #items/item.yaml + beispiel: + lock: + item: + type: bool + name: Sperr-Item + visu_acl: rw + cache: on -Der Wert, auf den das Item gesezt wird, kann als statischer Wert, als Wert eines -Items oder als Ergebnis der Ausführung einer Funktion festgelegt -werden. +.. rubric:: Der Sperr-Zustand + :name: dersperrzustand -.. rubric:: Aktion: Ausführen einer Funktion - :name: aktionausfuehreneinerfunktion +Der zugehörige Zustand könnte so aussehen und sollte als erster Zustand definiert +werden, da er anderen Zuständen gegenüber priorisiert werden soll. .. code-block:: yaml - se_run_: eval:(Funktion) + #items/item.yaml + beispiel: + jalousie1: + rules: + # Sperr-Item zu eval_trigger: + eval_trigger: + - + - beispiel.lock.item -Die Angabe ist vergleichbar mit dem Ausführen einer Funktion zur -Ermittlung des Werts für ein Item, hier wird jedoch kein Item -benötigt. Außerdem wird der Rückgabewert der Funktion ignoriert. + # Items für Bedingungen und Aktionen + se_item_lock: beispiel.lock.item #Siehe Beispiel oben -.. rubric:: Aktion: Auslösen einer Logikausführung - :name: aktionausloeseneinerlogikausfuehrung + locked: + type: foo + name: Manuell gesperrt -.. code-block:: yaml + enter: + se_value_lock: true - se_trigger_: meineLogik:Zu übergebender Wert -Um beim Auslösen einen Wert an die Logik zu übergeben, kann dieser -Wert im Attribut über die Angabe von ``: `` hinter dem -Logiknamen angegeben werden. +Aussetzen +--------- -.. rubric:: Aktion: Alle Items, die ein bestimmtes Attribut haben, - auf den Wert dieses Attributs setzen - :name: aktionalleitemsdieeinbestimmtesattributhabenaufdenwertdiesesattributssetzen +Eine besondere Anforderung: Nach bestimmten manuellen Aktionen (z. +B. über einen Taster, die Visu, o. ä.) soll die automatische +Zustandsermittlung für eine gewisse Zeit ausgesetzt werden. Nach +Ablauf dieser Zeit soll die Automatik wieder aktiv werden. -.. code-block:: yaml +Der Aussetzenzustand kann einfach über ``struct: stateenginge.state_suspend`` in +das Stateengine Item (auf der selben Hierarchieebene wie das rules Item) +übernommen werden. Es muss dann lediglich noch +das manuell Item angepasst werden - siehe weiter unten. - se_byattr_: mein_eigenes_Attribut +.. rubric:: Das "Suspend"-Item + :name: dassuspenditem -Mit diesem Attribut wird der Name eines anderen (beliebigen) -Attributs angegeben. Beim Ausführen werden alle Items -herausgesucht, die das angegebene Attribut enthalten. Diese Items -werden auf den Wert gesetzt, der dem genannten Attribut in den -Items jeweils zugewiesen ist. +Zunächst wird ein "Suspend"-Item benötigt. Dieses Item zeigt zum +einen die zeitweise Deaktivierung an, zum, anderen kann die +Deaktivierung über dieses Item vorzeitig beendet werden: .. code-block:: yaml - dummy: - type: num - mein_eigenes_Attribut: 42 + #items/item.yaml + beispiel: + raffstore1: + automatik: + + suspend: + type: bool + knx_dpt: 1 + visu_acl: rw + cache: 'True' + +.. rubric:: Das "Manuell"-Item + :name: dasmanuellitem -wird dann auf ``42`` gesetzt. -Ein anderes Item +Ein weiteres Item wird benötigt, um alle Aktionen, die den +Suspend-Zustand auslösen sollen, zu kapseln. Dieses Item ist das +"Manuell"-Item. Es wird so angelegt, dass der Wert dieses Items +bei jeder manuellen Betätigung invertiert wird: .. code-block:: yaml - dummy2: - type: str - mein_eigenes_Attribut: Rums + #items/item.yaml + beispiel: + raffstore1: + automatik: -wird gleichzeitig auf ``Rums`` gesetzt. + manuell: + type: bool + se_manual_invert: 'True' + se_manual_logitem: beispiel.raffstore1.automatik.manuell + se_manual_exclude: + - database:* + - KNX:1.1.4:* + eval_trigger: + - taster1 + - taster2 -.. rubric:: Aktion: Sondervorgänge - :name: aktionsondervorgnge +In das Attribut ``eval_trigger`` werden alle Items eingetragen, +deren Änderung als manuelle Betätigung gewertet werden soll. -.. code-block:: yaml +Das Attribut ``se_manual_invert: true`` veranlasst das +stateengine-Plugin dabei, den Wert des Items bei Änderungen zu +invertieren, wie es für das Auslösen des Suspend-Zustands +erforderlich ist. - se_special_: (Sondervorgang) +In bestimmten Fällen ist es erforderlich, dass Item-Änderungen, die +durch bestimmte Aufrufe ausgelöst werden, nicht als manuelle +Betätigung gewertet werden. Hierzu zählt zum Beispiel die +Rückmeldung der Raffstore-Position nach dem Verfahren durch den +Jalousieaktor. Hierfür stehen zwei weitere Attribute bereit: -Für bestimmte Sondervorgänge sind besondere Aktionen im Plugin -definiert (z. B. für das Suspend). Diese werden jedoch nicht hier -erläutert, sondern an den Stellen, an denen Sie verwendet werden. +**as_manual_include** +*Liste der Aufrufe, die als "manuelle Betätigung" gewertet werden sollen* -.. rubric:: Verzögertes Ausführen einer Aktion - :name: verzgertesausfhreneineraktion +**as_manual_exclude** +*Liste der Aufrufe, die nicht als "manuelle Betätigung" gewertet werden sollen* -.. code-block:: yaml +Bei beiden Attributen wird eine Liste von Elementen angegeben. Die +einzelnen Elemente bestehen dabei aus dem Aufrufenden +(``Caller``) einem Doppelpunkt und der Quelle (``Source``), bei Bedarf auch einer +weiteren durch Doppelpunkt getrennte Information wie z.B. die Gruppenadresse beim KNX Plugin. +Für den gesamten Ausdruck können RegEx genutzt werden, also beispielsweise "*" als Wildcard, +damit der jeweilige Teil nicht berücksichtigt wird. - se_delay_: 30 (Sekunden)|30m (Minuten) +Wenn bei der Prüfung festgestellt wird, dass ein Wert über eine +Eval-Funktionalität geändert wurde, so wird die Änderung +zurückverfolgt bis zur ursprünglichen Änderung, die die Eval-Kette +ausgelöst hat. Diese ursprüngliche Änderung wird dann geprüft. -Über das Attribut wird die Verzögerung angegeben, nach der die -Aktion ausgeführt werden soll. Die Angabe erfolgt in Sekunden oder -mit dem Suffix "m" in Minuten. +Der Wert von ``Caller`` zeigt an, welche Funktionalität das Item +geändert hat. Der Wert von ``Source`` und ``Additional`` ist Abhängig vom Caller. +Häufig verwendete ``Caller`` sind: -Der Timer zur Ausführung der Aktion nach der angegebenen -Verzögerung wird entfernt, wenn eine gleichartike Aktion -ausgeführt werden soll (egal ob verzögert oder nicht). Wenn also -die Verzögerung größer als der ``cycle`` ist, wird die Aktion -nie durchgeführt werden, es sei denn die Aktion soll nur -einmalig ausgeführt werden. +- ``Init``: Initialisierung von smarthomeNG. ``Source`` ist in der Regel leer +- ``Visu``: Änderung über die Visualisierung (Visu-Plugin). ``Source`` beinhaltet die IP und den Port der Gegenstelle +- ``KNX``: Änderung über das KNX-Plugin. ``Source`` ist die physische Adresse des sendenden Geräts. ``Additional`` beinhaltet die Gruppenadresse. -.. rubric:: Wiederholen einer Aktion - :name: wiederholeneineraktion + +Wenn ``se_manual_include`` oder ``se_manual_exclude`` angegeben +sind, muss ``se_manual_invert`` nicht angegeben werden. + +Um etwaige Probleme mit den exclude und include Funktionen einfacher erkennen zu können, +kann ein spezielles Logging aktiviert werden: ``se_manual_logitem: `` + +Ein weiteres Beispiel mit Wildcards. Groß- und Kleinschreibung spielen generell keine Rolle. .. code-block:: yaml - se_repeat_: True|False + #items/item.yaml + se_manual_exclude: + - cli:127.0.*.1 + - knx:1.0.0:3/5/* + -Über das Attribut wird unabhängig vom globalen Setting für das -stateengine Item festgelegt, ob eine Aktion auch beim erneuten -Eintritt in den Status ausgeführt wird oder nicht. +.. rubric:: Der Suspend-Zustand + :name: dersuspendzustand -.. rubric:: Festlegen der Ausführungsreihenfolge von Aktionen - :name: festlegenderausfhrungsreihenfolgevonaktionen +Mit diesen beiden Items kann nun ein einfacher Suspend-Zustand +definiert werden. Als Aktion im Suspend-Zustand wird dabei die +Sonderaktion "suspend" verwendet. Diese hat zwei Parameter: .. code-block:: yaml - se_order_ - se_order_aktion1: 3 - se_order_aktion2: 2 - se_order_aktion3: 1 - se_order_aktion4: 2 - -Die Reihenfolge, in der die Aktionen ausgeführt werden, ist nicht -zwingend die Reihenfolge in der die Attribute definiert sind. In -den meisten Fällen ist dies kein Problem, da die Aktionen -voneinander unabhängig sind und daher in beliebiger Reihenfolge -ausgeführt werden können. In Einzelfällen kann es jedoch -erforderlich sein, mehrere Aktionen in einer bestimmten -Reihenfolge auszuführen. - -Es ist möglich, zwei Aktionen die gleiche Zahl zuzuweisen, die -Reihenfolge der beiden Aktionen untereinander ist dann wieder -zufällig. Innerhalb der gesamten Aktionen werden die beiden -Aktionen jedoch an der angegebenen Position ausgeführt. - -.. rubric:: Aktion: Minimumabweichung - :name: minimumabweichung - -Es ist möglich, eine Minimumabweichung für -Änderungen zu definieren. Wenn die Differenz zwischen dem -aktuellen Wert des Items und dem ermittelten neuen Wert kleiner -ist als die festgelegte Minimumabweichung wird keine Änderung -vorgenommen. Die Minimumabweichung wird über das Attribut -``se_mindelta_`` auf der Ebene des Regelwerk-Items -festgelegt. - -.. rubric:: Aktion: Item zwangsweise auf einen Wert setzen - :name: aktionitemzwangsweiseaufeinenwertsetzen + se_special_suspend: suspend:, + + +Der Suspend-Zustand sieht damit wie folgt aus: .. code-block:: yaml - se_force_ + #items/item.yaml + beispiel: + raffstore1: + automatik: + rules: + suspend: + type: foo + name: Ausgesetzt + + on_enter_or_stay: + type: foo + name: Ausführen immer wenn ein Zustand aktiv ist + + # Suspend-Item setzen + se_special_suspend: suspend:beispiel.raffstore1.automatik.suspend,beispiel.raffstore1.automatik.manuell + + on_leave: + type: foo + name: Ausführen beim Verlassen des Zustands + + # Suspend-Item zurücksetzen + se_set_suspend: False + + enter_manuell: + type: foo + name: Bedingung: Suspend beginnen + + #Bedingung: Manuelle Aktion wurde durchgeführt + se_value_trigger_source: beispiel.raffstore1.automatik.manuell -Diese Aktion funktioniert analog zu ``se_set_``. -Einziger Unterschied ist, dass die Wertänderung erzwungen wird: -Wenn das Item bereits den zu setzenden Wert hat, dann ändert -smarthomeNG das Item nicht. Selbst wenn beim Item das Attribut -``enforce_updates: yes`` gesetzt ist, wird zwar der Wert neu -gesetzt, der von smarthomeNG die Änderungszeit nicht neu gesetzt. Mit -dem Attribut ``se_force_`` wird das Plugin den Wert -des Items bei Bedarf zuerst auf einen anderen Wert ändern und dann -auf dem Zielwert setzen. Damit erfolgt auf jeden Fall eine -Wertänderung (ggf. sogar zwei) mit allen damit in Zusammenhang -stehenden Änderungen (eval's, Aktualisierung der Änderungszeiten, -etc). + enter_stay: + type: foo + name: Bedingung: Im Suspend verbleiben -.. rubric:: Beispiel zu Aktionen - :name: beispielzuaktioneneinzeln + #Bedingung: Suspend ist aktiv + se_value_laststate: var:current.state_id + + #Bedingung: Suspendzeit ist noch nicht abgelaufen + se_agemax_manuell: var:item.suspend_time + + #Bedingung: Suspend-Item wurde nicht extern geändert + se_value_suspend: True + +Da der Suspend-Zustand anderen Zuständen +vorgehen sollte, steht er üblicherweise sehr weit vorrne in der +Reihenfolge. In der Regel wird der Suspend-Zustand in der +Definition der zweite Zustand nach dem Lock-Zustand sein. + +.. rubric:: Dauer der zeitweisen Deaktivierung + :name: dauerderzeitweisendeaktivierung + +Die Dauer der zeitweisen Deaktivierung wird in der +Plugin-Konfiguration über die Einstellung ``suspend_time_default`` +angegeben. Vorgabewert sind 3600 Sekunden (1 Stunde). Wenn die +Dauer der zeitweisen Deaktivierung für ein einzelnes Regelwerk-Item +abweichend sein soll, kann dort das Attribut .. code-block:: yaml - beispiel: - raffstore: - automatik: - rules: - <...> - se_item_height: beispiel.raffstore1.hoehe - se_mindelta_height: 10 - se_item_lamella: beispiel.raffstore1.lamelle - se_mindelta_lamella: 5 - - Daemmerung: - <...> - se_set_height: value:100 - se_set_lamella: value:25 - <...> - Nacht: - <...> - se_set_height: value:100 - se_set_lamella: value:0 - <...> - Sonnenstand: - <...> - se_set_height: value:100 - se_set_lamella: eval:se_eval.sun_tracking() - <...> - Sonder: - <...> - se_trigger_logic1: myLogic:42 - se_delay_logic1: 10 - <...> + se_suspend_time: + +angegeben werden. Der Parameter kann auch durch ein Item festgelegt werden. diff --git a/stateengine/user_doc/user_doc12.rst b/stateengine/user_doc/user_doc12.rst new file mode 100755 index 000000000..cd798f80d --- /dev/null +++ b/stateengine/user_doc/user_doc12.rst @@ -0,0 +1,217 @@ +.. index:: Plugins; Stateengine +.. index:: Stateengine; Aktionen - einzeln +.. _Aktionen - einzeln: + +Aktionen - einzeln +################## + +Es gibt zwei Möglichkeiten, Aktionen zu definieren. + +Bei der Einzelvariante werden alle +Parameter einer Aktion in separaten Attributen definiert. Über den +gemeinsamen Aktionsnamen gehören die Attribute einer Aktion +zusammen. + +Ähnlich wie Bedingungen benötigen auch Aktionen einen Namen. Der +Name ist auch hier beliebig und wird lediglich in der Benennung +der Attribute verwendet. Die Namen aller Attribute, die zu einer +Bedingung gehören, folgen dem Muster ``se__``. + +.. rubric:: Aktion: Item auf einen Wert setzen + :name: aktionitemaufeinenwertsetzen + +.. code-block:: yaml + + se_set_ + +Das Item, das verändert werden soll, muss auf Ebene des +Regelwerk-Items über das Attribut ``se_item_`` +angegeben werden. + +Der Wert, auf den das Item gesezt wird, kann als statischer Wert, als Wert eines +Items oder als Ergebnis der Ausführung einer Funktion festgelegt +werden. + +.. rubric:: Aktion: Ausführen einer Funktion + :name: aktionausfuehreneinerfunktion + +.. code-block:: yaml + + se_run_: eval:(Funktion) + +Die Angabe ist vergleichbar mit dem Ausführen einer Funktion zur +Ermittlung des Werts für ein Item, hier wird jedoch kein Item +benötigt. Außerdem wird der Rückgabewert der Funktion ignoriert. + +.. rubric:: Aktion: Auslösen einer Logikausführung + :name: aktionausloeseneinerlogikausfuehrung + +.. code-block:: yaml + + se_trigger_: meineLogik:Zu übergebender Wert + +Um beim Auslösen einen Wert an die Logik zu übergeben, kann dieser +Wert im Attribut über die Angabe von ``: `` hinter dem +Logiknamen angegeben werden. + +.. rubric:: Aktion: Alle Items, die ein bestimmtes Attribut haben, + auf den Wert dieses Attributs setzen + :name: aktionalleitemsdieeinbestimmtesattributhabenaufdenwertdiesesattributssetzen + +.. code-block:: yaml + + se_byattr_: mein_eigenes_Attribut + +Mit diesem Attribut wird der Name eines anderen (beliebigen) +Attributs angegeben. Beim Ausführen werden alle Items +herausgesucht, die das angegebene Attribut enthalten. Diese Items +werden auf den Wert gesetzt, der dem genannten Attribut in den +Items jeweils zugewiesen ist. + +.. code-block:: yaml + + dummy: + type: num + mein_eigenes_Attribut: 42 + +wird dann auf ``42`` gesetzt. +Ein anderes Item + +.. code-block:: yaml + + dummy2: + type: str + mein_eigenes_Attribut: Rums + +wird gleichzeitig auf ``Rums`` gesetzt. + +.. rubric:: Aktion: Sondervorgänge + :name: aktionsondervorgnge + +.. code-block:: yaml + + se_special_: (Sondervorgang) + +Für bestimmte Sondervorgänge sind besondere Aktionen im Plugin +definiert (z. B. für das Suspend). Diese werden jedoch nicht hier +erläutert, sondern an den Stellen, an denen Sie verwendet werden. + +.. rubric:: Verzögertes Ausführen einer Aktion + :name: verzgertesausfhreneineraktion + +.. code-block:: yaml + + se_delay_: 30 (Sekunden)|30m (Minuten) + +Über das Attribut wird die Verzögerung angegeben, nach der die +Aktion ausgeführt werden soll. Die Angabe erfolgt in Sekunden oder +mit dem Suffix "m" in Minuten. + +Der Timer zur Ausführung der Aktion nach der angegebenen +Verzögerung wird entfernt, wenn eine gleichartike Aktion +ausgeführt werden soll (egal ob verzögert oder nicht). Wenn also +die Verzögerung größer als der ``cycle`` ist, wird die Aktion +nie durchgeführt werden, es sei denn die Aktion soll nur +einmalig ausgeführt werden. + +.. rubric:: Wiederholen einer Aktion + :name: wiederholeneineraktion + +.. code-block:: yaml + + se_repeat_: True|False + +Über das Attribut wird unabhängig vom globalen Setting für das +stateengine Item festgelegt, ob eine Aktion auch beim erneuten +Eintritt in den Status ausgeführt wird oder nicht. + +.. rubric:: Festlegen der Ausführungsreihenfolge von Aktionen + :name: festlegenderausfhrungsreihenfolgevonaktionen + +.. code-block:: yaml + + se_order_ + se_order_aktion1: 3 + se_order_aktion2: 2 + se_order_aktion3: 1 + se_order_aktion4: 2 + +Die Reihenfolge, in der die Aktionen ausgeführt werden, ist nicht +zwingend die Reihenfolge in der die Attribute definiert sind. In +den meisten Fällen ist dies kein Problem, da die Aktionen +voneinander unabhängig sind und daher in beliebiger Reihenfolge +ausgeführt werden können. In Einzelfällen kann es jedoch +erforderlich sein, mehrere Aktionen in einer bestimmten +Reihenfolge auszuführen. + +Es ist möglich, zwei Aktionen die gleiche Zahl zuzuweisen, die +Reihenfolge der beiden Aktionen untereinander ist dann wieder +zufällig. Innerhalb der gesamten Aktionen werden die beiden +Aktionen jedoch an der angegebenen Position ausgeführt. + +.. rubric:: Aktion: Minimumabweichung + :name: minimumabweichung + +Es ist möglich, eine Minimumabweichung für +Änderungen zu definieren. Wenn die Differenz zwischen dem +aktuellen Wert des Items und dem ermittelten neuen Wert kleiner +ist als die festgelegte Minimumabweichung wird keine Änderung +vorgenommen. Die Minimumabweichung wird über das Attribut +``se_mindelta_`` auf der Ebene des Regelwerk-Items +festgelegt. + +.. rubric:: Aktion: Item zwangsweise auf einen Wert setzen + :name: aktionitemzwangsweiseaufeinenwertsetzen + +.. code-block:: yaml + + se_force_ + +Diese Aktion funktioniert analog zu ``se_set_``. +Einziger Unterschied ist, dass die Wertänderung erzwungen wird: +Wenn das Item bereits den zu setzenden Wert hat, dann ändert +smarthomeNG das Item nicht. Selbst wenn beim Item das Attribut +``enforce_updates: yes`` gesetzt ist, wird zwar der Wert neu +gesetzt, der von smarthomeNG die Änderungszeit nicht neu gesetzt. Mit +dem Attribut ``se_force_`` wird das Plugin den Wert +des Items bei Bedarf zuerst auf einen anderen Wert ändern und dann +auf dem Zielwert setzen. Damit erfolgt auf jeden Fall eine +Wertänderung (ggf. sogar zwei) mit allen damit in Zusammenhang +stehenden Änderungen (eval's, Aktualisierung der Änderungszeiten, +etc). + +.. rubric:: Beispiel zu Aktionen + :name: beispielzuaktioneneinzeln + +.. code-block:: yaml + + beispiel: + raffstore: + automatik: + rules: + <...> + se_item_height: beispiel.raffstore1.hoehe + se_mindelta_height: 10 + se_item_lamella: beispiel.raffstore1.lamelle + se_mindelta_lamella: 5 + + Daemmerung: + <...> + se_set_height: value:100 + se_set_lamella: value:25 + <...> + Nacht: + <...> + se_set_height: value:100 + se_set_lamella: value:0 + <...> + Sonnenstand: + <...> + se_set_height: value:100 + se_set_lamella: eval:se_eval.sun_tracking() + <...> + Sonder: + <...> + se_trigger_logic1: myLogic:42 + se_delay_logic1: 10 + <...> diff --git a/stateengine/user_doc/user_doc13.rst b/stateengine/user_doc/user_doc13.rst new file mode 100755 index 000000000..87461ec32 --- /dev/null +++ b/stateengine/user_doc/user_doc13.rst @@ -0,0 +1,41 @@ +.. index:: Plugins; Stateengine +.. index:: Stateengine; Sonstiges +.. _Sonstiges: + +Sonstiges +######### + +.. rubric:: Zustandsnamen + :name: sonstigeszustandsnamen + +**name (optional):** +*Name des Zustands* + +Der Name des Zustands wird im Protokoll sowie als Wert für das +über ``se_laststate_item_name`` angegebene Item verwendet. Wenn +kein Name angegeben ist, wird hier die Id des +Zustands-Items verwendet. + +**se_name:** +*Überschreiben des Namens des Zustands* + +Über das Attribut ``se_name`` kann der im Attribut ``name`` angegebene Wert +überschrieben werden, beispielsweise mittels ``eval:sh.eine_funktion()``. +Dies wirkt sich jedoch nur auf den Wert aus, der in das über +``se_laststate_item_name`` angegebene Item geschrieben wird. Dies kann +beispielsweise nützlich sein, um den Namen abhängig von einer Bedingungsgruppe +zu ändern. Ist also z.B. der Zustand auf Grund der Temperatur eingenommen worden, +könnte der Name auf "Zustand (Temp)" geändert werden. Ist der Zustand aufgrund +der Helligkeitsbedingung aktiv, könnte der Name auf "Zustand (Hell)" geändert werden. +Im Protokoll wird immer der über das Attribut ``name`` angegebene Wert verwendet. + +.. rubric:: CLI + :name: sonstigescli + +Im CLI Plugin können folgende zwei Befehle zu Debuggingzwecken eingesetzt werden: + +**se_list** +*Zeigt eine Liste der Regelwerk-Items, für die das stateengine-Plugin aktiv ist* + +**se_detail ** +*Zeigt Details zum Objekt Item* diff --git a/stateengine/user_doc/user_doc3.rst b/stateengine/user_doc/user_doc3.rst index cd6bfe74f..4ca0615fb 100755 --- a/stateengine/user_doc/user_doc3.rst +++ b/stateengine/user_doc/user_doc3.rst @@ -33,7 +33,12 @@ die Höhe einer Jalousie oder die Außenhelligkeit. Diese Items müssen auf Ebene des Regelwerk-Items über das Attribut ``se_item_`` bekannt gemacht werden. -.. rubric:: Beispiel +Anstatt direkt das Item in Form des absoluten oder relativen Pfades mittels ``se_item_`` zu +setzen, kann auch die Angabe ``se_eval_`` genutzt werden. In diesem Fall wird eine beliebige +Funktion anstelle des Itemnamen angegeben. Dies ist sowohl für Bedingungsabfragen, +als auch für das Setzen von "dynamischen" Items möglich. + +.. rubric:: Beispiel se_item :name: beispielregelwerk Im Beispiel wird durch ``se_item_height`` das Item ``beispiel.raffstore1.hoehe`` @@ -63,3 +68,37 @@ und Aktionen folgen auf den nächsten Seiten. - 'to: 100' enter_toodark: se_max_brightness: 25 + +.. rubric:: Beispiel se_eval + :name: beispielregelwerkeval + +Im Beispiel wird durch ``se_eval_brightness`` das Item für den Check von +Bedingungen bekannt gemacht. Aufgrund der angegebenen Funktion wird das Item +abhängig vom aktuellen Zustandsnamen eruiert. Da Zustand_Eins den Namen "sueden" +hat, wird somit auch der Wert von wetterstation.helligkeit_sueden abgefragt. +Würde der Zustand "osten" heißen, würde der Helligkeitswert vom Osten getestet werden. + +.. code-block:: yaml + + #items/item.yaml + wetterstation: + helligkeit_sueden: + type: num + knx_cache: 1/1/1 + knx_dpt: 5 + + helligkeit_osten: + type: num + knx_cache: 1/1/2 + knx_dpt: 5 + + raffstore1: + automatik: + struct: stateengine.general + rules: + se_eval_brightness: se_eval.get_relative_itemvalue('wetterstation.helligkeit_{}'.format(se_eval.get_variable('current.state_name'))) + + Zustand_Eins: + name: sueden + enter: + se_max_brightness: 5000 diff --git a/stateengine/user_doc/user_doc6.rst b/stateengine/user_doc/user_doc6.rst index eca28c274..8b0f05785 100755 --- a/stateengine/user_doc/user_doc6.rst +++ b/stateengine/user_doc/user_doc6.rst @@ -95,7 +95,7 @@ Folgende Werte sind möglich: Das Item, das verändert werden soll, muss auf Ebene des Regelwerk-Items über das Attribut ``se_item_`` -angegeben werden. +oder ``se_eval_`` angegeben werden. Der Parameter ``to: `` legt fest, auf welchen Wert das Item gesetzt werden soll. Der Wert, @@ -111,13 +111,50 @@ Wertänderung (ggf. sogar zwei) mit allen damit in Zusammenhang stehenden Änderungen (evals, Aktualisierung der Änderungszeiten, etc). +**Funktion add: Wert zu einem Listenitem hinzufügen** + +.. code-block:: yaml + + se_action_: + - 'function: add' + - 'value: //' + - 'force: [True/False]' + +Das Item, das verändert werden soll, muss auf Ebene des +Regelwerk-Items über das Attribut ``se_item_`` oder +``se_eval_`` angegeben werden. + +Der Parameter ``value: `` legt fest, welcher Wert zum Item +mit dem Typ ``list`` hinzugefügt werden soll. Wird hier direkt ein +Wert angegeben, ist darauf zu achten, dass ein String unter Anführungszeichen +stehen muss, während eine Zahl das nicht sollte. + +**Funktion remove: Wert von einem Listenitem entfernen** + +.. code-block:: yaml + + se_action_: + - 'function: remove' + - 'value: //' + - 'force: [True/False]' + +Das Item, das verändert werden soll, muss auf Ebene des +Regelwerk-Items über das Attribut ``se_item_`` oder +``se_eval_`` angegeben werden. + +Der Parameter ``value: `` legt fest, welcher Wert vom Item +mit dem Typ ``list`` entfernt werden soll. Dabei ist zu beachten, +dass zwischen String (Anführungszeichen) und Zahlen unterschieden wird. +Ist der angegegeben Wert nicht in der Liste, wird der originale +Itemwert erneut geschrieben, ohne etwas zu entfernen. + **Funktion run: Ausführen einer Funktion** .. code-block:: yaml se_action_: - 'function: run' - - 'eval:(Funktion)' + - 'eval: (Funktion)' Die Angabe ist vergleichbar mit dem Ausführen einer Funktion zur Ermittlung des Werts für ein Item, hier wird jedoch kein Item From 597e9275582c79ef884d679b1a4f2ecb1829275d Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Wed, 12 Jun 2019 14:55:49 +0200 Subject: [PATCH 109/200] Minor fixes and improved localization --- unifi/__init__.py | 5 ++++- unifi/locale.yaml | 11 +++++++++++ unifi/webif/static/img/readme.txt | 6 ++++++ unifi/webif/templates/index.html | 18 ++---------------- 4 files changed, 23 insertions(+), 17 deletions(-) create mode 100644 unifi/locale.yaml create mode 100644 unifi/webif/static/img/readme.txt diff --git a/unifi/__init__.py b/unifi/__init__.py index 332d860fa..bccc269ca 100644 --- a/unifi/__init__.py +++ b/unifi/__init__.py @@ -229,7 +229,7 @@ def get_item_hierarchy(self): return yaml.dump(model, Dumper=yaml.SafeDumper, indent=4, width=768, allow_unicode=True, default_flow_style=False) - def get_total_number_of_requests_to_controller(self): + def get_total_number_of_requests_to_controller(self): return self._api.get_request_count() def get_controller_url(self): @@ -241,6 +241,7 @@ def get_controller_user(self): def get_controller_site(self): return self._api.get_connection_data()['site'] + class UniFiControllerClient(SmartPlugin): """ Main class of the Plugin. Does all plugin specific stuff and provides @@ -572,6 +573,8 @@ def _get_sw_port_profile(self, i): sw_port = int(self._get_attribute_recursive(i, UniFiConst.ATTR_SW_PORT_NO, enable_logging=self._logging)) return self._model._api.get_port_profile_for(sw_mac, sw_port) + except TypeError: + return None except UniFiDataException: self._log_item_warning(i, "Unable to determine current switch-profile for switch {}".format(sw_mac)) return None diff --git a/unifi/locale.yaml b/unifi/locale.yaml new file mode 100644 index 000000000..912b4a581 --- /dev/null +++ b/unifi/locale.yaml @@ -0,0 +1,11 @@ +# translations for the web interface +plugin_translations: + 'NumFromStart': {'de': 'Anzahl Requests seit Start', 'en': 'Number of requests since start of plugin'} + 'Probleme': {'de': '=', 'en': 'Problems'} + 'Pfad': {'de': '=', 'en': 'Path'} + 'Typ': {'de': '=', 'en': 'Type'} + 'Item Wert': {'de': '=', 'en': 'Item value'} + 'Letztes Update': {'de': '=', 'en': 'Last update'} + 'Letzter Change': {'de': '=', 'en': 'Last change'} + + diff --git a/unifi/webif/static/img/readme.txt b/unifi/webif/static/img/readme.txt new file mode 100644 index 000000000..1a7c55eef --- /dev/null +++ b/unifi/webif/static/img/readme.txt @@ -0,0 +1,6 @@ +This directory is for storing images that are used by the web interface. + +If you want to have your own logo on the top of the web interface, store it here and name it plugin_logo.. + +Extension can be png, svg or jpg + diff --git a/unifi/webif/templates/index.html b/unifi/webif/templates/index.html index 0e962c8b1..793656bf6 100644 --- a/unifi/webif/templates/index.html +++ b/unifi/webif/templates/index.html @@ -6,7 +6,7 @@
Prompt 1{% if 1 == 2 %}{{ _('Ja') }}{% else %}{{ _('Nein') }}{% endif %}Anzahl Requests seit Start{{ p._model.get_total_number_of_requests_to_controller() }} Prompt 4{{ _('Wert 4') }}Controller URL{{ p._model.get_controller_url() }}
Prompt 2{{ _('Wert 2') }}   Prompt 5-Username{{ p._model.get_controller_user() }}
Prompt 3-   Prompt 6-Site{{ p._model.get_controller_site() }}
{{ _('Pfad') }}{{ _('Typ') }} {{ _('Probleme') }}
{{ ele.item }}TÜÜÜÜÜÜÜP {% for issue in ele.get_issues() %} - {{ issue }}
+ {% if issue[0:5] == "INFO:" %} + {{ issue[5:400] }} + {% elif issue[0:6] == "ERROR:" %} + {{ issue[6:400] }} + {% elif issue[0:8] == "DEFAULT:" %} + {{ issue[8:400] }} + {% elif issue[0:8] == "WARNING:" %} + {{ issue[8:400] }} + {% else %} + {{ issue }} + {% endif %} +
{% endfor %}
- + @@ -160,18 +160,4 @@ {{ p._model.get_item_hierarchy() }} -{% endblock bodytab3 %} - - - -{% block bodytab4 %} -
- {{ _('Hier kommt der Inhalt des Webinterfaces Tab4 hin.') }} -
-{% endblock bodytab4 %} +{% endblock bodytab3 %} \ No newline at end of file From 9d1e10d6cfd5615a2be56edf46daa9c032dd8d58 Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Wed, 12 Jun 2019 15:12:41 +0200 Subject: [PATCH 110/200] Add exception handling in web interface --- unifi/__init__.py | 56 ++++++++++++++++++++++++++--------------------- 1 file changed, 31 insertions(+), 25 deletions(-) diff --git a/unifi/__init__.py b/unifi/__init__.py index bccc269ca..8c882e67e 100644 --- a/unifi/__init__.py +++ b/unifi/__init__.py @@ -204,33 +204,39 @@ def _get_device_node_item(self, node_data, parent_type=""): return (node_key, node_body) def get_item_hierarchy(self): - hr = self._api.get_device_hierarchy() - model = {} - model['unifi_network'] = {} - model['unifi_network']['wifi_clients'] = {} - for wlc_data in hr['wireless_clients']: - wlc_key = ("client_" + wlc_data['name']).lower().replace('.', '_').replace('-', '_') - wlc_body = {} - wlc_body['hostname'] = {} - wlc_body['hostname'][UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_CL_HOSTNAME - wlc_body['hostname']['type'] = 'str' - wlc_body['ip'] = {} - wlc_body['ip'][UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_CL_IP - wlc_body['ip']['type'] = 'str' - wlc_body[UniFiConst.ATTR_MAC] = wlc_data['mac'] - wlc_body[UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_CL_PRESENT - wlc_body['type'] = 'bool' - model['unifi_network']['wifi_clients'][wlc_key] = wlc_body - - model['unifi_network']['devices'] = {} - for dev in hr['devices']: - child_data = self._get_device_node_item(dev) - model['unifi_network']['devices'][child_data[0]] = child_data[1] - - return yaml.dump(model, Dumper=yaml.SafeDumper, indent=4, width=768, allow_unicode=True, default_flow_style=False) + try: + hr = self._api.get_device_hierarchy() + model = {} + model['unifi_network'] = {} + model['unifi_network']['wifi_clients'] = {} + for wlc_data in hr['wireless_clients']: + wlc_key = ("client_" + wlc_data['name']).lower().replace('.', '_').replace('-', '_') + wlc_body = {} + wlc_body['hostname'] = {} + wlc_body['hostname'][UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_CL_HOSTNAME + wlc_body['hostname']['type'] = 'str' + wlc_body['ip'] = {} + wlc_body['ip'][UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_CL_IP + wlc_body['ip']['type'] = 'str' + wlc_body[UniFiConst.ATTR_MAC] = wlc_data['mac'] + wlc_body[UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_CL_PRESENT + wlc_body['type'] = 'bool' + model['unifi_network']['wifi_clients'][wlc_key] = wlc_body + + model['unifi_network']['devices'] = {} + for dev in hr['devices']: + child_data = self._get_device_node_item(dev) + model['unifi_network']['devices'][child_data[0]] = child_data[1] + + return yaml.dump(model, Dumper=yaml.SafeDumper, indent=4, width=768, allow_unicode=True, default_flow_style=False) + except Exception as e: + return e def get_total_number_of_requests_to_controller(self): - return self._api.get_request_count() + try: + return self._api.get_request_count() + except Exception: + return -1 def get_controller_url(self): return self._api.get_connection_data()['url'] From 7265411bb86f9ebd924db46b0d6e8bdcc329795d Mon Sep 17 00:00:00 2001 From: psilo909 Date: Fri, 14 Jun 2019 18:20:48 +0200 Subject: [PATCH 111/200] OWM: added additional check for None --- openweathermap/__init__.py | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/openweathermap/__init__.py b/openweathermap/__init__.py index 6dbfd2e3b..83b171f31 100644 --- a/openweathermap/__init__.py +++ b/openweathermap/__init__.py @@ -182,23 +182,27 @@ def get_daily_forecast(self, s): too_far = date_requested + timedelta(days=1) wrk = [] - for entry in forecast.get('list'): - dt = int(entry.get('dt')) - if dt >= int(too_far.timestamp()): - break - if dt >= int(date_requested.timestamp()): - val = self.get_val_from_dict("/".join(sp), entry) - if isinstance(val, float) or isinstance(val, int): - wrk.append(val) - elif val is None: - self.logger.error( - "get_daily_forecast: found None value while calculating daily forecast for matchstring '{}'.".format(s)) - return 0 - else: - self.logger.error( - "get_daily_forecast: found unknown value while calculating daily forecast for matchstring '{}'; daily forecast only supported for int and float.".format( - s)) - return 0 + if forecast is not None: + for entry in forecast.get('list'): + dt = int(entry.get('dt')) + if dt >= int(too_far.timestamp()): + break + if dt >= int(date_requested.timestamp()): + val = self.get_val_from_dict("/".join(sp), entry) + if isinstance(val, float) or isinstance(val, int): + wrk.append(val) + elif val is None: + self.logger.error( + "get_daily_forecast: found None value while calculating daily forecast for matchstring '{}'.".format(s)) + return 0 + else: + self.logger.error( + "get_daily_forecast: found unknown value while calculating daily forecast for matchstring '{}'; daily forecast only supported for int and float.".format( + s)) + return 0 + else: + self.logger.error("get_daily_forecast: forecast data is None.") + return 0 result = 0 if "max" in sp[len(sp) - 1]: From 4d2e342bf60260240dfdc49e981c6b2d704937c5 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sat, 15 Jun 2019 22:47:57 +0200 Subject: [PATCH 112/200] fix list comparison for min/max; improve problem handling; se_template; version bump 1.6 --- stateengine/README.md | 5 +- stateengine/StateEngineAction.py | 156 +++++++++++++++++---- stateengine/StateEngineActions.py | 58 +++++++- stateengine/StateEngineCondition.py | 90 ++++++------ stateengine/StateEngineEval.py | 4 +- stateengine/StateEngineItem.py | 25 ++++ stateengine/StateEngineState.py | 5 +- stateengine/StateEngineTools.py | 27 +++- stateengine/StateEngineValue.py | 205 ++++++++++++++++++++++------ stateengine/__init__.py | 2 +- stateengine/plugin.yaml | 2 +- stateengine/user_doc/user_doc4.rst | 2 +- stateengine/user_doc/user_doc5.rst | 43 +++++- stateengine/user_doc/user_doc6.rst | 28 +++- 14 files changed, 516 insertions(+), 136 deletions(-) diff --git a/stateengine/README.md b/stateengine/README.md index e1b40d017..47f9a8eac 100755 --- a/stateengine/README.md +++ b/stateengine/README.md @@ -13,7 +13,7 @@ Copy stateengine.example.html from the sv_widgets folder to your smartvisu/dropi http://URL/index.php?page=widgets/stateengine.example ## Changelog -### v1.5.2 +### v1.6 * Get relative items at startup for all se_item_* attributes * Check for source_details in manual_exclude/include functions * Improve logging and some code parts, better problem handling @@ -22,8 +22,9 @@ http://URL/index.php?page=widgets/stateengine.example * New functions: get_attributevalue, get_relative_item, get_relative_itemproperty * Query current and last condition set is possible, also executing actions based on condition sets * Implement a new special function to retrigger the state machine -* Defining an item to be changed by an action can now be done via eval functions +* Defining an item to be changed by an action can now be done via eval functions (se_eval_bla: xyz) * New function to add and remove entries from Items with type list +* New se_template feature to use templates in conditions or actions ### v1.5.1 * Include original 1.4.2 version in subfolder diff --git a/stateengine/StateEngineAction.py b/stateengine/StateEngineAction.py index da4878052..3dfd7fd05 100755 --- a/stateengine/StateEngineAction.py +++ b/stateengine/StateEngineAction.py @@ -59,8 +59,11 @@ def __init__(self, abitem, name: str): self.__delay = StateEngineValue.SeValue(self._abitem, "delay") self.__repeat = None self.__conditionset = StateEngineValue.SeValue(self._abitem, "conditionset", True, "str") + self.__mode = StateEngineValue.SeValue(self._abitem, "mode", True, "str") self.__order = StateEngineValue.SeValue(self._abitem, "order", False, "num") self._scheduler_name = None + self.__function = None + self.__template = None def update_delay(self, value): self.__delay.set(value) @@ -77,16 +80,22 @@ def update_order(self, value): def update_conditionsets(self, value): self.__conditionset.set(value) + def update_modes(self, value): + self.__mode.set(value) + def get_order(self): return self.__order.get(1) # Write action to logger def write_to_logger(self): + self._log_debug("name: {}", self._name) self.__delay.write_to_logger() if self.__repeat is not None: self.__repeat.write_to_logger() if self.__conditionset is not None: self.__conditionset.write_to_logger() + if self.__mode is not None: + self.__mode.write_to_logger() self.__order.write_to_logger() # Execute action (considering delay, etc) @@ -128,26 +137,32 @@ def execute(self, is_repeat: bool, allow_item_repeat: bool): else: repeat_text = "" - self._getitem_fromeval() - plan_next = self._sh.scheduler.return_next(self._scheduler_name) - if plan_next is not None and plan_next > self.shtime.now(): - self._log_info("Action '{0}: Removing previous delay timer '{1}'.", self._name, self._scheduler_name) - self._sh.scheduler.remove(self._scheduler_name) - - delay = 0 if self.__delay.is_empty() else self.__delay.get() - actionname = "Action '{0}'".format(self._name) if delay == 0 else "Delay Timer '{0}'".format( - self._scheduler_name) - if delay == 0: - self._execute(actionname, repeat_text) - elif delay is None: - self._log_warning("Action'{0}: Ignored because of errors while determining the delay!", self._name) - elif delay < 0: - self._log_warning("Action'{0}: Ignored because of delay is negative!", self._name) - else: - self._log_info("Action '{0}: Add {1} second timer '{2}' for delayed execution. {3}", self._name, delay, - self._scheduler_name, repeat_text) - next_run = self.shtime.now() + datetime.timedelta(seconds=delay) - self._sh.scheduler.add(self._scheduler_name, self._execute, value={'actionname': actionname}, next=next_run) + try: + self._getitem_fromeval() + _validitem = True + except Exception as ex: + _validitem = False + self._log_error("Action '{0}': Ignored because {1}", self._name, ex) + if _validitem: + plan_next = self._sh.scheduler.return_next(self._scheduler_name) + if plan_next is not None and plan_next > self.shtime.now(): + self._log_info("Action '{0}: Removing previous delay timer '{1}'.", self._name, self._scheduler_name) + self._sh.scheduler.remove(self._scheduler_name) + + delay = 0 if self.__delay.is_empty() else self.__delay.get() + actionname = "Action '{0}'".format(self._name) if delay == 0 else "Delay Timer '{0}'".format( + self._scheduler_name) + if delay == 0: + self._execute(actionname, repeat_text) + elif delay is None: + self._log_warning("Action'{0}: Ignored because of errors while determining the delay!", self._name) + elif delay < 0: + self._log_warning("Action'{0}: Ignored because of delay is negative!", self._name) + else: + self._log_info("Action '{0}: Add {1} second timer '{2}' for delayed execution. {3}", self._name, delay, + self._scheduler_name, repeat_text) + next_run = self.shtime.now() + datetime.timedelta(seconds=delay) + self._sh.scheduler.add(self._scheduler_name, self._execute, value={'actionname': actionname}, next=next_run) # set the action based on a set_(action_name) attribute # value: Value of the set_(action_name) attribute @@ -181,9 +196,11 @@ def __init__(self, abitem, name: str): self.__value = StateEngineValue.SeValue(self._abitem, "value") self.__mindelta = StateEngineValue.SeValue(self._abitem, "mindelta") self.__caller = StateEngineDefaults.plugin_identification + self.__function = "set" def _getitem_fromeval(self): if isinstance(self.__item, str): + item = None if "stateengine_eval" in self.__item or "se_eval" in self.__item: # noinspection PyUnusedLocal stateengine_eval = se_eval = StateEngineEval.SeEval(self._abitem) @@ -197,12 +214,10 @@ def _getitem_fromeval(self): self._scheduler_name = self.__item.property.path + "-SeItemDelayTimer" if self._abitem.id == self.__item.property.path: self.__caller += '_self' - else: - self._log_error("Problem evaluating item '{}' from eval. It is None.", item) - return except Exception as ex: - self._log_error("Problem evaluating item '{}' from eval: {}.", self.__item, ex) - return + raise Exception("Problem evaluating item '{}' from eval: {}".format(self.__item, ex)) + if item is None: + raise Exception("Problem evaluating item '{}' from eval. It does not exist.".format(self.__item)) # set the action based on a set_(action_name) attribute # value: Value of the set_(action_name) attribute @@ -260,6 +275,7 @@ def _can_execute(self): # Really execute the action (needs to be implemented in derived classes) def _execute(self, actionname: str, repeat_text: str = ""): value = self.__value.get() + if value is None: return @@ -288,6 +304,7 @@ class SeActionSetByattr(SeActionBase): def __init__(self, abitem, name: str): super().__init__(abitem, name) self.__byattr = None + self.__function = "set by attribute" # set the action based on a set_(action_name) attribute # value: Value of the set_(action_name) attribute @@ -301,6 +318,7 @@ def complete(self, item_state): # Write action to logger def write_to_logger(self): + self._log_debug("function: {}", self.__function) SeActionBase.write_to_logger(self) if self.__byattr is not None: self._log_debug("set by attriute: {0}", self.__byattr) @@ -322,6 +340,7 @@ def __init__(self, abitem, name: str): super().__init__(abitem, name) self.__logic = None self.__value = None + self.__function = "trigger" # set the action based on a set_(action_name) attribute # value: Value of the set_(action_name) attribute @@ -337,6 +356,7 @@ def complete(self, item_state): # Write action to logger def write_to_logger(self): + self._log_debug("function: {}", self.__function) SeActionBase.write_to_logger(self) if self.__logic is not None: self._log_debug("trigger logic: {0}", self.__logic) @@ -360,6 +380,7 @@ class SeActionRun(SeActionBase): def __init__(self, abitem, name: str): super().__init__(abitem, name) self.__eval = None + self.__function = "run" # set the action based on a set_(action_name) attribute # value: Value of the set_(action_name) attribute @@ -379,6 +400,7 @@ def complete(self, item_state): # Write action to logger def write_to_logger(self): + self._log_debug("function: {}", self.__function) SeActionBase.write_to_logger(self) if self.__eval is not None: self._log_debug("eval: {0}", StateEngineTools.get_eval_name(self.__eval)) @@ -415,6 +437,7 @@ def __init__(self, abitem, name: str): self.__item = None self.__value = StateEngineValue.SeValue(self._abitem, "value") self.__mindelta = StateEngineValue.SeValue(self._abitem, "mindelta") + self.__function = "force set" # set the action based on a set_(action_name) attribute # value: Value of the set_(action_name) attribute @@ -447,6 +470,8 @@ def complete(self, item_state): # Write action to logger def write_to_logger(self): + self._log_debug("function: {}", self.__function) + self._log_debug("value: {}", self.__value) SeActionBase.write_to_logger(self) if isinstance(self.__item, str): self._log_debug("item from eval: {0}", self.__item) @@ -545,6 +570,7 @@ def __init__(self, abitem, name: str): super().__init__(abitem, name) self.__special = None self.__value = None + self.__function = "special" # set the action based on a set_(action_name) attribute # value: Value of the set_(action_name) attribute @@ -565,6 +591,7 @@ def complete(self, item_state): # Write action to logger def write_to_logger(self): + self._log_debug("function: {}", self.__function) SeActionBase.write_to_logger(self) self._log_debug("Special Action: {0}", self.__special) if isinstance(self.__value, list): @@ -644,28 +671,97 @@ class SeActionAddItem(SeActionSetItem): # name: Name of action def __init__(self, abitem, name: str): super().__init__(abitem, name) + self.__function = "add to list" + + def write_to_logger(self): + self._log_debug("function: {}", self.__function) + SeActionSetItem.write_to_logger(self) + SeActionBase.write_to_logger(self) def _execute_set_add_remove(self, actionname, repeat_text, item, value): - value = item.property.value + value + value = value if isinstance(value, list) else [value] self._log_debug("{0}: Add '{1}' to '{2}'. {3}", actionname, value, item.property.path, repeat_text) + value = item.property.value + value # noinspection PyCallingNonCallable item(value, caller='{} {}'.format(StateEngineDefaults.plugin_identification, self._parent)) # Class representing a single "se_remove" action -class SeActionRemoveItem(SeActionSetItem): +class SeActionRemoveFirstItem(SeActionSetItem): # Initialize the action # abitem: parent SeItem instance # name: Name of action def __init__(self, abitem, name: str): super().__init__(abitem, name) + self.__function = "remove first from list" + + def write_to_logger(self): + self._log_debug("function: {}", self.__function) + SeActionSetItem.write_to_logger(self) + SeActionBase.write_to_logger(self) def _execute_set_add_remove(self, actionname, repeat_text, item, value): currentvalue = item.property.value + value = value if isinstance(value, list) else [value] for v in value: try: - currentvalue = currentvalue.remove(v) - self._log_debug("{0}: Remove '{1}' from '{2}'. {3}", actionname, v, item.property.path, repeat_text) + currentvalue.remove(v) + self._log_debug("{0}: Remove first entry '{1}' from '{2}'. {3}", actionname, v, item.property.path, repeat_text) except Exception as ex: - self._log_warning("{0}: Remove '{1}' from '{2}' failed: {3}", actionname, value, item.property.path, ex) + self._log_warning("{0}: Remove first entry '{1}' from '{2}' failed: {3}", actionname, value, item.property.path, ex) + item(currentvalue, caller='{} {}'.format(StateEngineDefaults.plugin_identification, self._parent)) + + +# Class representing a single "se_remove" action +class SeActionRemoveLastItem(SeActionSetItem): + # Initialize the action + # abitem: parent SeItem instance + # name: Name of action + def __init__(self, abitem, name: str): + super().__init__(abitem, name) + self.__function = "remove last from list" + + def write_to_logger(self): + self._log_debug("function: {}", self.__function) + SeActionSetItem.write_to_logger(self) + SeActionBase.write_to_logger(self) + + def _execute_set_add_remove(self, actionname, repeat_text, item, value): + currentvalue = item.property.value + value = value if isinstance(value, list) else [value] + for v in value: + try: + currentvalue.reverse() + currentvalue.remove(v) + currentvalue.reverse() + self._log_debug("{0}: Remove last entry '{1}' from '{2}'. {3}", actionname, v, item.property.path, repeat_text) + except Exception as ex: + self._log_warning("{0}: Remove last entry '{1}' from '{2}' failed: {3}", actionname, value, item.property.path, ex) + item(currentvalue, caller='{} {}'.format(StateEngineDefaults.plugin_identification, self._parent)) + + +# Class representing a single "se_removeall" action +class SeActionRemoveAllItem(SeActionSetItem): + # Initialize the action + # abitem: parent SeItem instance + # name: Name of action + def __init__(self, abitem, name: str): + super().__init__(abitem, name) + self.__function = "remove all from list" + + def write_to_logger(self): + self._log_debug("function: {}", self.__function) + SeActionSetItem.write_to_logger(self) + SeActionBase.write_to_logger(self) + + def _execute_set_add_remove(self, actionname, repeat_text, item, value): + currentvalue = item.property.value + value = value if isinstance(value, list) else [value] + for v in value: + try: + currentvalue = [i for i in currentvalue if i != v] + self._log_debug("{0}: Remove all '{1}' from '{2}'. {3}", actionname, v, item.property.path, repeat_text) + except Exception as ex: + self._log_warning("{0}: Remove all '{1}' from '{2}' failed: {3}", actionname, value, item.property.path, ex) + item(currentvalue, caller='{} {}'.format(StateEngineDefaults.plugin_identification, self._parent)) diff --git a/stateengine/StateEngineActions.py b/stateengine/StateEngineActions.py index 03c949ab8..a07744d05 100755 --- a/stateengine/StateEngineActions.py +++ b/stateengine/StateEngineActions.py @@ -34,6 +34,7 @@ def __init__(self, abitem): self.__unassigned_repeats = {} self.__unassigned_orders = {} self.__unassigned_conditionsets = {} + self.__unassigned_modes = {} # Return number of actions in list def count(self): @@ -70,6 +71,14 @@ def update(self, attribute, value): else: self.__actions[name].update_conditionsets(value) return + elif func == "se_mode": + # set remove mode + if name not in self.__actions: + # If we do not have the action yet (conditionset-attribute before action-attribute), ... + self.__unassigned_modes[name] = value + else: + self.__actions[name].update_modes(value) + return elif func == "se_order": # set order if name not in self.__actions: @@ -111,8 +120,12 @@ def __ensure_action_exists(self, func, name): action = StateEngineAction.SeActionSpecial(self._abitem, name) elif func == "se_add": action = StateEngineAction.SeActionAddItem(self._abitem, name) - elif func == "se_remove": - action = StateEngineAction.SeActionRemoveItem(self._abitem, name) + elif func == "se_remove" or func == "se_removeall": + action = StateEngineAction.SeActionRemoveAllItem(self._abitem, name) + elif func == "se_removefirst": + action = StateEngineAction.SeActionRemoveFirstItem(self._abitem, name) + elif func == "se_removelast": + action = StateEngineAction.SeActionRemoveLastItem(self._abitem, name) else: return False @@ -124,6 +137,10 @@ def __ensure_action_exists(self, func, name): action.update_repeat(self.__unassigned_repeats[name]) del self.__unassigned_repeats[name] + if name in self.__unassigned_modes: + action.update_modes(self.__unassigned_modes[name]) + del self.__unassigned_modes[name] + if name in self.__unassigned_orders: action.update_order(self.__unassigned_orders[name]) del self.__unassigned_orders[name] @@ -143,7 +160,7 @@ def __handle_combined_action_attribute(self, name, value_list): raise ValueError("Attribute 'se_action_{0}': Value must be a string or a list!".format(name)) # parse parameters - parameter = {'function': None, 'force': None, 'repeat': None, 'delay': 0, 'order': None, 'conditionset': None} + parameter = {'function': None, 'force': None, 'repeat': None, 'delay': 0, 'order': None, 'conditionset': None, 'mode': None} for entry in value_list: if isinstance(entry, dict): entry = list("{!s}:{!s}".format(k, v) for (k, v) in entry.items())[0] @@ -162,7 +179,8 @@ def __handle_combined_action_attribute(self, name, value_list): # function given and valid? if parameter['function'] is None: raise ValueError("Attribute 'se_action_{0}: Parameter 'function' must be set!".format(name)) - if parameter['function'] not in ('set', 'force', 'run', 'byattr', 'trigger', 'special', 'add', 'remove'): + if parameter['function'] not in ('set', 'force', 'run', 'byattr', 'trigger', 'special', + 'add', 'remove', 'removeall', 'removefirst', 'removelast'): raise ValueError("Attribute 'se_action_{0}: Invalid value '{1}' for parameter 'function'!".format(name, parameter['function'])) # handle force @@ -181,6 +199,21 @@ def __handle_combined_action_attribute(self, name, value_list): "because parameter 'force' is 'False'!", name) parameter['function'] = "set" + possible_mode_list = ['first', 'last', 'all'] + if parameter['mode'] is not None: + # Parameter mode is supported only for type "remove" + if parameter['function'] != "remove": + self._log_warning("Attribute 'se_action_{0}': Parameter 'mode' not supported for function '{1}'", name, parameter['function']) + elif parameter['mode'] and parameter['function'] == "remove": + # Convert type "remove" with mode to specific remove type + if parameter['mode'] in possible_mode_list: + parameter['function'] = "remove{}".format(parameter['mode']) + self._log_info("Attribute 'se_action_{0}': Function 'remove' changed to '{1}'", name, parameter['function']) + else: + parameter['function'] = "remove" + self._log_info("Attribute 'se_action_{0}': Parameter '{1}' for 'mode' is wrong - can only be {2}", + name, parameter['mode'], possible_mode_list) + # create action based on function exists = False try: @@ -227,6 +260,21 @@ def __handle_combined_action_attribute(self, name, value_list): self.__raise_missing_parameter_error(parameter, 'value') self.__actions[name].update(parameter['value']) exists = True + elif parameter['function'] == "removeall": + if self.__ensure_action_exists("se_removeall", name): + self.__raise_missing_parameter_error(parameter, 'value') + self.__actions[name].update(parameter['value']) + exists = True + elif parameter['function'] == "removefirst": + if self.__ensure_action_exists("se_removefirst", name): + self.__raise_missing_parameter_error(parameter, 'value') + self.__actions[name].update(parameter['value']) + exists = True + elif parameter['function'] == "removelast": + if self.__ensure_action_exists("se_removelast", name): + self.__raise_missing_parameter_error(parameter, 'value') + self.__actions[name].update(parameter['value']) + exists = True except ValueError as ex: exists = False if name in self.__actions: @@ -243,6 +291,8 @@ def __handle_combined_action_attribute(self, name, value_list): self.__actions[name].update_order(parameter['order']) if parameter['conditionset'] is not None: self.__actions[name].update_conditionsets(parameter['conditionset']) + if parameter['mode'] is not None: + self.__actions[name].update_modes(parameter['mode']) # noinspection PyMethodMayBeStatic def __raise_missing_parameter_error(self, parameter, param_name): diff --git a/stateengine/StateEngineCondition.py b/stateengine/StateEngineCondition.py index 6b45b7852..ae4e2cbd1 100755 --- a/stateengine/StateEngineCondition.py +++ b/stateengine/StateEngineCondition.py @@ -200,21 +200,6 @@ def write_to_logger(self): if self.__agenegate is not None: self._log_debug("age negate: {0}", self.__agenegate) - # Flatten list of values - # changelist: list to make flat - def _flatten_list(self, changelist): - if isinstance(changelist, list): - flat_list = [] - for sublist in changelist: - if isinstance(sublist, list): - for item in sublist: - flat_list.append(item) - else: - flat_list.append(sublist) - else: - flat_list = changelist - return flat_list - # Cast 'value', 'min' and 'max' using given cast function # cast_func: cast function to use def __cast_all(self, cast_func): @@ -235,7 +220,7 @@ def __check_value(self): if not self.__value.is_empty(): # 'value' is given. We ignore 'min' and 'max' and check only for the given value value = self.__value.get() - value = self._flatten_list(value) + value = StateEngineTools.flatten_list(value) if isinstance(value, list): text = "Condition '{0}': value={1} negate={2} current={3}" @@ -288,8 +273,8 @@ def __check_value(self): max_get_value = self.__max.get() min_value = [min_get_value] if not isinstance(min_get_value, list) else min_get_value max_value = [max_get_value] if not isinstance(max_get_value, list) else max_get_value - min_value = self._flatten_list(min_value) - max_value = self._flatten_list(max_value) + min_value = StateEngineTools.flatten_list(min_value) + max_value = StateEngineTools.flatten_list(max_value) diff_len = len(min_value) - len(max_value) min_value = min_value + [None] * abs(diff_len) if diff_len < 0 else min_value max_value = max_value + [None] * diff_len if diff_len > 0 else max_value @@ -297,17 +282,16 @@ def __check_value(self): self._log_debug(text, self.__name, min_value, max_value, self.__negate, current) if diff_len != 0: self._log_debug("Min and max are always evaluated as valuepairs. If needed you can also provide 'novalue' as a list value") - if len(min_value) > 1 or len(max_value) > 1: - self._log_debug("Be aware that 'eval:' and 'item:' definitions don't stay in the original list order but get appended to the end!") self._log_increase_indent() + _notmatching = 0 for i, _ in enumerate(min_value): min = None if min_value[i] == 'novalue' else min_value[i] max = None if max_value[i] == 'novalue' else max_value[i] self._log_debug("Checking minvalue {} and maxvalue {}", min, max) if min is not None and max is not None and min > max: min, max = max, min - self._log_warning("Condition {}: min must not be greater than max! " \ - "Values got switched: min is now {}, max is now {}", self.__name, min, max) + self._log_warning("Condition {}: min must not be greater than max! " + "Values got switched: min is now {}, max is now {}", self.__name, min, max) if min is None and max is None: self._log_debug("no limit given -> matching") return True @@ -315,22 +299,34 @@ def __check_value(self): if not self.__negate: if min is not None and current < min: self._log_debug("too low -> not matching") - return False + _notmatching += 1 - if max is not None and current > max: + elif max is not None and current > max: self._log_debug("too high -> not matching") - return False + _notmatching += 1 + + else: + self._log_debug("given limits ok -> matching") + return True else: if min is not None and current > min and (max is None or current < max): self._log_debug("not lower than min -> not matching") - return False + _notmatching += 1 - if max is not None and current < max and (min is None or current > min): + elif max is not None and current < max and (min is None or current > min): self._log_debug("not higher than max -> not matching") - return False + _notmatching += 1 + + else: + self._log_debug("given limits ok -> matching") + return True + + if _notmatching == len(min_value): + return False + else: + self._log_debug("given limits ok -> matching") + return True - self._log_debug("given limits ok -> matching") - return True except Exception as ex: self._log_warning("Problem checking value {}", ex) finally: @@ -355,8 +351,8 @@ def __check_age(self): # We check 'min' and 'max' (if given) agemin = [agemin] if not isinstance(agemin, list) else agemin agemax = [agemax] if not isinstance(agemax, list) else agemax - agemin = self._flatten_list(agemin) - agemax = self._flatten_list(agemax) + agemin = StateEngineTools.flatten_list(agemin) + agemax = StateEngineTools.flatten_list(agemax) diff_len = len(agemin) - len(agemax) agemin = agemin + [None] * abs(diff_len) if diff_len < 0 else agemin agemax = agemax + [None] * diff_len if diff_len > 0 else agemax @@ -364,9 +360,8 @@ def __check_age(self): self._log_debug(text, self.__name, agemin, agemax, self.__agenegate, current) if diff_len != 0: self._log_debug("Min and max age are always evaluated as valuepairs. If needed you can also provide 'novalue' as a list value") - if len(agemin) > 1 or len(agemax) > 1: - self._log_debug("Be aware that 'eval:' and 'item:' definitions don't stay in the original list order but get appended to the end!") self._log_increase_indent() + _notmatching = 0 for i, _ in enumerate(agemin): min = None if agemin[i] == 'novalue' else agemin[i] max = None if agemax[i] == 'novalue' else agemax[i] @@ -374,22 +369,33 @@ def __check_age(self): if not self.__agenegate: if min is not None and current < min: self._log_debug("too young -> not matching") - return False + _notmatching += 1 - if max is not None and current > max: + elif max is not None and current > max: self._log_debug("too old -> not matching") - return False + _notmatching += 1 + + else: + self._log_debug("given limits ok -> matching") + return True else: if min is not None and current > min and (max is None or current < max): self._log_debug("not younger than min -> not matching") - return False + _notmatching += 1 - if max is not None and current < max and (min is None or current > min): + elif max is not None and current < max and (min is None or current > min): self._log_debug("not older than max -> not matching") - return False + _notmatching += 1 - self._log_debug("given age limits ok -> matching") - return True + else: + self._log_debug("given limits ok -> matching") + return True + + if _notmatching == len(agemin): + return False + else: + self._log_debug("given limits ok -> matching") + return True finally: self._log_decrease_indent() diff --git a/stateengine/StateEngineEval.py b/stateengine/StateEngineEval.py index f5f44a549..a5fd86360 100755 --- a/stateengine/StateEngineEval.py +++ b/stateengine/StateEngineEval.py @@ -104,10 +104,10 @@ def get_relative_itemvalue(self, subitem_id): self._log_debug("Executing method 'get_relative_itemvalue({0})'", subitem_id) try: item = self._abitem.return_item(subitem_id) - self._log_info("Return {0} for item {1}", item.property.value, subitem_id) + self._log_info("Return '{0}' for item {1}", item.property.value, subitem_id) return item.property.value except Exception as ex: - self._log_warning("Problem evaluating value of {0}: {1}", subitem_id, ex) + self._log_warning("Problem evaluating value of '{0}': {1}", subitem_id, ex) # Return the property of an item related to the StateEngine Object Item # item_id: Relative id of item whose property should be returned diff --git a/stateengine/StateEngineItem.py b/stateengine/StateEngineItem.py index fbd4f64a1..e520481ec 100755 --- a/stateengine/StateEngineItem.py +++ b/stateengine/StateEngineItem.py @@ -41,6 +41,10 @@ def id(self): def variables(self): return self.__variables + @property + def templates(self): + return self.__templates + # return instance of smarthome.py class @property def sh(self): @@ -91,6 +95,7 @@ def __init__(self, smarthome, item): self.__lastconditionset_internal_name = "" if self.__lastconditionset_item_name is None else self.__lastconditionset_item_name.property.value self.__states = [] + self.__templates = {} self.__repeat_actions = StateEngineValue.SeValue(self, "Repeat actions if state is not changed", False, "bool") self.__repeat_actions.set_from_attr(self.__item, "se_repeat_actions", True) @@ -145,6 +150,12 @@ def __init__(self, smarthome, item): def __repr__(self): return self.__id + def updatetemplates(self, template, value): + if value is None: + self.__templates.pop(template) + else: + self.__templates[template] = value + # Find the state, matching the current conditions and perform the actions of this state # caller: Caller that triggered the update # noinspection PyCallingNonCallable,PyUnusedLocal @@ -301,12 +312,24 @@ def __add_triggers(self): # add item trigger self.__item.add_method_trigger(self.update_state) + # Check item settings and update if required # noinspection PyProtectedMember def __check_item_config(self): # set "enforce updates" for item self.__item._enforce_updates = True + # Update item from grandparent_item + for attribute in self.__item.conf: + func, name = StateEngineTools.partition_strip(attribute, "_") + if name == "": + continue + + # update item/eval in this condition + if func == "se_template": + if name not in self.__templates: + self.__templates[name] = self.__item.conf[attribute] + # set "eval" for item if initial if self.__item._trigger and self.__item._eval is None: self.__item._eval = "1" @@ -394,6 +417,8 @@ def __write_to_log(self): # log general config self.__logger.header("Configuration of item {0}".format(self.__name)) self.__startup_delay.write_to_logger() + for t in self.__templates: + self.__logger.info("Template {0}: {1}", t, self.__templates.get(t)) self.__logger.info("Cycle: {0}", cycles) self.__logger.info("Cron: {0}", crons) self.__logger.info("Trigger: {0}".format(triggers)) diff --git a/stateengine/StateEngineState.py b/stateengine/StateEngineState.py index 16aa2e5f1..28acb03b1 100755 --- a/stateengine/StateEngineState.py +++ b/stateengine/StateEngineState.py @@ -153,6 +153,8 @@ def __fill(self, item_state, recursion_depth): self.__fill(use_item, recursion_depth + 1) else: self._log_error("{0}: Referenced item '{1}' not found!", item_state.property.path, item_state.conf["se_use"]) + self._log_info("{0}: Reading se_use {1}. Nevertheless, it is recommended to use struct items instead.", + item_state.property.path, item_state.conf["se_use"]) # Get action sets and condition sets parent_item = item_state.return_parent() @@ -184,7 +186,8 @@ def __fill(self, item_state, recursion_depth): # if an item name is given, or if we do not have a name after returning from all recursions, # use item name as state name if str(item_state) != item_state.property.path or (self.__name == "" and recursion_depth == 0): - self.__name = str(item_state) + self.__name = str(item_state).split('.')[-1] + self.__text.set(self.__name) if "se_name" in item_state.conf: self.__text.set_from_attr(item_state, "se_name", self.__text.get(None)) elif self.__text.is_empty() and recursion_depth == 0: diff --git a/stateengine/StateEngineTools.py b/stateengine/StateEngineTools.py index 6333b271b..014f875fb 100755 --- a/stateengine/StateEngineTools.py +++ b/stateengine/StateEngineTools.py @@ -20,9 +20,12 @@ ######################################################################### import datetime from ast import literal_eval +# import logging + # # Some general tool functions # +# logger = logging.getLogger(__name__) # Find a certain item below a given item. @@ -44,6 +47,22 @@ def get_last_part_of_item_id(item): return item.property.path.rsplit(".", 1)[1] +# Flatten list of values +# changelist: list to make flat +def flatten_list(changelist): + if isinstance(changelist, list): + flat_list = [] + for sublist in changelist: + if isinstance(sublist, list): + for item in sublist: + flat_list.append(item) + else: + flat_list.append(sublist) + else: + flat_list = changelist + return flat_list + + # cast a value as numeric. Throws ValueError if cast not possible # Taken from smarthome.py/lib/item.py # value: value to cast @@ -136,7 +155,9 @@ def cast_time(value): minute = int(value_parts[1]) except ValueError: raise ValueError("Can not cast '{0}' to data type 'time' due to non-numeric parts!".format(orig_value)) - if hour == 24 and minute == 0: + if hour > 24 or minute > 59: + raise ValueError("Can not cast '{0}' to data type 'time'. Hour or minute values too high!".format(orig_value)) + elif hour == 24 and minute >= 0: return datetime.time(23, 59, 59) else: return datetime.time(hour, minute) @@ -172,7 +193,9 @@ def find_attribute(smarthome, base_item, attribute, recursion_depth=0): # splitchar: where to split # returns: Parts before and after split, whitespaces stripped def partition_strip(value, splitchar): - if value.startswith("se_") and splitchar == "_": + if isinstance(value, list): + raise ValueError("You can not use list entries!") + elif value.startswith("se_") and splitchar == "_": part1, __, part2 = value[3:].partition(splitchar) return "se_" + part1.strip(), part2.strip() else: diff --git a/stateengine/StateEngineValue.py b/stateengine/StateEngineValue.py index 2f71193b1..5f8fe44c7 100755 --- a/stateengine/StateEngineValue.py +++ b/stateengine/StateEngineValue.py @@ -20,6 +20,7 @@ ######################################################################### from . import StateEngineTools from . import StateEngineEval +import datetime # Class representing a value for a condition (either value or via item/eval) class SeValue(StateEngineTools.SeItemChild): @@ -36,6 +37,8 @@ def __init__(self, abitem, name, allow_value_list=False, value_type=None): self.__item = None self.__eval = None self.__varname = None + self.__template = None + self.__listorder = [] if value_type == "str": self.__cast_func = StateEngineTools.cast_str elif value_type == "num": @@ -50,7 +53,7 @@ def __init__(self, abitem, name, allow_value_list=False, value_type=None): self.__cast_func = None def __repr__(self): - return "SeValue item: {}, function {}, value {}.".format(self._abitem, self.__name, self.get()) + return "SeValue item {}, function {}, value {}.".format(self._abitem, self.__name, self.get()) # Indicate of object is empty (neither value nor item nor eval set) def is_empty(self): @@ -81,15 +84,59 @@ def set(self, value, name=""): f = val source.append(s) field_value.append(f) + self.__listorder.append(val) if field_value[i] == "": source[i] = "value" field_value[i] = value[i] else: value[i] = field_value[i] field_value[i] = value[i] + if source[i] == "template": + self.__template = field_value[i] + _template = self._abitem.templates.get(self.__template) + if _template is not None: + try: + source[i], field_value[i] = StateEngineTools.partition_strip(_template, ":") + if val in self.__listorder and self.__template in self._abitem.templates: + self.__listorder[self.__listorder.index(val)] = self._abitem.templates.get(self.__template) + except Exception as ex: + self._abitem.updatetemplates(self.__template, None) + self.__listorder = [i for i in self.__listorder if i != val] + self._log_warning("Removing template {}: {}", self.__template, ex) + val, field_value[i], source[i] = None, None, None + else: + self._log_warning("Template with name {} does not exist for this SE Item!", self.__template) + self.__listorder = [i for i in self.__listorder if i != val] + source[i], field_value[i], val = None, None, None + elif isinstance(value, str): + self.__listorder.append(value) source, field_value = StateEngineTools.partition_strip(value, ":") - if name == "time" and source.isdigit() and field_value.isdigit(): + if source == "template": + self.__template = field_value + _template = self._abitem.templates.get(self.__template) + if _template is not None: + try: + source, field_value = StateEngineTools.partition_strip(_template, ":") + if value in self.__listorder and field_value in self._abitem.templates: + self.__listorder[self.__listorder.index(value)] = self._abitem.templates[self.__template] + except Exception as ex: + self.__listorder = [i for i in self.__listorder if i != value] + source, field_value, value = None, None, None + self._abitem.updatetemplates(self.__template, None) + self._log_warning("Removing template {}: {}", self.__template, ex) + else: + self._log_warning("Template with name {} does not exist for this SE Item!", self.__template) + self.__listorder = [i for i in self.__listorder if i != value] + source, field_value, value = None, None, None + + try: + cond1 = source.isdigit() + cond2 = field_value.isdigit() + except Exception: + cond1 = False + cond2 = False + if name == "time" and cond1 and cond2: field_value = value source = "value" elif field_value == "": @@ -104,18 +151,38 @@ def set(self, value, name=""): if isinstance(field_value[i], list) and not self.__allow_value_list: raise ValueError("{0}: value_in is not allowed. Field_value: {1} ({2})".format(self.__name, field_value[i], self.__allow_value_list)) else: + if s == "template": + if self._abitem.templates.get(self.__template) is not None: + self._log_debug("Template {} exchanged with {}", self.__template, self._abitem.templates[field_value[i]]) + s, field_value[i] = StateEngineTools.partition_strip(self._abitem.templates[field_value[i]], ":") + else: + self._log_warning("Template with name {} does not exist for this SE Item!", self.__template) + s = None + try: + cond1 = s.isdigit() + cond2 = field_value[i].isdigit() + except Exception: + cond1 = False + cond2 = False + if name == "time" and cond1 and cond2: + field_value[i] = '{}:{}'.format(source[i], field_value[i]) + s = "value" + elif field_value[i] == "": + field_value[i] = s + s = "value" self.__value = [] if self.__value is None else self.__value self.__value.append(None if s != "value" else self.__do_cast(field_value[i])) + self.__item = [] if self.__item is None else self.__item self.__item.append(None if s != "item" else self._abitem.return_item(field_value[i])) self.__eval = [] if self.__eval is None else self.__eval self.__eval.append(None if s != "eval" else field_value[i]) self.__varname = [] if self.__varname is None else self.__varname self.__varname.append(None if s != "var" else field_value[i]) - self.__item = [i for i in self.__item if i] - self.__eval = [i for i in self.__eval if i] - self.__varname = [i for i in self.__varname if i] - self.__value = [i for i in self.__value if i] + self.__item = [i for i in self.__item if i is not None] + self.__eval = [i for i in self.__eval if i is not None] + self.__varname = [i for i in self.__varname if i is not None] + self.__value = [i for i in self.__value if i is not None] self.__value = self.__value[0] if len(self.__value) == 1 else None if len(self.__value) == 0 else self.__value self.__item = self.__item[0] if len(self.__item) == 1 else None if len(self.__item) == 0 else self.__item self.__eval = self.__eval[0] if len(self.__eval) == 1 else None if len(self.__eval) == 0 else self.__eval @@ -126,7 +193,8 @@ def set(self, value, name=""): self.__varname = None if source != "var" else field_value if source == "value": if isinstance(field_value, list) and not self.__allow_value_list: - raise ValueError("{0}: value_in is not allowed".format(self.__name)) + raise ValueError("{0}: value_in is not allowed, problem with {1}. Allowed = {2}".format( + self.__name, field_value, self.__allow_value_list)) self.__value = self.__do_cast(field_value) else: self.__value = None @@ -148,6 +216,9 @@ def get(self, default=None): returnvalues.append(self.__get_from_item()) if self.__varname is not None: returnvalues.append(self.__get_from_variable()) + if isinstance(returnvalues, list): + returnvalues = StateEngineTools.flatten_list(returnvalues) + returnvalues = returnvalues if len(self.__listorder) <= 1 else self.__listorder if len(returnvalues) == 0: return default elif len(returnvalues) == 1: @@ -169,12 +240,15 @@ def get_type(self): # Write condition to logger def write_to_logger(self): + if self._abitem.templates.get(self.__template) is not None: + self._log_debug("{0}: Using template {1}", self.__name, self.__template) if self.__value is not None: self._log_debug("{0}: {1}", self.__name, self.__value) if self.__item is not None: if isinstance(self.__item, list): for i in self.__item: - self._log_debug("{0} from item: {1}", self.__name, i.property.path) + if i is not None: + self._log_debug("{0} from item: {1}", self.__name, i.property.path) else: self._log_debug("{0} from item: {1}", self.__name, self.__item.property.path) if self.__eval is not None: @@ -209,23 +283,41 @@ def get_text(self, prefix=None, suffix=None): # value: value to cast def __do_cast(self, value): if value is not None and self.__cast_func is not None: + self._log_debug("Casting value {}, function {}.", value, self.__cast_func) try: if isinstance(value, list): valuelist = [] for element in value: - valuelist.append(element if element == 'novalue' else self.__cast_func(element)) + try: + _newvalue = element if element == 'novalue' else self.__cast_func(element) + except Exception as ex: + _newvalue = None + self._log_warning("Problem casting element '{0}' to {1}: {2}.", element, self.__cast_func, ex) + valuelist.append(_newvalue) + if element in self.__listorder: + self.__listorder[self.__listorder.index(element)] = _newvalue value = valuelist else: - value = self.__cast_func(value) + try: + _newvalue = self.__cast_func(value) + except Exception: + raise ValueError("Not possible to cast.") + if value in self.__listorder: + self.__listorder[self.__listorder.index(value)] = _newvalue + value = _newvalue except Exception as ex: - if self.__cast_func == self.__cast_func.__globals__['_cast_list']: + self._log_warning("Problem casting '{0}' to {1}: {2}.", value, self.__cast_func, ex) + if '_cast_list' in self.__cast_func.__globals__ and self.__cast_func == self.__cast_func.__globals__['_cast_list']: try: - value = StateEngineTools.cast_num(value) + _newvalue = StateEngineTools.cast_num(value) + if value in self.__listorder: + self.__listorder[self.__listorder.index(value)] = _newvalue + value = _newvalue except Exception: pass value = [value] + self._log_debug("Original casting of {} to {} failed. New cast is now: {}.", value, self.__cast_func, type(value)) return value - self._log_info("Problem casting value '{0}' to {1}: {2}.", value, self.__cast_func, ex) return None return value @@ -238,7 +330,10 @@ def __get_eval(self): # noinspection PyUnusedLocal stateengine_eval = se_eval = StateEngineEval.SeEval(self._abitem) try: - values = eval(self.__eval) + _newvalue = eval(self.__eval) + if 'eval:{}'.format(self.__eval) in self.__listorder: + self.__listorder[self.__listorder.index('eval:{}'.format(self.__eval))] = _newvalue + values = _newvalue except Exception as ex: self._log_info("Problem evaluating '{0}': {1}.", StateEngineTools.get_eval_name(self.__eval), ex) return None @@ -246,20 +341,30 @@ def __get_eval(self): if isinstance(self.__eval, list): values = [] for val in self.__eval: - self._log_info("Checking eval: {0}.", val.replace("\n", "")) + try: + val = val.replace("\n", "") + except Exception: + pass + self._log_info("Checking eval: {0}.", val) self._log_increase_indent() if isinstance(val, str): if "stateengine_eval" in val or "se_eval" in val: # noinspection PyUnusedLocal stateengine_eval = se_eval = StateEngineEval.SeEval(self._abitem) try: - value = eval(val) + _newvalue = eval(val) + if 'eval:{}'.format(val) in self.__listorder: + self.__listorder[self.__listorder.index('eval:{}'.format(val))] = _newvalue + value = _newvalue except Exception as ex: self._log_info("Problem evaluating from list '{0}': {1}.", StateEngineTools.get_eval_name(val), ex) value = None else: try: - value = val() + _newvalue = val() + if 'eval:{}'.format(val) in self.__listorder: + self.__listorder[self.__listorder.index('eval:{}'.format(val))] = _newvalue + value = _newvalue except Exception as ex: self._log_info("Problem calling '{0}': {1}.", StateEngineTools.get_eval_name(val), ex) value = None @@ -269,44 +374,60 @@ def __get_eval(self): else: try: self._log_increase_indent() - values = self.__eval() + _newvalue = self.__eval() + if 'eval:{}'.format(self.__eval) in self.__listorder: + self.__listorder[self.__listorder.index('eval:{}'.format(self.__eval))] = _newvalue + values = _newvalue self._log_decrease_indent() except Exception as ex: self._log_info("Problem calling '{0}': {1}.", StateEngineTools.get_eval_name(self.__eval), ex) return None - return self.__do_cast(values) + return values # Determine value from item def __get_from_item(self): + if isinstance(self.__item, list): + values = [] + for val in self.__item: + _newvalue = self.__do_cast(val.property.value) + values.append(_newvalue) + if 'item:{}'.format(val) in self.__listorder: + self.__listorder[self.__listorder.index('item:{}'.format(val))] = _newvalue + else: + _newvalue = self.__do_cast(self.__item.property.value) + if 'item:{}'.format(self.__item) in self.__listorder: + self.__listorder[self.__listorder.index('item:{}'.format(self.__item))] = _newvalue + values = _newvalue + if values is not None: + return values + try: - if isinstance(self.__item, list): - values = [] - for val in self.__item: - self._log_info("Checking item '{0}': {1}.", self.__item, val) - value = val.property.value - values.append(self.__do_cast(value)) - else: - values = self.__item.property.value - except Exception as ex: - self._log_info("Problem while reading item '{0}': {1}.", self.__item.property.path, ex) - return None + _newvalue = self.__item.property.path + if 'item:{}'.format(self.__item) in self.__listorder: + self.__listorder[self.__listorder.index('item:{}'.format(self.__item))] = _newvalue + values = _newvalue + except Exception as ex2: + values = self.__item + self._log_info("Problem while reading item '{0}' path: {1}.", values, ex2) return self.__do_cast(values) # Determine value from variable def __get_from_variable(self): - try: - if isinstance(self.__varname, list): - values = [] - for var in self.__varname: - self._log_info("Checking variable '{0}': {1}.", self.__varname, var) - value = self._abitem.get_variable(var) - values.append(self.__do_cast(value)) - else: - values = self._abitem.get_variable(self.__varname) - except Exception as ex: - self._log_info("Problem while reading variable '{0}': {1}.", self.__varname, ex) - return None + if isinstance(self.__varname, list): + values = [] + for var in self.__varname: + self._log_info("Checking variable '{0}': {1}.", self.__varname, var) + value = self._abitem.get_variable(var) + _newvalue = self.__do_cast(value) + values.append(_newvalue) + if 'var:{}'.format(var) in self.__listorder: + self.__listorder[self.__listorder.index('var:{}'.format(var))] = _newvalue + else: + _newvalue = self._abitem.get_variable(self.__varname) + if 'var:{}'.format(self.__varname) in self.__listorder: + self.__listorder[self.__listorder.index('var:{}'.format(self.__varname))] = _newvalue + values = _newvalue return values diff --git a/stateengine/__init__.py b/stateengine/__init__.py index 8c9861bb0..28183d5bc 100755 --- a/stateengine/__init__.py +++ b/stateengine/__init__.py @@ -33,7 +33,7 @@ class StateEngine(SmartPlugin): - PLUGIN_VERSION = '1.5.2' + PLUGIN_VERSION = '1.6' # Constructor # noinspection PyUnusedLocal,PyMissingConstructor diff --git a/stateengine/plugin.yaml b/stateengine/plugin.yaml index c2aa2c5f8..ebaf4d69d 100755 --- a/stateengine/plugin.yaml +++ b/stateengine/plugin.yaml @@ -26,7 +26,7 @@ plugin: documentation: https://www.smarthomeng.de/user/plugins/stateengine/user_doc.html support: https://knx-user-forum.de/forum/supportforen/smarthome-py/1303071-stateengine-plugin-support - version: 1.5.2 + version: 1.6 sh_minversion: 1.6 multi_instance: False classname: StateEngine diff --git a/stateengine/user_doc/user_doc4.rst b/stateengine/user_doc/user_doc4.rst index 5e44f89e5..ec4766cbe 100755 --- a/stateengine/user_doc/user_doc4.rst +++ b/stateengine/user_doc/user_doc4.rst @@ -44,7 +44,7 @@ festlegen, wann eine Aktion ausgeführt wird. Details zu den Aktionen werden im Abschnitt :ref:`Aktionen` erläutert. -.. rubric:: Zustand-Templates +.. rubric:: Templates für Zustände :name: zustandtemplates Da viele Items immer wieder die gleichen Zustände inklusive Aktionen und Bedingungen diff --git a/stateengine/user_doc/user_doc5.rst b/stateengine/user_doc/user_doc5.rst index 90821a185..32a6f1bbc 100755 --- a/stateengine/user_doc/user_doc5.rst +++ b/stateengine/user_doc/user_doc5.rst @@ -61,6 +61,8 @@ Der zu vergleichende Wert einer Bedingung kann auf folgende Arten definiert werd - statischer Wert (also z.B. 500 Lux) - Item (beispielsweise ein Item namens settings.helligkeitsschwellwert) - Eval-Funktion (siehe auch `eval Ausdrücke `_) +- Template: eine Vorlage, z.B. eine eval Funktion, die immer wieder innerhalb +des StateEngine Items eingesetzt werden kann. .. rubric:: Name der Bedingung @@ -73,11 +75,38 @@ die jeweils mit einem Unterstrich "_" getrennt werden: - ````: siehe unten. Beispiel: min = der Wert des muss mindestens dem beim Attribut angegebenen Wert entsprechen. - ````: Hier wird entweder das im Regelwerk-Item mittels ``se_item_`` deklarierte Item oder eine besondere Bedingung (siehe unten) referenziert. + +.. rubric:: Templates für Bedingungsabfragen + :name: bedingungstemplates + +Setzt man für mehrere Bedingungsabfragen (z.B. Helligkeit, Temperatur, etc.) immer die +gleichen Ausdrücke ein (z.B. eine eval-Funktion), so kann Letzteres als Template +definiert und referenziert werden. Dadurch wird die die Handhabung +komplexerer Abfragen deutlich vereinfacht. Diese Templates müssen wie se_item/se_eval +auf höchster Ebene des StateEngine Items (also z.B. rules) deklariert werden. + +.. code-block:: yaml + rules: + se_template_test: eval:se_eval.get_relative_itemvalue('..settings.max_bright') - 20 + se_item_specialitem: meinitem.specialitem # declare an existing item here + + state_one: + enter_testlast: #has to start with enter, can be called whatever + se_value_laststate: 'template:test' #laststate is a special conditionname + enter_testother: + se_value_specialitem: 'template:test' #specialitem must be declared with se_item/se_eval + +Bei sämtlichen Bedingungen ist es möglich, Werte als Liste anzugeben. Es ist allerdings +nicht möglich, Templates als Listen zu definieren. + + .. rubric:: Bedingungslisten :name: bedingungslisten -Sämtliche nun gelisteten Bedingungen können entweder eine einzelne Angabe haben oder aus einer Liste mit mehreren Bedingungen bestehen. -In letzterem Fall fungiert die Liste als ODER Abfrage. Sobald eine der gelisteten Werte eingetroffen ist, wird die Bedingung als wahr angenommen +Sämtliche nun gelisteten Bedingungen können entweder eine einzelne Angabe haben +oder aus einer Liste mit mehreren Bedingungen bestehen. +In letzterem Fall fungiert die Liste als ODER Abfrage. Sobald eine der gelisteten +Werte eingetroffen ist, wird die Bedingung als wahr angenommen und der Zustand aktiviert. .. code-block:: yaml @@ -87,10 +116,13 @@ und der Zustand aktiviert. - 'eval:1+2' - 'item:..laststate_id' -Im oben gezeigten Beispiel kann der letzte Status einen von drei Werten beinhalten, damit die Bedingung wahr ist. In welcher Form diese Werte -angegeben werden, ist offen - es müssen also nicht nur reine Strings in die Liste eingefügt werden. +Im oben gezeigten Beispiel kann der letzte Status einen von drei Werten beinhalten, +damit die Bedingung wahr ist. In welcher Form diese Werte +angegeben werden, ist offen - es müssen also nicht nur reine Strings in die +Liste eingefügt werden. -Werden sowohl min(age) als auch max(age) als Liste definiert, spielt die Reihenfolge der Liste eine Rolle, da die beiden Werte als Paar herangezogen werden. +Werden sowohl min(age) als auch max(age) als Liste definiert, spielt die +Reihenfolge der Liste eine Rolle, da die beiden Werte als Paar herangezogen werden. .. code-block:: yaml @@ -109,7 +141,6 @@ Obige Bedingung wird beispielsweise wahr bei: - einem Wert zwischen 3 und 5 * der Wert des Items meinwert - einem Wert maximal so hoch wie der in EinzweitesIem hinterlegte -Wichtig ist dabei zu beachten, dass Abfragen von Items und Eval Funktionen am Ende der Liste platziert werden sollten. .. rubric:: Vergleichsfunktion :name: vergleichsfunktion diff --git a/stateengine/user_doc/user_doc6.rst b/stateengine/user_doc/user_doc6.rst index 8b0f05785..5e9e2e5be 100755 --- a/stateengine/user_doc/user_doc6.rst +++ b/stateengine/user_doc/user_doc6.rst @@ -136,7 +136,7 @@ stehen muss, während eine Zahl das nicht sollte. se_action_: - 'function: remove' - 'value: //' - - 'force: [True/False]' + - 'mode: [first/last/all]' Das Item, das verändert werden soll, muss auf Ebene des Regelwerk-Items über das Attribut ``se_item_`` oder @@ -146,7 +146,11 @@ Der Parameter ``value: `` legt fest, welcher Wert vom Item mit dem Typ ``list`` entfernt werden soll. Dabei ist zu beachten, dass zwischen String (Anführungszeichen) und Zahlen unterschieden wird. Ist der angegegeben Wert nicht in der Liste, wird der originale -Itemwert erneut geschrieben, ohne etwas zu entfernen. +Itemwert erneut geschrieben, ohne etwas zu entfernen. Über den Parameter +``mode`` lässt sich einstellen, ob jeweils alle mit dem Wert übereinstimmenden +Einträge in der Liste (mode: all) oder nur der erste (first) bzw. der letzte (last) +Eintrag gelöscht werden sollen. Wird der Parameter nicht angegeben, werden immer +alle Einträge gelöscht. **Funktion run: Ausführen einer Funktion** @@ -281,3 +285,23 @@ Der gesamte Pfad könnte wie folgt evaluiert werden: .. code-block:: yaml "eval:se_eval.get_relative_itemid('{}.'.format(se_eval.get_relative_itemvalue('..state_id')))" + +.. rubric:: Templates für Aktionen + :name: aktionstemplates + +Setzt man für mehrere Aktionen (z.B. Setzen auf einen Wert abhängig vom aktuellen +Zustand) immer die gleichen Ausdrücke ein, so kann Letzteres als Template +definiert und referenziert werden. Dadurch wird die die Handhabung +komplexerer Wertdeklarationen deutlich vereinfacht. Diese Templates müssen wie se_item/se_eval +auf höchster Ebene des StateEngine Items (also z.B. rules) deklariert werden. + +.. code-block:: yaml + rules: + se_template_test: se_eval.get_relative_itemid('wetterstation.helligkeit_{}'.format(se_eval.get_relative_itemvalue('..state_name'))) + se_item_specialitem: meinitem.specialitem # declare an existing item here + + state_one: + on_enter: + se_action_specialitem: + - 'function: set' + - 'to: template:test' From 17f9959b48f1c908a41af8b31e17225d2d5e8228 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sat, 15 Jun 2019 23:51:44 +0200 Subject: [PATCH 113/200] add settings_edited to struct --- stateengine/plugin.yaml | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/stateengine/plugin.yaml b/stateengine/plugin.yaml index ebaf4d69d..d78492119 100755 --- a/stateengine/plugin.yaml +++ b/stateengine/plugin.yaml @@ -360,6 +360,13 @@ item_structs: visu_acl: rw enforce_updates: True + settings: + settings_edited: + type: bool + name: settings editiert + eval_trigger: ..settings.* + eval: not sh...settings_edited() + rules: name: Zustandsautomat remark: configure your se_item_* and eval_triggers here @@ -449,7 +456,6 @@ item_structs: cache: True initial_value: True - rules: se_item_suspend: ..suspend se_item_suspend_end: ..suspend_end From ed61f4e28d6c6c0b2dceceaf3a0920e6c57f74ed Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sat, 15 Jun 2019 23:53:39 +0200 Subject: [PATCH 114/200] eval_trigger for edited settings --- stateengine/plugin.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/stateengine/plugin.yaml b/stateengine/plugin.yaml index d78492119..ca11b4b0a 100755 --- a/stateengine/plugin.yaml +++ b/stateengine/plugin.yaml @@ -375,6 +375,7 @@ item_structs: eval: True eval_trigger: - ..retrigger + - ..settings.settings_edited # se_startup_delay: 30 # se_repeat_actions: true From e573c72371c29ca3f71f78b3b4f26153d38f3626 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 16 Jun 2019 00:43:07 +0200 Subject: [PATCH 115/200] allow se_eval for agemin/max if result is an item --- stateengine/StateEngineCondition.py | 13 +++++++++++-- stateengine/StateEngineValue.py | 2 +- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/stateengine/StateEngineCondition.py b/stateengine/StateEngineCondition.py index ae4e2cbd1..193589d88 100755 --- a/stateengine/StateEngineCondition.py +++ b/stateengine/StateEngineCondition.py @@ -157,8 +157,17 @@ def complete(self, item_state): raise ValueError("Condition {0}: Error when casting: {1}".format(self.__name, ex)) # 'agemin' and 'agemax' can only be used for items, not for eval - if self.__item is None and not (self.__agemin.is_empty() and self.__agemax.is_empty()): - raise ValueError("Condition {}: 'agemin'/'agemax' can not be used for eval!".format(self.__name)) + cond_min_max = self.__agemin.is_empty() and self.__agemax.is_empty() + try: + cond_evalitem = self.__eval and ("get_relative_item(" in self.__eval or "return_item(" in self.__eval) + except Exception: + cond_evalitem = False + if self.__item is None and not cond_min_max: + if cond_evalitem: + self._log_info("Make sure your se_eval '{}' really contains an item and not an ID. If the agemin/max " + "condition does not work though, please check your eval!", self.__eval) + else: + raise ValueError("Condition {}: 'agemin'/'agemax' can not be used for eval!".format(self.__name)) return True diff --git a/stateengine/StateEngineValue.py b/stateengine/StateEngineValue.py index 5f8fe44c7..bb69e3cf6 100755 --- a/stateengine/StateEngineValue.py +++ b/stateengine/StateEngineValue.py @@ -283,7 +283,7 @@ def get_text(self, prefix=None, suffix=None): # value: value to cast def __do_cast(self, value): if value is not None and self.__cast_func is not None: - self._log_debug("Casting value {}, function {}.", value, self.__cast_func) + # self._log_debug("Casting value {}, function {}.", value, self.__cast_func) try: if isinstance(value, list): valuelist = [] From 2138a62467944834c838aded142f9b1cbdf06255 Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Sun, 16 Jun 2019 09:46:56 +0200 Subject: [PATCH 116/200] Some tweaks No error if port-profile cannot be found Web-If: Merged problems tab with items-tab increased verbosity of items-generator --- unifi/__init__.py | 125 ++++++++++++++++++------------ unifi/ubiquiti/unifi.py | 5 +- unifi/webif/templates/index.html | 127 +++++++++++++++++-------------- 3 files changed, 144 insertions(+), 113 deletions(-) diff --git a/unifi/__init__.py b/unifi/__init__.py index 8c882e67e..7609fb35a 100644 --- a/unifi/__init__.py +++ b/unifi/__init__.py @@ -34,7 +34,10 @@ from plugins.unifi.ubiquiti.unifi import API as UniFiAPI from plugins.unifi.ubiquiti.unifi import DataException as UniFiDataException import ruamel.yaml as yaml +from ruamel.yaml.comments import CommentedMap +from ruamel.yaml.compat import ordereddict import json +import traceback class UniFiConst(object): @@ -67,15 +70,21 @@ class UniFiItemIssue(object): def __init__(self, itemPath: str): self.issues = [] self.item = itemPath + self.worst_level = 0 - def append_issue(self, issue): + def append_issue(self, issue, level): if self.issues.__contains__(issue): return self.issues.append(issue) + if self.worst_level < level: + self.worst_level = level def get_issues(self): return self.issues + def get_worst_level(self): + return self.worst_level + class UniFiControllerClientModel(): @@ -87,12 +96,12 @@ def __init__(self, api: UniFiAPI): def append_item(self, item): self._items.append(item) - def append_item_issue(self, item, issue): + def append_item_issue(self, item, issue, level): ipath = item.path() if not self._items_with_issues.__contains__(ipath): self._items_with_issues[ipath] = UniFiItemIssue(ipath) - self._items_with_issues[ipath].append_issue(issue) + self._items_with_issues[ipath].append_issue(issue, level) def get_items_with_issues_count(self): return len(self._items_with_issues) @@ -101,6 +110,11 @@ def get_items_with_issues(self): for x in self._items_with_issues: yield self._items_with_issues[x] + def get_item_issues(self, item_path): + if not self._items_with_issues.__contains__(item_path): + return UniFiItemIssue(item_path) + return self._items_with_issues[item_path] + def get_item_count(self): """ Returns number of added items @@ -147,6 +161,12 @@ def _get_device_node_item(self, node_data, parent_type=""): node_body['ip'] = {} node_body['ip'][UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_DV_IP node_body['ip']['type'] = 'str' + elif n['type'] == 'ugw': + node_body[UniFiConst.ATTR_DV_MAC] = n['mac'] + node_body['type'] = 'foo' + node_body['ip'] = {} + node_body['ip'][UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_DV_IP + node_body['ip']['type'] = 'str' elif n['type'] == 'usw': node_body[UniFiConst.ATTR_SW_MAC] = n['mac'] node_body['type'] = 'foo' @@ -175,12 +195,15 @@ def _get_device_node_item(self, node_data, parent_type=""): single_dev_key = portmap[port_no][0][0] node_body[single_dev_key] = portmap[port_no][0][1] node_body[single_dev_key]['port_enabled'] = {} + node_body[single_dev_key]['port_enabled']['type'] = 'bool' + node_body[single_dev_key]['port_enabled'][UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_SW_PORT_ENABLED # Removed Port-Prof-Off as the default will be considered during run-time. # node_body[single_dev_key]['port_enabled'][UniFiConst.ATTR_SW_PORT_PROF_OFF] = 'Disabled' - node_body[single_dev_key]['port_enabled'][UniFiConst.ATTR_SW_PORT_PROF_ON] = self._api.get_port_profile_for( - n['mac'], port_no) - node_body[single_dev_key]['port_enabled'][UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_SW_PORT_ENABLED - node_body[single_dev_key]['port_enabled']['type'] = 'bool' + try: + node_body[single_dev_key]['port_enabled'][UniFiConst.ATTR_SW_PORT_PROF_ON] = self._api.get_port_profile_for( + n['mac'], port_no) + except: + pass else: attached_clnts = {} for ch in portmap[port_no]: @@ -189,12 +212,15 @@ def _get_device_node_item(self, node_data, parent_type=""): attached_clnts[UniFiConst.ATTR_SW_PORT_NO] = port_no attached_clnts['port_enabled'] = {} + attached_clnts['port_enabled']['type'] = 'bool' + attached_clnts['port_enabled'][UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_SW_PORT_ENABLED # Removed Port-Prof-Off as the default will be considered during run-time. #attached_clnts['port_enabled'][UniFiConst.ATTR_SW_PORT_PROF_OFF] = 'Disabled' - attached_clnts['port_enabled'][UniFiConst.ATTR_SW_PORT_PROF_ON] = self._api.get_port_profile_for( - n['mac'], port_no) - attached_clnts['port_enabled'][UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_SW_PORT_ENABLED - attached_clnts['port_enabled']['type'] = 'bool' + try: + attached_clnts['port_enabled'][UniFiConst.ATTR_SW_PORT_PROF_ON] = self._api.get_port_profile_for( + n['mac'], port_no) + except: + pass node_body["non_unifi_switch_at_port_{}".format(port_no)] = attached_clnts else: for child in node_data['children']: @@ -204,8 +230,13 @@ def _get_device_node_item(self, node_data, parent_type=""): return (node_key, node_body) def get_item_hierarchy(self): + hr = "Fehler" try: hr = self._api.get_device_hierarchy() + except Exception as e: + return traceback.format_exc() + + try: model = {} model['unifi_network'] = {} model['unifi_network']['wifi_clients'] = {} @@ -213,13 +244,13 @@ def get_item_hierarchy(self): wlc_key = ("client_" + wlc_data['name']).lower().replace('.', '_').replace('-', '_') wlc_body = {} wlc_body['hostname'] = {} - wlc_body['hostname'][UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_CL_HOSTNAME wlc_body['hostname']['type'] = 'str' + wlc_body['hostname'][UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_CL_HOSTNAME wlc_body['ip'] = {} - wlc_body['ip'][UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_CL_IP wlc_body['ip']['type'] = 'str' - wlc_body[UniFiConst.ATTR_MAC] = wlc_data['mac'] + wlc_body['ip'][UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_CL_IP wlc_body[UniFiConst.ATTR_TYPE] = UniFiConst.TYPE_CL_PRESENT + wlc_body[UniFiConst.ATTR_MAC] = wlc_data['mac'] wlc_body['type'] = 'bool' model['unifi_network']['wifi_clients'][wlc_key] = wlc_body @@ -230,7 +261,7 @@ def get_item_hierarchy(self): return yaml.dump(model, Dumper=yaml.SafeDumper, indent=4, width=768, allow_unicode=True, default_flow_style=False) except Exception as e: - return e + return "{}\n\nRaw data:\n{}".format(traceback.format_exc(), json.dumps(hr, indent=4)) def get_total_number_of_requests_to_controller(self): try: @@ -345,36 +376,34 @@ def stop(self): self.logger.debug("Stop method called") self.alive = False - def _log_item_issue(self, item, msg, enable_logging=True, defaulting=False): + def _log_item_info(self, item, msg, enable_logging=True, defaulting=False): if defaulting: - self._model.append_item_issue(item, "DEFAULT: "+msg) + self._model.append_item_issue(item, "2: " + msg, 2) else: - self._model.append_item_issue(item, "INFO: "+msg) + self._model.append_item_issue(item, "1: "+msg, 1) if enable_logging: - self.logger.info(msg) + self.logger.info(msg + " in item " + item.path()) def _log_item_warning(self, item, msg, enable_logging=True): - self._model.append_item_issue(item, "WARNING: "+msg) + self._model.append_item_issue(item, "3: "+msg, 3) if enable_logging: - self.logger.warning(msg) + self.logger.warning(msg + " in item " + item.path()) def _log_item_error(self, item, msg, enable_logging=True): - self._model.append_item_issue(item, "ERROR: " + msg) + self._model.append_item_issue(item, "4: " + msg, 4) if enable_logging: - self.logger.error(msg) + self.logger.error(msg + " in item " + item.path()) def _mac_check(self, item, item_type: str, leaf_item=None): if not Network.is_mac(item.conf[item_type]): - self._log_item_error(item, "invalid {} attribute provided from {} in item {} ".format( - item_type, item.path(), leaf_item.path())) + self._log_item_error(item, "invalid {} attribute provided from {}".format(item_type, item.path())) return False return True def _get_attribute_recursive(self, item, item_type: str, check=None, enable_logging=True, leaf_item=None): if item is None: - self._log_item_warning(leaf_item, "No {} attribute provided in item {} (or parent)".format( - item_type, leaf_item.path())) + self._log_item_warning(leaf_item, "No {} attribute provided parent or".format(item_type)) return None if leaf_item is None: leaf_item = item @@ -385,19 +414,17 @@ def _get_attribute_recursive(self, item, item_type: str, check=None, enable_logg if not check(item, item_type, leaf_item): return None if not (item.path() == leaf_item.path()): - self._log_item_issue(leaf_item, "{} attribute provided from {} in item {} ".format( - item_type, item.path(), leaf_item.path()), enable_logging) + self._log_item_info(leaf_item, "{} attribute provided from {}".format( + item_type, item.path()), enable_logging) return item.conf[item_type] except AttributeError: - self._log_item_warning(leaf_item, "No {} attribute provided in item {} (or parent)".format( - item_type, leaf_item.path())) + self._log_item_warning(leaf_item, "No {} attribute provided".format(item_type)) return None return self._get_attribute_recursive(item.return_parent(), item_type, check, enable_logging, leaf_item) def _get_one_of_attr_recursive(self, item, item_types: list, check=None, enable_logging=True, leaf_item=None): if item is None: - self._log_item_warning(leaf_item, "No {} attribute provided in item {} (or parent)".format( - json.dump(item_types), leaf_item.path())) + self._log_item_warning(leaf_item, "No {} attribute provided".format(json.dump(item_types))) return None if leaf_item is None: leaf_item = item @@ -409,13 +436,12 @@ def _get_one_of_attr_recursive(self, item, item_types: list, check=None, enable_ if not check(item, item_type, leaf_item): return None if not (item.path() == leaf_item.path()): - self._log_item_issue(leaf_item, "{} attribute provided from {} in item {} ".format( - item_type, item.path(), leaf_item.path()), enable_logging) + self._log_item_info(leaf_item, "{} attribute provided from {} ".format( + item_type, item.path()), enable_logging) return item.conf[item_type] except AttributeError: - self._log_item_warning(leaf_item, "No {} attribute provided in item {} (or parent)".format( - item_type, leaf_item.path())) + self._log_item_warning(leaf_item, "No {} attribute provided".format(item_type)) return None return self._get_one_of_attr_recursive(item.return_parent(), item_types, check, enable_logging, leaf_item) @@ -470,15 +496,16 @@ def parse_item(self, item): return prof_on = self._get_attribute_recursive(item, UniFiConst.ATTR_SW_PORT_PROF_ON) if prof_on is None: - self._log_item_issue(item, "Will use 'All' as Port Profile for on", defaulting=True) + self._log_item_info(item, "Will use 'All' as Port Profile for on", defaulting=True) prof_off = self._get_attribute_recursive(item, UniFiConst.ATTR_SW_PORT_PROF_OFF) if prof_off is None: - self._log_item_issue(item, "Will use 'Disabled' as Port Profile for off", defaulting=True) + self._log_item_info(item, "Will use 'Disabled' as Port Profile for off", defaulting=True) self._model.append_item(item) return self.update_item else: - self._log_item_error(item, "unifi_type %s unknown at %s" % (i_attr, item.path())) + self._log_item_error(item, "unifi_type %s unknown" % (i_attr)) + self._model.append_item(item) def parse_logic(self, logic): """ @@ -531,8 +558,8 @@ def _item_filter(self, item, attr_type, attr_val): return False def _check_client_at_ap(self, i): - ap_mac = self._get_attribute_recursive(i, UniFiConst.ATTR_AP_MAC, - check=self._mac_check, enable_logging=self._logging) + ap_mac = self._get_attribute_recursive( + i, UniFiConst.ATTR_AP_MAC, check=self._mac_check, enable_logging=self._logging) if ap_mac is None: return False client_mac = self._get_attribute_recursive( @@ -543,8 +570,8 @@ def _check_client_at_ap(self, i): ap_of_client_mac = self._model._api.get_client_info(client_mac, 'ap_mac') if ap_of_client_mac is None: - self._log_item_warning(i, "Unable to get MAC of access-point for client %s from %s" % - (client_mac, i.path()), enable_logging=self._logging) + self._log_item_warning(i, "Unable to get MAC of access-point for client %s" % + (client_mac), enable_logging=self._logging) return ap_of_client_mac == ap_mac @@ -555,8 +582,7 @@ def _check_ap_enabled(self, item): return False rsl = self._model._api.get_device_info(ap_mac, 'disabled', if_no_prop=False) if rsl is None: - self._log_item_warning(item, "No device %s found for item %s" % - (ap_mac, item.path()), enable_logging=self._logging) + self._log_item_warning(item, "No device %s found" % (ap_mac), enable_logging=self._logging) return False return not rsl @@ -567,8 +593,7 @@ def _get_device_info(self, item, info_type): return False rsl = self._model._api.get_device_info(mac, info_type) if rsl is None: - self._log_item_warning(item, "No device %s found for item %s" % - (mac, item.path()), enable_logging=self._logging) + self._log_item_warning(item, "No device %s found for" % mac, enable_logging=self._logging) return rsl @@ -600,8 +625,8 @@ def _check_sw_port_enabled(self, item): elif rslt is None: return None else: - self._log_item_warning(item, "Current port-profile \{}}\" doesn't match \"{}\" (on) or \"{}\" (off) in {}".format( - rslt, pp_on, pp_off, item.path()), enable_logging=self._logging) + self._log_item_warning(item, "Current port-profile \"{}\" doesn't match \"{}\" (on) or \"{}\" (off)".format( + rslt, pp_on, pp_off), enable_logging=self._logging) return None def _get_client_info(self, item, info_type): diff --git a/unifi/ubiquiti/unifi.py b/unifi/ubiquiti/unifi.py index c322c8968..43a4cb10e 100644 --- a/unifi/ubiquiti/unifi.py +++ b/unifi/ubiquiti/unifi.py @@ -303,10 +303,7 @@ def get_port_profile_for(self, switch_mac: str, port_number: int): poData = self.get_device_info(switch_mac, 'port_overrides') port_prof = poData[port_number - 1]['portconf_id'] - - # poData = self.device_stat(switch_mac) - # port_prof = poData[0]['port_overrides'][port_number - 1]['portconf_id'] - + profiles = self._get_port_profiles() if len(profiles) == 0: raise DataException("No port profiles found") diff --git a/unifi/webif/templates/index.html b/unifi/webif/templates/index.html index 793656bf6..d615ca4fa 100644 --- a/unifi/webif/templates/index.html +++ b/unifi/webif/templates/index.html @@ -48,7 +48,7 @@ -{% set tabcount = 3 %} +{% set tabcount = 2 %} {% set tab1title = "Items (" ~ p._model.get_item_count() ~ ")" %} {% block bodytab1 %} +
Anzahl Requests seit Start{{ _('NumFromStart') }} {{ p._model.get_total_number_of_requests_to_controller() }} Controller URL
+ + @@ -83,59 +86,46 @@ {% else %} {% set instance_append = "" %} {% endif %} - - + + + + - {% endfor %} - -
  {{ _('Pfad') }} {{ _('Typ') }}{{ _('Uni-Typ') }} {{ _('Item Wert') }} {{ _('Letztes Update') }} {{ _('Letzter Change') }}
{{ item.id() }}
+ {% set warn_level = p._model.get_item_issues(item.id()).get_worst_level() %} + {% if warn_level == 1 %} + + {% elif warn_level == 2 %} + + {% elif warn_level == 3 %} + + {% elif warn_level == 4 %} + + {% endif %} +
{{ item.id() }}
{{ item.type() }}{{ item.conf['unifi_type'] }} {{ item() }} {{ item.last_update().strftime('%d.%m.%Y %H:%M:%S') }} {{ item.last_change().strftime('%d.%m.%Y %H:%M:%S') }}
- - -{% endblock bodytab1 %} - - - -{% set tab2title = "Issues (" ~ p._model.get_items_with_issues_count() ~ ")" %} -{% block bodytab2 %} -
-
- - - - - - - - - {% for ele in p._model.get_items_with_issues() %} - {% if p.get_instance_name() %} - {% set instance_append = "@"+p.get_instance_name() %} - {% else %} - {% set instance_append = "" %} - {% endif %} - - - + + + + + {% endfor %} @@ -143,21 +133,40 @@
{{ _('Pfad') }}{{ _('Probleme') }}
{{ ele.item }} - {% for issue in ele.get_issues() %} - {% if issue[0:5] == "INFO:" %} - {{ issue[5:400] }} - {% elif issue[0:6] == "ERROR:" %} - {{ issue[6:400] }} - {% elif issue[0:8] == "DEFAULT:" %} - {{ issue[8:400] }} - {% elif issue[0:8] == "WARNING:" %} - {{ issue[8:400] }} - {% else %} - {{ issue }} - {% endif %} -
- {% endfor %} +
 
  + {% for issue in p._model.get_item_issues(item.id()).get_issues() %} + {% if issue[0:2] == "1:" %} +   {{ issue[2:400] }} + {% elif issue[0:2] == "2:" %} + {{ issue[2:400] }} + {% elif issue[0:2] == "3:" %} + {{ issue[2:400] }} + {% elif issue[0:2] == "4:" %} + {{ issue[2:400] }} + {% else %} + {{ issue }} + {% endif %} +
+ {% endfor %}
-{% endblock bodytab2 %} + + +{% endblock bodytab1 %} + + +{% set tab2title = "Item-Generator" %} +{% block bodytab2 %}
 {{ p._model.get_item_hierarchy() }}
 
-{% endblock bodytab3 %} \ No newline at end of file +{% endblock bodytab2 %} \ No newline at end of file From 67e9dbfc86bd177da35b40052f3bd44c053ecfc1 Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Sun, 16 Jun 2019 17:03:41 +0200 Subject: [PATCH 117/200] Tweaked port-profile identification --- unifi/__init__.py | 2 +- unifi/ubiquiti/unifi.py | 33 ++++++++++++++++++++++---------- unifi/webif/templates/index.html | 17 ++++++++++++---- 3 files changed, 37 insertions(+), 15 deletions(-) diff --git a/unifi/__init__.py b/unifi/__init__.py index 7609fb35a..96342524b 100644 --- a/unifi/__init__.py +++ b/unifi/__init__.py @@ -593,7 +593,7 @@ def _get_device_info(self, item, info_type): return False rsl = self._model._api.get_device_info(mac, info_type) if rsl is None: - self._log_item_warning(item, "No device %s found for" % mac, enable_logging=self._logging) + self._log_item_warning(item, "No device %s found" % mac, enable_logging=self._logging) return rsl diff --git a/unifi/ubiquiti/unifi.py b/unifi/ubiquiti/unifi.py index 43a4cb10e..24dff78ef 100644 --- a/unifi/ubiquiti/unifi.py +++ b/unifi/ubiquiti/unifi.py @@ -302,8 +302,17 @@ def get_port_profile_for(self, switch_mac: str, port_number: int): raise DataException("Cannot find switch with MAC {}".format(switch_mac)) poData = self.get_device_info(switch_mac, 'port_overrides') - port_prof = poData[port_number - 1]['portconf_id'] - + poIndex = -1 + poFound = False + for port in poData: + poIndex = poIndex + 1 + if port['port_idx'] == port_number: + poFound = True + break + if not poFound: + raise DataException("Could not match any port in data to given port-number {}".format(port_number)) + port_prof = poData[poIndex]['portconf_id'] + profiles = self._get_port_profiles() if len(profiles) == 0: raise DataException("No port profiles found") @@ -325,14 +334,18 @@ def set_port_profile_for(self, switch_mac: str, port_number: int, profile_name: if sid is None: raise DataException("Cannot find switch with MAC {}".format(switch_mac)) - # poData = self.device_stat(switch_mac) - # poData = poData[0]['port_overrides'] - poData = self.get_device_info(switch_mac, 'port_overrides') - - if len(poData) < (port_number - 1): - raise DataException("Switch has less than {} ports".format(port_number)) - poData[port_number - 1]['portconf_id'] = pid + poIndex = -1 + poFound = False + for port in poData: + poIndex = poIndex + 1 + if port['port_idx'] == port_number: + poFound = True + break + if not poFound: + raise DataException("Could not match any port in data to given port-number {}".format(port_number)) + + poData[poIndex]['portconf_id'] = pid newPoData = {} newPoData['port_overrides'] = poData @@ -383,4 +396,4 @@ def get_connection_data(self): to_ret['user'] = self._login_data['username'] to_ret['site'] = self._site to_ret['url'] = self._baseurl - return to_ret \ No newline at end of file + return to_ret diff --git a/unifi/webif/templates/index.html b/unifi/webif/templates/index.html index d615ca4fa..80fe276dc 100644 --- a/unifi/webif/templates/index.html +++ b/unifi/webif/templates/index.html @@ -90,13 +90,17 @@
{% set warn_level = p._model.get_item_issues(item.id()).get_worst_level() %} {% if warn_level == 1 %} - + + {% elif warn_level == 2 %} - + + {% elif warn_level == 3 %} - + + {% elif warn_level == 4 %} - + + {% endif %}
{{ item.id() }}
@@ -140,8 +144,12 @@ function showRow(row) { $("#r"+lastShow+"_body1").hide(); + $("#r"+lastShow+"_d").hide(); + $("#r"+lastShow+"_r").show(); if(lastShow != row) { $("#r"+row+"_body1").show(); + $("#r"+row+"_d").show(); + $("#r"+row+"_r").hide(); lastShow = row; } else { lastShow = 0; @@ -152,6 +160,7 @@ {% for item in p._model.get_items() %} $("#r{{ loop.index }}_body1").hide(); $("#r{{ loop.index }}_body2").hide(); +$("#r{{ loop.index }}_d").hide(); $("#r{{ loop.index }}_lvl").click(function() {showRow({{ loop.index }}); }); {% endfor %} From bce326e47011ffc8c5901d6244d0bf14c9a5ab60 Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Mon, 17 Jun 2019 10:27:48 +0200 Subject: [PATCH 118/200] Update README.md --- unifi/README.md | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/unifi/README.md b/unifi/README.md index e3fcf8c0c..6c3ed09ea 100644 --- a/unifi/README.md +++ b/unifi/README.md @@ -36,9 +36,17 @@ Tested with: ## Configuration ### plugin.yaml - Please refer to the documentation generated from plugin.yaml metadata. +Example: +``` +unifi: +plugin_name: unifi +unifi_user: ubnt #User Name +unifi_password: ubnt #Password +unifi_controller_url: https://192.168.1.12:8443 # URL of YOUR controller / cloud-key + +``` ### items.yaml @@ -206,4 +214,4 @@ For building a web interface for a plugin, we deliver the following 3rd party co If you are interested in new "global" components, contact us. Otherwise feel free to use them in your plugin, as long as the Open Source license is ok. - \ No newline at end of file + From 7d8ee417b964065eb3e2a8302cd4e7e0aa7dcb23 Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Mon, 17 Jun 2019 20:16:58 +0200 Subject: [PATCH 119/200] Some fixes - Text 'Uni-Typ' to language 'de' -> no translation ('de' or 'en') found - Exception with no network connectivity during startup (I hope - can't test that) - Error-handling improved during polling and item-update --- unifi/__init__.py | 25 +++++++++++++++++++------ unifi/webif/templates/index.html | 2 +- 2 files changed, 20 insertions(+), 7 deletions(-) diff --git a/unifi/__init__.py b/unifi/__init__.py index 96342524b..e55552074 100644 --- a/unifi/__init__.py +++ b/unifi/__init__.py @@ -363,9 +363,15 @@ def run(self): # if you need to create child threads, do not make them daemon = True! # They will not shutdown properly. (It's a python bug) - self._model._api.login() + try: + self._model._api.login() + except Exception as e: + self.logger.error(e) + try: + self.poll_device() + except Exception as e: + self.logger.error(e) - self.poll_device() self._logging = False def stop(self): @@ -517,7 +523,10 @@ def parse_logic(self, logic): def _update_unifi_with_item(self, item, item_type, func): if self._item_filter(item, UniFiConst.ATTR_TYPE, item_type): - func(item) + try: + func(item) + except Exception as e: + self._log_item_error(item, e, self._logging) def update_item(self, item, caller=None, source=None, dest=None): """ @@ -606,8 +615,9 @@ def _get_sw_port_profile(self, i): return self._model._api.get_port_profile_for(sw_mac, sw_port) except TypeError: return None - except UniFiDataException: - self._log_item_warning(i, "Unable to determine current switch-profile for switch {}".format(sw_mac)) + except UniFiDataException as e: + self._log_item_warning( + i, "Unable to determine current switch-profile for switch {}, error: {}".format(sw_mac, e)) return None def _check_sw_port_enabled(self, item): @@ -643,7 +653,10 @@ def _poll_with_unifi_type(self, unifi_type, func): # find all items that have the unifi_type attribute set to the given value: # apply func to item and set the value accordingly for item in self._model.get_items(lambda i: self._item_filter(i, UniFiConst.ATTR_TYPE, unifi_type)): - item(func(item), self.get_shortname()) + try: + item(func(item), self.get_shortname()) + except Exception as e: + self._log_item_error(item, e, self._logging) def poll_device(self): """ diff --git a/unifi/webif/templates/index.html b/unifi/webif/templates/index.html index 80fe276dc..0af1aa216 100644 --- a/unifi/webif/templates/index.html +++ b/unifi/webif/templates/index.html @@ -73,7 +73,7 @@   {{ _('Pfad') }} {{ _('Typ') }} - {{ _('Uni-Typ') }} + unifi_type {{ _('Item Wert') }} {{ _('Letztes Update') }} {{ _('Letzter Change') }} From 239bbe5ca2d01fe6400dd209ac06fff6043509c7 Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Mon, 17 Jun 2019 21:43:22 +0200 Subject: [PATCH 120/200] Update __init__.py Replaced item.conf[...] with self.get_iattr_value(item.conf, ...) --- unifi/__init__.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/unifi/__init__.py b/unifi/__init__.py index e55552074..9fd3a1db0 100644 --- a/unifi/__init__.py +++ b/unifi/__init__.py @@ -402,7 +402,7 @@ def _log_item_error(self, item, msg, enable_logging=True): self.logger.error(msg + " in item " + item.path()) def _mac_check(self, item, item_type: str, leaf_item=None): - if not Network.is_mac(item.conf[item_type]): + if not Network.is_mac(self.get_iattr_value(item.conf, item_type)): self._log_item_error(item, "invalid {} attribute provided from {}".format(item_type, item.path())) return False return True @@ -422,7 +422,7 @@ def _get_attribute_recursive(self, item, item_type: str, check=None, enable_logg if not (item.path() == leaf_item.path()): self._log_item_info(leaf_item, "{} attribute provided from {}".format( item_type, item.path()), enable_logging) - return item.conf[item_type] + return self.get_iattr_value(item.conf, item_type) except AttributeError: self._log_item_warning(leaf_item, "No {} attribute provided".format(item_type)) return None @@ -445,7 +445,7 @@ def _get_one_of_attr_recursive(self, item, item_types: list, check=None, enable_ self._log_item_info(leaf_item, "{} attribute provided from {} ".format( item_type, item.path()), enable_logging) - return item.conf[item_type] + return self.get_iattr_value(item.conf, item_type) except AttributeError: self._log_item_warning(leaf_item, "No {} attribute provided".format(item_type)) return None From 4ee87b626536c7a16d2ee9cc22b585a905e5696c Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Mon, 17 Jun 2019 21:51:56 +0200 Subject: [PATCH 121/200] Update __init__.py return sorted(self._items, key=lambda i: i.conf[instance_key]) return sorted(self._items, key=lambda i: self.get_iattr_value(i.conf, "artnet_address")) --- artnet/__init__.py | 7 ++----- 1 file changed, 2 insertions(+), 5 deletions(-) diff --git a/artnet/__init__.py b/artnet/__init__.py index 583f668cb..e1b6aa6f3 100755 --- a/artnet/__init__.py +++ b/artnet/__init__.py @@ -91,11 +91,8 @@ def get_items(self): :return: array of items held by the device, sorted by their DMX-address """ - instance_key = "artnet_address" - if self._instance_name: - instance_key = "artnet_address@"+self._instance_name - - return sorted(self._items, key=lambda i: i.conf[instance_key]) + return sorted(self._items, key=lambda i: self.get_iattr_value(i.conf, "artnet_address")) + def get_min_channels(self): """ From ba9bdf7b4c8390e096c0e40ba3dacef5faf190fa Mon Sep 17 00:00:00 2001 From: onkelandy Date: Tue, 18 Jun 2019 14:55:50 +0200 Subject: [PATCH 122/200] make multiple templates for one condition list possible --- stateengine/StateEngineValue.py | 40 ++++++++++++++++++----------- stateengine/user_doc/user_doc10.rst | 4 ++- 2 files changed, 28 insertions(+), 16 deletions(-) diff --git a/stateengine/StateEngineValue.py b/stateengine/StateEngineValue.py index bb69e3cf6..04699eca1 100755 --- a/stateengine/StateEngineValue.py +++ b/stateengine/StateEngineValue.py @@ -92,22 +92,29 @@ def set(self, value, name=""): value[i] = field_value[i] field_value[i] = value[i] if source[i] == "template": - self.__template = field_value[i] - _template = self._abitem.templates.get(self.__template) + if self.__template is None: + self.__template = [] + self.__template.append(field_value[i]) + _template = self._abitem.templates.get(field_value[i]) if _template is not None: try: source[i], field_value[i] = StateEngineTools.partition_strip(_template, ":") - if val in self.__listorder and self.__template in self._abitem.templates: - self.__listorder[self.__listorder.index(val)] = self._abitem.templates.get(self.__template) + if val in self.__listorder and field_value[i] in self._abitem.templates: + self.__listorder[self.__listorder.index(val)] = self._abitem.templates.get(field_value[i]) except Exception as ex: - self._abitem.updatetemplates(self.__template, None) + self._abitem.updatetemplates(field_value[i], None) self.__listorder = [i for i in self.__listorder if i != val] - self._log_warning("Removing template {}: {}", self.__template, ex) + self._log_warning("Removing template {}: {}", field_value[i], ex) val, field_value[i], source[i] = None, None, None else: - self._log_warning("Template with name {} does not exist for this SE Item!", self.__template) + self._log_warning("Template with name {} does not exist for this SE Item!", field_value[i]) self.__listorder = [i for i in self.__listorder if i != val] source[i], field_value[i], val = None, None, None + try: + if isinstance(self.__template, list) and len(self.__template == 1): + self.__template = self.__template[0] + except Exception: + pass elif isinstance(value, str): self.__listorder.append(value) @@ -152,12 +159,15 @@ def set(self, value, name=""): raise ValueError("{0}: value_in is not allowed. Field_value: {1} ({2})".format(self.__name, field_value[i], self.__allow_value_list)) else: if s == "template": - if self._abitem.templates.get(self.__template) is not None: - self._log_debug("Template {} exchanged with {}", self.__template, self._abitem.templates[field_value[i]]) - s, field_value[i] = StateEngineTools.partition_strip(self._abitem.templates[field_value[i]], ":") - else: - self._log_warning("Template with name {} does not exist for this SE Item!", self.__template) - s = None + if isinstance(self.__template, list): + for t in self.__template: + _template = self._abitem.templates.get(t) + if _template is not None: + self._log_debug("Template {} exchanged with {}", self.__template, self._abitem.templates[field_value[i]]) + s, field_value[i] = StateEngineTools.partition_strip(self._abitem.templates[field_value[i]], ":") + else: + self._log_warning("Template with name {} does not exist for this SE Item!", self.__template) + s = None try: cond1 = s.isdigit() cond2 = field_value[i].isdigit() @@ -240,8 +250,8 @@ def get_type(self): # Write condition to logger def write_to_logger(self): - if self._abitem.templates.get(self.__template) is not None: - self._log_debug("{0}: Using template {1}", self.__name, self.__template) + if self.__template is not None: + self._log_debug("{0}: Using template(s) {1}", self.__name, self.__template) if self.__value is not None: self._log_debug("{0}: {1}", self.__name, self.__value) if self.__item is not None: diff --git a/stateengine/user_doc/user_doc10.rst b/stateengine/user_doc/user_doc10.rst index d5ed10dc5..6bfcf4bbe 100755 --- a/stateengine/user_doc/user_doc10.rst +++ b/stateengine/user_doc/user_doc10.rst @@ -238,4 +238,6 @@ Sperrzustand wieder hergestellt werden. enter_stayafterlock: se_value_wind: True se_value_laststate: var:current.state_id - se_value_conditionset_name: ['var:current.conditionset_name', 'enter_afterlock'] + se_value_lastconditionset_name: + - 'var:current.conditionset_name' + - 'enter_afterlock' From 44e45c7e677e089f183fd9ac03c40a7ea9e5af82 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Tue, 18 Jun 2019 18:59:05 +0200 Subject: [PATCH 123/200] fixed plugin.yaml settings_edited eval trigger --- stateengine/plugin.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stateengine/plugin.yaml b/stateengine/plugin.yaml index ca11b4b0a..e52e2c207 100755 --- a/stateengine/plugin.yaml +++ b/stateengine/plugin.yaml @@ -364,7 +364,7 @@ item_structs: settings_edited: type: bool name: settings editiert - eval_trigger: ..settings.* + eval_trigger: ..* eval: not sh...settings_edited() rules: From 81b560bebbb8f092d136b09ffccda651e6322ad2 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Tue, 18 Jun 2019 21:40:27 +0200 Subject: [PATCH 124/200] optimize struct with retrigger --- stateengine/plugin.yaml | 35 +++++++++++++++++++++-------------- 1 file changed, 21 insertions(+), 14 deletions(-) diff --git a/stateengine/plugin.yaml b/stateengine/plugin.yaml index e52e2c207..ca9e930d0 100755 --- a/stateengine/plugin.yaml +++ b/stateengine/plugin.yaml @@ -359,13 +359,15 @@ item_structs: type: bool visu_acl: rw enforce_updates: True + eval: True + eval_trigger: ..settings.settings_edited settings: settings_edited: type: bool name: settings editiert - eval_trigger: ..* - eval: not sh...settings_edited() + eval_trigger: ...settings.* + eval: not sh..self() rules: name: Zustandsautomat @@ -375,7 +377,6 @@ item_structs: eval: True eval_trigger: - ..retrigger - - ..settings.settings_edited # se_startup_delay: 30 # se_repeat_actions: true @@ -425,12 +426,6 @@ item_structs: visu_acl: ro cache: True - retrigger: - remark: Item to retrigger the rule set evaluation - type: bool - visu_acl: rw - enforce_updates: True - manuell: type: bool name: manuell @@ -440,6 +435,14 @@ item_structs: se_manual_exclude: - database:* + retrigger: + remark: Item to retrigger the rule set evaluation + type: bool + visu_acl: rw + enforce_updates: True + eval: True + eval_trigger: ..settings.settings_edited + settings: remark: Use these settings for your condition values @@ -457,6 +460,12 @@ item_structs: cache: True initial_value: True + settings_edited: + type: bool + name: settings editiert + eval_trigger: ...settings.* + eval: not sh..self() + rules: se_item_suspend: ..suspend se_item_suspend_end: ..suspend_end @@ -517,7 +526,6 @@ item_structs: rules: se_item_lock: ..lock se_item_suspend: ..suspend - se_item_retrigger: ..rules se_item_release: ..release se_item_suspend_end: ..suspend_end eval_trigger: @@ -544,11 +552,10 @@ item_structs: - 'to: ' - 'order: 4' se_action_retrigger: - - 'function: set' - - 'to: True' - - 'order: 5' + - 'function: special' + - 'value: retrigger:..retrigger' - 'repeat: True' - - 'delay: 1' + - 'order: 5' enter: se_value_release: True From e59e4780e06acde048321df54ceca673e40fb4fc Mon Sep 17 00:00:00 2001 From: onkelandy Date: Thu, 20 Jun 2019 10:40:25 +0200 Subject: [PATCH 125/200] better error message with wrong value cast --- stateengine/StateEngineValue.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/stateengine/StateEngineValue.py b/stateengine/StateEngineValue.py index 04699eca1..a68fd9e77 100755 --- a/stateengine/StateEngineValue.py +++ b/stateengine/StateEngineValue.py @@ -311,7 +311,10 @@ def __do_cast(self, value): try: _newvalue = self.__cast_func(value) except Exception: - raise ValueError("Not possible to cast.") + if any(x in value for x in ['sh.', '_eval', '(']): + raise ValueError("You most likely forgot to prefix your expression with 'eval:'") + else: + raise ValueError("Not possible to cast") if value in self.__listorder: self.__listorder[self.__listorder.index(value)] = _newvalue value = _newvalue From 9f47439df3aa4a5d73f34447739c2c57ac829fc9 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Thu, 20 Jun 2019 11:18:18 +0200 Subject: [PATCH 126/200] improve struct and retrigger; fix suspend function --- stateengine/StateEngineAction.py | 7 ++++++- stateengine/plugin.yaml | 6 ++---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/stateengine/StateEngineAction.py b/stateengine/StateEngineAction.py index 3dfd7fd05..47a82db71 100755 --- a/stateengine/StateEngineAction.py +++ b/stateengine/StateEngineAction.py @@ -601,13 +601,18 @@ def write_to_logger(self): # Really execute the action def _execute(self, actionname: str, repeat_text: str = ""): + try: + _log_value = self.__value.property.path + except Exception: + _log_value = self.__value self._log_info("{0}: Executing special action '{1}' using item '{2}'.{3}", - actionname, self.__special, self.__value.property.path, repeat_text) + actionname, self.__special, _log_value, repeat_text) self._log_increase_indent() if self.__special == "suspend": self.suspend_execute() elif self.__special == "retrigger": # noinspection PyCallingNonCallable + self.__value(False, caller='{} Retrigger'.format(StateEngineDefaults.plugin_identification)) self.__value(True, caller='{} Retrigger'.format(StateEngineDefaults.plugin_identification)) else: self._log_decrease_indent() diff --git a/stateengine/plugin.yaml b/stateengine/plugin.yaml index ca9e930d0..6033e0723 100755 --- a/stateengine/plugin.yaml +++ b/stateengine/plugin.yaml @@ -359,8 +359,6 @@ item_structs: type: bool visu_acl: rw enforce_updates: True - eval: True - eval_trigger: ..settings.settings_edited settings: settings_edited: @@ -368,6 +366,7 @@ item_structs: name: settings editiert eval_trigger: ...settings.* eval: not sh..self() + on_update: ...retrigger = True rules: name: Zustandsautomat @@ -440,8 +439,6 @@ item_structs: type: bool visu_acl: rw enforce_updates: True - eval: True - eval_trigger: ..settings.settings_edited settings: remark: Use these settings for your condition values @@ -465,6 +462,7 @@ item_structs: name: settings editiert eval_trigger: ...settings.* eval: not sh..self() + on_update: ...retrigger = True rules: se_item_suspend: ..suspend From b92739e3331742e213e5dcecec48fadd051ca249 Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Thu, 20 Jun 2019 21:32:19 +0200 Subject: [PATCH 127/200] Update __init__.py Logging stream-lined Exception handling improved during polling Removed standard comments --- unifi/__init__.py | 94 ++++++++++++++++++----------------------------- 1 file changed, 35 insertions(+), 59 deletions(-) diff --git a/unifi/__init__.py b/unifi/__init__.py index 9fd3a1db0..b51921bd1 100644 --- a/unifi/__init__.py +++ b/unifi/__init__.py @@ -36,6 +36,7 @@ import ruamel.yaml as yaml from ruamel.yaml.comments import CommentedMap from ruamel.yaml.compat import ordereddict +from requests.exceptions import ConnectionError import json import traceback @@ -289,33 +290,13 @@ class UniFiControllerClient(SmartPlugin): def __init__(self, sh, *args, **kwargs): """ - Initalizes the plugin. The parameters describe for this method are pulled from the entry in plugin.conf. - - :param sh: **Deprecated**: The instance of the smarthome object. For SmartHomeNG versions 1.4 and up: **Don't use it**! - :param *args: **Deprecated**: Old way of passing parameter values. For SmartHomeNG versions 1.4 and up: **Don't use it**! - :param **kwargs:**Deprecated**: Old way of passing parameter values. For SmartHomeNG versions 1.4 and up: **Don't use it**! - - If you need the sh object at all, use the method self.get_sh() to get it. There should be almost no need for - a reference to the sh object any more. - - The parameters *args and **kwargs are the old way of passing parameters. They are deprecated. They are imlemented - to support oder plugins. Plugins for SmartHomeNG v1.4 and beyond should use the new way of getting parameter values: - use the SmartPlugin method get_parameter_value(parameter_name) instead. Anywhere within the Plugin you can get - the configured (and checked) value for a parameter by calling self.get_parameter_value(parameter_name). It - returns the value in the datatype that is defined in the metadata. + Initalizes the plugin. The parameters describe for this method are pulled from the entry in plugin.yaml. """ + from bin.smarthome import VERSION if '.'.join(VERSION.split('.', 2)[:2]) <= '1.5': self.logger = logging.getLogger(__name__) - # If an package import with try/except is done, handle an import error like this: - - # Exit if the required package(s) could not be imported - # if not REQUIRED_PACKAGE_IMPORTED: - # self.logger.error("Unable to import Python package ''") - # self._init_complete = False - # return - # get the parameters for the plugin (as defined in metadata plugin.yaml): self._unifi_controller_url = self.get_parameter_value(UniFiConst.PARAMETER_URL) self._unifi_user = self.get_parameter_value(UniFiConst.PARAMETER_USER) @@ -334,21 +315,8 @@ def __init__(self, sh, *args, **kwargs): self._cycle = 60 self._logging = True - # Initialization code goes here - - # On initialization error use: - # self._init_complete = False - # return - - # The following part of the __init__ method is only needed, if a webinterface is being implemented: - - # if plugin should start even without web interface self.init_webinterface() - # if plugin should not start without web interface - # if not self.init_webinterface(): - # self._init_complete = False - return def run(self): @@ -366,11 +334,11 @@ def run(self): try: self._model._api.login() except Exception as e: - self.logger.error(e) + self.logger.error(repr(e)) try: self.poll_device() except Exception as e: - self.logger.error(e) + self.logger.error(repr(e)) self._logging = False @@ -378,11 +346,14 @@ def stop(self): """ Stop method for the plugin """ - self._model._api.logout() - self.logger.debug("Stop method called") + try: + self._model._api.logout() + self.logger.debug("Logout done") + except: + self.logger.warning("Exception during logout") self.alive = False - def _log_item_info(self, item, msg, enable_logging=True, defaulting=False): + def _log_item_info(self, item, msg: str, enable_logging=True, defaulting=False): if defaulting: self._model.append_item_issue(item, "2: " + msg, 2) else: @@ -391,12 +362,12 @@ def _log_item_info(self, item, msg, enable_logging=True, defaulting=False): if enable_logging: self.logger.info(msg + " in item " + item.path()) - def _log_item_warning(self, item, msg, enable_logging=True): + def _log_item_warning(self, item, msg: str, enable_logging=True): self._model.append_item_issue(item, "3: "+msg, 3) if enable_logging: self.logger.warning(msg + " in item " + item.path()) - def _log_item_error(self, item, msg, enable_logging=True): + def _log_item_error(self, item, msg: str, enable_logging=True): self._model.append_item_issue(item, "4: " + msg, 4) if enable_logging: self.logger.error(msg + " in item " + item.path()) @@ -409,7 +380,7 @@ def _mac_check(self, item, item_type: str, leaf_item=None): def _get_attribute_recursive(self, item, item_type: str, check=None, enable_logging=True, leaf_item=None): if item is None: - self._log_item_warning(leaf_item, "No {} attribute provided parent or".format(item_type)) + self._log_item_warning(leaf_item, "No {} attribute provided parent or".format(item_type), enable_logging) return None if leaf_item is None: leaf_item = item @@ -424,13 +395,13 @@ def _get_attribute_recursive(self, item, item_type: str, check=None, enable_logg item_type, item.path()), enable_logging) return self.get_iattr_value(item.conf, item_type) except AttributeError: - self._log_item_warning(leaf_item, "No {} attribute provided".format(item_type)) + self._log_item_warning(leaf_item, "No {} attribute provided".format(item_type), enable_logging) return None return self._get_attribute_recursive(item.return_parent(), item_type, check, enable_logging, leaf_item) def _get_one_of_attr_recursive(self, item, item_types: list, check=None, enable_logging=True, leaf_item=None): if item is None: - self._log_item_warning(leaf_item, "No {} attribute provided".format(json.dump(item_types))) + self._log_item_warning(leaf_item, "No {} attribute provided".format(json.dump(item_types)), enable_logging) return None if leaf_item is None: leaf_item = item @@ -447,7 +418,7 @@ def _get_one_of_attr_recursive(self, item, item_types: list, check=None, enable_ return self.get_iattr_value(item.conf, item_type) except AttributeError: - self._log_item_warning(leaf_item, "No {} attribute provided".format(item_type)) + self._log_item_warning(leaf_item, "No {} attribute provided".format(item_type), enable_logging) return None return self._get_one_of_attr_recursive(item.return_parent(), item_types, check, enable_logging, leaf_item) @@ -526,7 +497,7 @@ def _update_unifi_with_item(self, item, item_type, func): try: func(item) except Exception as e: - self._log_item_error(item, e, self._logging) + self._log_item_error(item, repr(e), self._logging) def update_item(self, item, caller=None, source=None, dest=None): """ @@ -655,24 +626,29 @@ def _poll_with_unifi_type(self, unifi_type, func): for item in self._model.get_items(lambda i: self._item_filter(i, UniFiConst.ATTR_TYPE, unifi_type)): try: item(func(item), self.get_shortname()) + except ConnectionError: + # kills further processing in this round. + raise except Exception as e: - self._log_item_error(item, e, self._logging) + # log the error for this specific poll type and proceed with next + self._log_item_error(item, repr(e), self._logging) def poll_device(self): """ Polls for updates of the devices connected to the controller """ - rc_before = self._model._api.get_request_count() - self._poll_with_unifi_type(UniFiConst.TYPE_CL_PRESENT, lambda i: self._get_client_presence(i)) - self._poll_with_unifi_type(UniFiConst.TYPE_CL_IP, lambda i: self._get_client_info(i, 'ip')) - self._poll_with_unifi_type(UniFiConst.TYPE_CL_HOSTNAME, lambda i: self._get_client_info(i, 'hostname')) - self._poll_with_unifi_type(UniFiConst.TYPE_CL_AT_AP, lambda i: self._check_client_at_ap(i)) - self._poll_with_unifi_type(UniFiConst.TYPE_AP_ENABLED, lambda i: self._check_ap_enabled(i)) - self._poll_with_unifi_type(UniFiConst.TYPE_SW_PORT_ENABLED, lambda i: self._check_sw_port_enabled(i)) - self._poll_with_unifi_type(UniFiConst.TYPE_SW_PORT_PROFILE, lambda i: self._get_sw_port_profile(i)) - self._poll_with_unifi_type(UniFiConst.TYPE_DV_IP, lambda i: self._get_device_info(i, 'ip')) - self._poll_with_unifi_type(UniFiConst.TYPE_DV_NAME, lambda i: self._get_device_info(i, 'name')) - self.logger.debug("Poll cycle took {} requests".format(self._model._api.get_request_count() - rc_before)) + try: + self._poll_with_unifi_type(UniFiConst.TYPE_CL_PRESENT, lambda i: self._get_client_presence(i)) + self._poll_with_unifi_type(UniFiConst.TYPE_CL_IP, lambda i: self._get_client_info(i, 'ip')) + self._poll_with_unifi_type(UniFiConst.TYPE_CL_HOSTNAME, lambda i: self._get_client_info(i, 'hostname')) + self._poll_with_unifi_type(UniFiConst.TYPE_CL_AT_AP, lambda i: self._check_client_at_ap(i)) + self._poll_with_unifi_type(UniFiConst.TYPE_AP_ENABLED, lambda i: self._check_ap_enabled(i)) + self._poll_with_unifi_type(UniFiConst.TYPE_SW_PORT_ENABLED, lambda i: self._check_sw_port_enabled(i)) + self._poll_with_unifi_type(UniFiConst.TYPE_SW_PORT_PROFILE, lambda i: self._get_sw_port_profile(i)) + self._poll_with_unifi_type(UniFiConst.TYPE_DV_IP, lambda i: self._get_device_info(i, 'ip')) + self._poll_with_unifi_type(UniFiConst.TYPE_DV_NAME, lambda i: self._get_device_info(i, 'name')) + except ConnectionError as ex: + self.logger.error("Poll failed: " + repr(ex)) def init_webinterface(self): """" From 540239a4910529163c07b71c636f34a0fa4d5a2c Mon Sep 17 00:00:00 2001 From: psilo909 Date: Tue, 25 Jun 2019 18:32:43 +0200 Subject: [PATCH 128/200] OWM: further check for None --- openweathermap/__init__.py | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/openweathermap/__init__.py b/openweathermap/__init__.py index 83b171f31..959e35369 100644 --- a/openweathermap/__init__.py +++ b/openweathermap/__init__.py @@ -183,23 +183,27 @@ def get_daily_forecast(self, s): too_far = date_requested + timedelta(days=1) wrk = [] if forecast is not None: - for entry in forecast.get('list'): - dt = int(entry.get('dt')) - if dt >= int(too_far.timestamp()): - break - if dt >= int(date_requested.timestamp()): - val = self.get_val_from_dict("/".join(sp), entry) - if isinstance(val, float) or isinstance(val, int): - wrk.append(val) - elif val is None: - self.logger.error( - "get_daily_forecast: found None value while calculating daily forecast for matchstring '{}'.".format(s)) - return 0 - else: - self.logger.error( - "get_daily_forecast: found unknown value while calculating daily forecast for matchstring '{}'; daily forecast only supported for int and float.".format( - s)) - return 0 + forecast_list = forecast.get('list') + if forecast_list is not None: + for entry in forecast_list: + dt = int(entry.get('dt')) + if dt >= int(too_far.timestamp()): + break + if dt >= int(date_requested.timestamp()): + val = self.get_val_from_dict("/".join(sp), entry) + if isinstance(val, float) or isinstance(val, int): + wrk.append(val) + elif val is None: + self.logger.error( + "get_daily_forecast: found None value while calculating daily forecast for matchstring '{}'.".format(s)) + return 0 + else: + self.logger.error( + "get_daily_forecast: found unknown value while calculating daily forecast for matchstring '{}'; daily forecast only supported for int and float.".format( + s)) + return 0 + else: + self.logger.error("get_daily_forecast: forecast.get('list') is None.") else: self.logger.error("get_daily_forecast: forecast data is None.") return 0 From f8ec2bd962551c37157e35caabe62fb0986c92f4 Mon Sep 17 00:00:00 2001 From: psilo909 Date: Tue, 25 Jun 2019 18:33:09 +0200 Subject: [PATCH 129/200] Webservices: using item api for return_item() --- webservices/__init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/webservices/__init__.py b/webservices/__init__.py index 72113af29..75692a5de 100644 --- a/webservices/__init__.py +++ b/webservices/__init__.py @@ -329,7 +329,7 @@ def items(self, item_path=None, value=None, mode=None): items[item_data['path']] = item_data return items else: - item = self.plugin.get_sh().return_item(item_path) + item = self.plugin.items.return_item(item_path) if item is None: return {"Error": "No item with item path %s found." % item_path} @@ -423,7 +423,7 @@ def items(self, item_path=None, mode=None): items[item_data['path']] = item_data return items else: - item = self.plugin.get_sh().return_item(item_path) + item = self.plugin.items.return_item(item_path) if item is None: return {"Error": "No item with item path %s found." % item_path} From ca74109ffa4763b6074e0ca0e5497ac2d8c142f4 Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Thu, 27 Jun 2019 20:55:37 +0200 Subject: [PATCH 130/200] Poll-Cycle time / minor fixes / links to manual Added configurability of poll-cycle time minor fixes Addition of manual links for port-profiles --- unifi/README.md | 9 +++++---- unifi/__init__.py | 25 ++++++++++++++----------- unifi/locale.yaml | 2 +- unifi/plugin.yaml | 11 +++++++++-- unifi/webif/templates/index.html | 9 ++------- 5 files changed, 31 insertions(+), 25 deletions(-) diff --git a/unifi/README.md b/unifi/README.md index 6c3ed09ea..f2f73b650 100644 --- a/unifi/README.md +++ b/unifi/README.md @@ -41,10 +41,11 @@ Please refer to the documentation generated from plugin.yaml metadata. Example: ``` unifi: -plugin_name: unifi -unifi_user: ubnt #User Name -unifi_password: ubnt #Password -unifi_controller_url: https://192.168.1.12:8443 # URL of YOUR controller / cloud-key + plugin_name: unifi + unifi_user: ubnt # User Name + unifi_password: ubnt # Password + unifi_controller_url: https://192.168.1.12:8443 # URL of YOUR controller / cloud-key + poll_cycle_time: 60 # Cycle time for data retrieval in seconds ``` diff --git a/unifi/__init__.py b/unifi/__init__.py index b51921bd1..e622a9b2b 100644 --- a/unifi/__init__.py +++ b/unifi/__init__.py @@ -46,6 +46,7 @@ class UniFiConst(object): PARAMETER_USER = 'unifi_user' PARAMETER_PWD = 'unifi_password' PARAMETER_SITE_ID = 'unifi_site_id' + PARAMETER_CYCLE_TIME = 'poll_cycle_time' ATTR_TYPE = 'unifi_type' TYPE_CL_PRESENT = 'client_present' @@ -312,7 +313,7 @@ def __init__(self, sh, *args, **kwargs): # cycle time in seconds, only needed, if hardware/interface needs to be # polled for value changes by adding a scheduler entry in the run method of this plugin # (maybe you want to make it a plugin parameter?) - self._cycle = 60 + self._cycle = self.get_parameter_value(UniFiConst.PARAMETER_CYCLE_TIME) self._logging = True self.init_webinterface() @@ -380,7 +381,7 @@ def _mac_check(self, item, item_type: str, leaf_item=None): def _get_attribute_recursive(self, item, item_type: str, check=None, enable_logging=True, leaf_item=None): if item is None: - self._log_item_warning(leaf_item, "No {} attribute provided parent or".format(item_type), enable_logging) + self._log_item_warning(leaf_item, "No {} attribute provided".format(item_type), enable_logging) return None if leaf_item is None: leaf_item = item @@ -473,10 +474,12 @@ def parse_item(self, item): return prof_on = self._get_attribute_recursive(item, UniFiConst.ATTR_SW_PORT_PROF_ON) if prof_on is None: - self._log_item_info(item, "Will use 'All' as Port Profile for on", defaulting=True) + self._log_item_info( + item, "Will use 'All' as port profile for on (https://help.ubnt.com/hc/en-us/articles/219654087-UniFi-Using-VLANs-with-UniFi-Wireless-Routing-Switching-Hardware#USW)", defaulting=True) prof_off = self._get_attribute_recursive(item, UniFiConst.ATTR_SW_PORT_PROF_OFF) if prof_off is None: - self._log_item_info(item, "Will use 'Disabled' as Port Profile for off", defaulting=True) + self._log_item_info( + item, "Will use 'Disabled' as port profile for off (https://help.ubnt.com/hc/en-us/articles/219654087-UniFi-Using-VLANs-with-UniFi-Wireless-Routing-Switching-Hardware#USW)", defaulting=True) self._model.append_item(item) return self.update_item @@ -588,17 +591,17 @@ def _get_sw_port_profile(self, i): return None except UniFiDataException as e: self._log_item_warning( - i, "Unable to determine current switch-profile for switch {}, error: {}".format(sw_mac, e)) + i, "Unable to determine current switch-profile for switch {}, error: {}".format(sw_mac, e), enable_logging=self._logging) return None def _check_sw_port_enabled(self, item): + rslt = self._get_sw_port_profile(item) + pp_on = self._get_attribute_recursive( item, UniFiConst.ATTR_SW_PORT_PROF_ON, enable_logging=self._logging) pp_off = self._get_attribute_recursive( item, UniFiConst.ATTR_SW_PORT_PROF_OFF, enable_logging=self._logging) - rslt = self._get_sw_port_profile(item) - if rslt == pp_off: return False elif rslt == pp_on: @@ -606,7 +609,7 @@ def _check_sw_port_enabled(self, item): elif rslt is None: return None else: - self._log_item_warning(item, "Current port-profile \"{}\" doesn't match \"{}\" (on) or \"{}\" (off)".format( + self._log_item_warning(item, "Current port profile \"{}\" doesn't match \"{}\" (on) or \"{}\" (off) (https://help.ubnt.com/hc/en-us/articles/219654087-UniFi-Using-VLANs-with-UniFi-Wireless-Routing-Switching-Hardware#USW)".format( rslt, pp_on, pp_off), enable_logging=self._logging) return None @@ -630,7 +633,7 @@ def _poll_with_unifi_type(self, unifi_type, func): # kills further processing in this round. raise except Exception as e: - # log the error for this specific poll type and proceed with next + # log the error for this specific poll type and proceed with next item self._log_item_error(item, repr(e), self._logging) def poll_device(self): @@ -638,13 +641,13 @@ def poll_device(self): Polls for updates of the devices connected to the controller """ try: + self._poll_with_unifi_type(UniFiConst.TYPE_SW_PORT_ENABLED, lambda i: self._check_sw_port_enabled(i)) + self._poll_with_unifi_type(UniFiConst.TYPE_SW_PORT_PROFILE, lambda i: self._get_sw_port_profile(i)) self._poll_with_unifi_type(UniFiConst.TYPE_CL_PRESENT, lambda i: self._get_client_presence(i)) self._poll_with_unifi_type(UniFiConst.TYPE_CL_IP, lambda i: self._get_client_info(i, 'ip')) self._poll_with_unifi_type(UniFiConst.TYPE_CL_HOSTNAME, lambda i: self._get_client_info(i, 'hostname')) self._poll_with_unifi_type(UniFiConst.TYPE_CL_AT_AP, lambda i: self._check_client_at_ap(i)) self._poll_with_unifi_type(UniFiConst.TYPE_AP_ENABLED, lambda i: self._check_ap_enabled(i)) - self._poll_with_unifi_type(UniFiConst.TYPE_SW_PORT_ENABLED, lambda i: self._check_sw_port_enabled(i)) - self._poll_with_unifi_type(UniFiConst.TYPE_SW_PORT_PROFILE, lambda i: self._get_sw_port_profile(i)) self._poll_with_unifi_type(UniFiConst.TYPE_DV_IP, lambda i: self._get_device_info(i, 'ip')) self._poll_with_unifi_type(UniFiConst.TYPE_DV_NAME, lambda i: self._get_device_info(i, 'name')) except ConnectionError as ex: diff --git a/unifi/locale.yaml b/unifi/locale.yaml index 912b4a581..9cd18593f 100644 --- a/unifi/locale.yaml +++ b/unifi/locale.yaml @@ -1,11 +1,11 @@ # translations for the web interface plugin_translations: 'NumFromStart': {'de': 'Anzahl Requests seit Start', 'en': 'Number of requests since start of plugin'} - 'Probleme': {'de': '=', 'en': 'Problems'} 'Pfad': {'de': '=', 'en': 'Path'} 'Typ': {'de': '=', 'en': 'Type'} 'Item Wert': {'de': '=', 'en': 'Item value'} 'Letztes Update': {'de': '=', 'en': 'Last update'} 'Letzter Change': {'de': '=', 'en': 'Last change'} + 'PollCycle': {'de': 'Abfragezyklus (s)', 'en': 'Poll cycle (s)'} diff --git a/unifi/plugin.yaml b/unifi/plugin.yaml index dd95e98a6..f1d7d3d70 100644 --- a/unifi/plugin.yaml +++ b/unifi/plugin.yaml @@ -6,7 +6,7 @@ plugin: de: 'Plugin um einige Features von UniFi Controllern auszulesen und fernzusteuern' en: 'Plugin to read and control some features of UniFi Controllers' maintainer: jentz1986 -# tester: # Who tests this plugin? + tester: Onkelandy # Who tests this plugin? state: develop # change to ready when done with development keywords: wifi unifi ubiquiti network # documentation: https://github.com/smarthomeNG/smarthome/wiki/CLI-Plugin # url of documentation (wiki) page @@ -53,6 +53,13 @@ parameters: description: de: 'UniFi Site Id.' en: 'UniFi Site Id.' + + poll_cycle_time: + type: int + default: 60 + description: + de: '(optional) Zeit zwischen zwei Updateläufen. Default ist 60 Sekunden.' + en: '(optional) Time period between two update cycles. Default is 60 seconds.' item_attributes: # Definition of item attributes defined by this plugin (enter 'item_attributes: NONE', if section should be empty) @@ -99,7 +106,7 @@ item_attributes: unifi_switch_port_no: type: int valid_min: 1 - valid_max: 50 + valid_max: 54 description: de: 'Definition der Portnummer an den ein Gerät an einen UniFi Switch angeschlossen ist' en: 'Definition of the port-number the device is connected to a UniFi-switch.' diff --git a/unifi/webif/templates/index.html b/unifi/webif/templates/index.html index 0af1aa216..134020a98 100644 --- a/unifi/webif/templates/index.html +++ b/unifi/webif/templates/index.html @@ -14,8 +14,8 @@ -   -   + {{ _('PollCycle') }} + {{ p._cycle }} Username {{ p._model.get_controller_user() }} @@ -81,11 +81,6 @@ {% for item in p._model.get_items() %} - {% if p.get_instance_name() %} - {% set instance_append = "@"+p.get_instance_name() %} - {% else %} - {% set instance_append = "" %} - {% endif %}
{% set warn_level = p._model.get_item_issues(item.id()).get_worst_level() %} From 518fc3b587d94ddc5c6cc697cf9a8819e819fcb6 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Fri, 28 Jun 2019 22:16:49 +0200 Subject: [PATCH 131/200] itemsApi.return_item instead of sh.return_item --- stateengine/StateEngineTools.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/stateengine/StateEngineTools.py b/stateengine/StateEngineTools.py index 014f875fb..47b7ef623 100755 --- a/stateengine/StateEngineTools.py +++ b/stateengine/StateEngineTools.py @@ -21,6 +21,8 @@ import datetime from ast import literal_eval # import logging +from lib.item import Items +itemsApi = Items.get_instance() # # Some general tool functions @@ -178,7 +180,7 @@ def find_attribute(smarthome, base_item, attribute, recursion_depth=0): if "se_use" in base_item.conf: if recursion_depth > 5: return None - use_item = smarthome.return_item(base_item.conf["se_use"]) + use_item = itemsApi.return_item(base_item.conf["se_use"]) if use_item is not None: result = find_attribute(smarthome, use_item, attribute, recursion_depth + 1) if result is not None: @@ -234,7 +236,7 @@ def get_original_caller(smarthome, caller, source, item=None): original_source = source original_item = item while original_caller == "Eval": - original_item = smarthome.return_item(original_source) + original_item = itemsApi.return_item(original_source) if original_item is None: break original_changed_by = original_item.changed_by() From bc615f47110cc432cdb3c7040398d9134bcd5d80 Mon Sep 17 00:00:00 2001 From: psilo909 Date: Sun, 30 Jun 2019 07:43:09 +0200 Subject: [PATCH 132/200] AVM: Fix for instances without call monitor --- avm/__init__.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/avm/__init__.py b/avm/__init__.py index 6164af726..203a2b45a 100644 --- a/avm/__init__.py +++ b/avm/__init__.py @@ -562,6 +562,8 @@ def __init__(self, sh, *args, **kwargs): self.get_contact_name_by_phone_number, self.get_parameter_value('call_monitor_incoming_filter'), self) self._monitoring_service.connect() + else: + self._monitoring_service = None self._call_monitor_incoming_filter = self.get_parameter_value('call_monitor_incoming_filter') @@ -801,8 +803,9 @@ def parse_item(self, item): if element['Type'] in ['3', '4']: item('outgoing') break - if self._monitoring_service is not None: - self._monitoring_service.register_item(item) + if self._call_monitor: + if self._monitoring_service is not None: + self._monitoring_service.register_item(item) elif self.get_iattr_value(item.conf, 'avm_data_type') in ['call_duration_incoming', 'call_duration_outgoing']: # items specific to call monitor duration calculation # initally get data from calllist From 56e42307167d01ca9441568a9182102b4b6d57c6 Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Sun, 30 Jun 2019 13:30:34 +0200 Subject: [PATCH 133/200] Removed spaces from itemnames / Cleanup Removed unneccessary imports Added my email Removed Spaces in item name generation --- unifi/__init__.py | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/unifi/__init__.py b/unifi/__init__.py index e622a9b2b..cb314dd25 100644 --- a/unifi/__init__.py +++ b/unifi/__init__.py @@ -1,7 +1,7 @@ #!/usr/bin/env python3 # vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab ######################################################################### -# Copyright 2019 Jens Höppner +# Copyright 2019 Jens Höppner mail@jens-hoeppner.de ######################################################################### # This file is part of SmartHomeNG. # @@ -23,7 +23,6 @@ # ######################################################################### -from requests import Session from typing import Pattern, Dict, Union import re from jinja2 import Environment, FileSystemLoader @@ -34,8 +33,6 @@ from plugins.unifi.ubiquiti.unifi import API as UniFiAPI from plugins.unifi.ubiquiti.unifi import DataException as UniFiDataException import ruamel.yaml as yaml -from ruamel.yaml.comments import CommentedMap -from ruamel.yaml.compat import ordereddict from requests.exceptions import ConnectionError import json import traceback @@ -140,7 +137,7 @@ def get_items(self, filter=None): def _get_device_node_item(self, node_data, parent_type=""): n = node_data['node'] - node_key = re.sub('[^0-9a-zA-Z_]+', '_', node_data['node']['key'].lower()).replace("__", "_") + node_key = re.sub('[^0-9a-z_]+', '_', node_data['node']['key'].lower().replace(' ', '_')).replace("__", "_") node_body = {} if n['type'] == "wired_client": @@ -484,7 +481,7 @@ def parse_item(self, item): return self.update_item else: - self._log_item_error(item, "unifi_type %s unknown" % (i_attr)) + self._log_item_error(item, "{} {} unknown".format(UniFiConst.ATTR_TYPE, i_attr)) self._model.append_item(item) def parse_logic(self, logic): From d72346271815c0358d4d7375bf650aa1877cd05d Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Sun, 30 Jun 2019 14:33:58 +0200 Subject: [PATCH 134/200] Update plugin.yaml fixed indentation and added psilo as tester. --- unifi/plugin.yaml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/unifi/plugin.yaml b/unifi/plugin.yaml index f1d7d3d70..bd223b94c 100644 --- a/unifi/plugin.yaml +++ b/unifi/plugin.yaml @@ -1,12 +1,12 @@ # Metadata for the plugin plugin: # Global plugin attributes - type: interface # plugin type (gateway, interface, protocol, system, web) + type: interface # plugin type (gateway, interface, protocol, system, web) description: de: 'Plugin um einige Features von UniFi Controllern auszulesen und fernzusteuern' en: 'Plugin to read and control some features of UniFi Controllers' maintainer: jentz1986 - tester: Onkelandy # Who tests this plugin? + tester: Onkelandy, psilo909 # Who tests this plugin? state: develop # change to ready when done with development keywords: wifi unifi ubiquiti network # documentation: https://github.com/smarthomeNG/smarthome/wiki/CLI-Plugin # url of documentation (wiki) page @@ -14,7 +14,7 @@ plugin: version: 1.6.1 # Plugin version sh_minversion: 1.6 # minimum shNG version to use this plugin -# sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) +# sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) multi_instance: False # plugin supports multi instance restartable: True classname: UniFiControllerClient # class containing the plugin From cfecd0a1ef958ea7cdca3d2ad77183d350f2c14f Mon Sep 17 00:00:00 2001 From: psilo909 Date: Sun, 30 Jun 2019 16:07:06 +0200 Subject: [PATCH 135/200] removed instance as automatically handled by admin interface --- avm/plugin.yaml | 6 ------ enigma2/plugin.yaml | 7 ------- miflora/plugin.yaml | 9 --------- openweathermap/plugin.yaml | 6 ------ 4 files changed, 28 deletions(-) diff --git a/avm/plugin.yaml b/avm/plugin.yaml index cc40924b9..5d107f103 100755 --- a/avm/plugin.yaml +++ b/avm/plugin.yaml @@ -76,12 +76,6 @@ parameters: description: de: '(optional) Spezielle Rufnummern ausfiltern, die vom Callmonitor ignoriert werden sollen.' en: '(optional) Filter only specific numbers to be watched by call monitor' - instance: - type: str - default: '' - description: - de: 'Eindeutiger Identifier für die Instanz des Plugins. Kann bei nur einer konfigurierten Instanz des Plugins entfallen.' - en: 'Unique identifier for each instance of the plugin. Can be omitted if only one device instance of the plugin is configured.' item_attributes: # Definition of item attributes defined by this plugin diff --git a/enigma2/plugin.yaml b/enigma2/plugin.yaml index 86f8e4f0c..be5e260a8 100755 --- a/enigma2/plugin.yaml +++ b/enigma2/plugin.yaml @@ -69,13 +69,6 @@ parameters: description: de: '(optional) Zeit zwischen zwei Updateläufen für besondere Items, die schneller geupdated werden. Default ist 10 Sekunden.' en: '(optional) Timeperiod between two update cycles for items, which are updated faster. Default is 10 seconds.' - instance: - type: str - default: '' - description: - de: 'Eindeutiger Identifier für die Instanz des Plugins. Kann bei nur einer konfigurierten Instanz des Plugins entfallen.' - en: 'Unique identifier for each instance of the plugin. Can be omitted if only one device instance of the plugin is configured.' - item_attributes: # Definition of item attributes defined by this plugin diff --git a/miflora/plugin.yaml b/miflora/plugin.yaml index 6c61b75e6..56b1e8317 100644 --- a/miflora/plugin.yaml +++ b/miflora/plugin.yaml @@ -27,7 +27,6 @@ parameters: description: de: 'Bluetooth-Adresse des MiFlora Pflanzensensors (mit "hcitool lescan" herauszufinden).' en: 'Bluetooth address of MiFlora plant sensor (find out with "hcitool lescan").' - cycle: type: int default: 300 @@ -36,14 +35,6 @@ parameters: de: '(optional) Dieser Parameter muss normalerweise nicht angegeben werden. Er erlaubt es die Update-Frquenz anzupassen (Standard: alle 300 Sekunden).' en: "(optional) This parameter usually doesn't have to be specified. It allows to change the update frequency (cycle every 300 seconds)." - instance: - type: str - default: '' - description: - de: 'Eindeutiger Identifier für die Instanz des Plugins. Kann bei nur einer konfigurierten Instanz des Plugins entfallen.' - en: 'Unique identifier for each instance of the plugin. Can be omitted if only one device instance of the plugin is configured.' - - item_attributes: # Definition of item attributes defined by this plugin miflora_data_type: diff --git a/openweathermap/plugin.yaml b/openweathermap/plugin.yaml index 1e91935dd..7ea1496cc 100644 --- a/openweathermap/plugin.yaml +++ b/openweathermap/plugin.yaml @@ -62,12 +62,6 @@ parameters: description: de: '(optional) Zeit zwischen zwei Updateläufen. Default ist 300 Sekunden.' en: '(optional) Time period between two update cycles. Default is 300 seconds.' - instance: - type: str - default: '' - description: - de: 'Eindeutiger Identifier für die Instanz des Plugins. Kann bei nur einer konfigurierten Instanz des Plugins entfallen.' - en: 'Unique identifier for each instance of the plugin. Can be omitted if only one device instance of the plugin is configured.' item_attributes: # Definition of item attributes defined by this plugin From 4c0f20286a6e3c5a96b3e5b39b2a2656e4ade371 Mon Sep 17 00:00:00 2001 From: psilo909 Date: Sun, 30 Jun 2019 16:09:06 +0200 Subject: [PATCH 136/200] removed instance --- database/plugin.yaml | 7 ------- 1 file changed, 7 deletions(-) diff --git a/database/plugin.yaml b/database/plugin.yaml index 9267f21c7..767d19559 100755 --- a/database/plugin.yaml +++ b/database/plugin.yaml @@ -49,13 +49,6 @@ parameters: description: de: 'Genauigkeit der aus der Datenbank ausgelesenen Werte (Nachkommastellen).' en: 'Precision of values read from database (digits after comma).' - instance: - type: str - default: '' - description: - de: 'Eindeutiger Identifier für die Instanz des Plugins. Kann bei nur einer konfigurierten Instanz des Plugins entfallen.' - en: 'Unique identifier for each instance of the plugin. Can be omitted if only one device instance of the plugin is configured.' - item_attributes: # Definition of item attributes defined by this plugin From bdc41580283ec86f0bbafd1782580c7e7eedf785 Mon Sep 17 00:00:00 2001 From: psilo909 Date: Sun, 30 Jun 2019 17:03:39 +0200 Subject: [PATCH 137/200] Added curl to query first phone book --- avm/__init__.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/avm/__init__.py b/avm/__init__.py index 203a2b45a..0b3a6d472 100644 --- a/avm/__init__.py +++ b/avm/__init__.py @@ -979,6 +979,8 @@ def get_phone_numbers_by_name(self, name=''): Searches the phonebook for a contact by a given name | Uses: http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/x_contactSCPD.pdf + | CURL for testing which phonebooks exists: + | curl --anyauth -u user:'password' 'https://192.168.178.1:49443/upnp/control/x_contact' -H 'Content-Type: text/xml; charset="utf-8"' -H 'SoapAction: urn:dslforum-org:service:X_AVM-DE_OnTel:1#GetPhonebook' -d ' 0 ' -s -k | Implementation of this method used information from https://www.symcon.de/forum/threads/25745-FritzBox-mit-SOAP-auslesen-und-steuern :param name: partial or full name of contact as defined in the phonebook. From 6cccc1d2291fd4f2fc25188dfd1a51c6b60d04f6 Mon Sep 17 00:00:00 2001 From: psilo909 Date: Sun, 30 Jun 2019 17:06:53 +0200 Subject: [PATCH 138/200] Added curl --- avm/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/avm/__init__.py b/avm/__init__.py index 0b3a6d472..806c95de3 100644 --- a/avm/__init__.py +++ b/avm/__init__.py @@ -1051,7 +1051,8 @@ def get_calllist(self, filter_incoming=''): Returns an array of all calllist entries Uses: http://avm.de/fileadmin/user_upload/Global/Service/Schnittstellen/x_contactSCPD.pdf - + Curl for testing if the calllist url is returned: + curl --anyauth -u user:'password' 'https://192.168.178.1:49443/upnp/control/x_contact' -H 'Content-Type: text/xml; charset="utf-8"' -H 'SoapAction: urn:dslforum-org:service:X_AVM-DE_OnTel:1#GetCallList' -d ' 0 ' -s -k :param: Filter to filter incoming calls to a specific destination phone number :return: Array of calllist entries with the attributes 'Id','Type','Caller','Called','CalledNumber','Name','Numbertype','Device','Port','Date','Duration' (some optional) """ From 9944640dd628975911db26a8eb4e691bfbc9dd9a Mon Sep 17 00:00:00 2001 From: psilo909 Date: Sun, 30 Jun 2019 17:35:02 +0200 Subject: [PATCH 139/200] AVM: added optional parameter phonebook_id to get_calllist --- avm/__init__.py | 5 +++-- avm/plugin.yaml | 7 +++++++ 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/avm/__init__.py b/avm/__init__.py index 806c95de3..6fbc2bf1d 100644 --- a/avm/__init__.py +++ b/avm/__init__.py @@ -1046,7 +1046,7 @@ def get_phone_numbers_by_name(self, name=''): return result_numbers - def get_calllist(self, filter_incoming=''): + def get_calllist(self, filter_incoming='', phonebook_id=0): """ Returns an array of all calllist entries @@ -1054,6 +1054,7 @@ def get_calllist(self, filter_incoming=''): Curl for testing if the calllist url is returned: curl --anyauth -u user:'password' 'https://192.168.178.1:49443/upnp/control/x_contact' -H 'Content-Type: text/xml; charset="utf-8"' -H 'SoapAction: urn:dslforum-org:service:X_AVM-DE_OnTel:1#GetCallList' -d ' 0 ' -s -k :param: Filter to filter incoming calls to a specific destination phone number + :param: ID of the Phonebook (default: 0) :return: Array of calllist entries with the attributes 'Id','Type','Caller','Called','CalledNumber','Name','Numbertype','Device','Port','Date','Duration' (some optional) """ @@ -1061,7 +1062,7 @@ def get_calllist(self, filter_incoming=''): headers = self._header.copy() action = "GetCallList" headers['SOAPACTION'] = "%s#%s" % (self._urn_map['OnTel'], action) - soap_data = self._assemble_soap_data(action, self._urn_map['OnTel'], {'NewPhonebookID': 0}) + soap_data = self._assemble_soap_data(action, self._urn_map['OnTel'], {'NewPhonebookID': phonebook_id}) try: response = self._session.post(url, data=soap_data, timeout=self._timeout, headers=headers, auth=HTTPDigestAuth(self._fritz_device.get_user(), diff --git a/avm/plugin.yaml b/avm/plugin.yaml index 5d107f103..e8a12f61b 100755 --- a/avm/plugin.yaml +++ b/avm/plugin.yaml @@ -203,9 +203,16 @@ plugin_functions: parameters: filter_incoming: type: str + default: '' description: de: "Filter, um nur die Anrufe zu erhalten, die zu einer bestimmten angerufenen Nummer gehören." en: "Filter to filter calls to a specific destination phone number." + phonebook_id: + type: int + default: 0 + description: + de: "ID des Telefonbuchs." + en: "ID of the phone book." get_contact_name_by_phone_number: type: str From 3fa578a736842b6743a45578ccd689fc372b66a5 Mon Sep 17 00:00:00 2001 From: psilo909 Date: Sun, 30 Jun 2019 17:38:06 +0200 Subject: [PATCH 140/200] AVM: get_contact_name_by_phone_number extended by phonebook_id --- avm/__init__.py | 7 ++++--- avm/plugin.yaml | 10 ++++++++-- 2 files changed, 12 insertions(+), 5 deletions(-) diff --git a/avm/__init__.py b/avm/__init__.py index 6fbc2bf1d..bbc9747e6 100644 --- a/avm/__init__.py +++ b/avm/__init__.py @@ -974,7 +974,7 @@ def get_contact_name_by_phone_number(self, phone_number=''): return phone_number - def get_phone_numbers_by_name(self, name=''): + def get_phone_numbers_by_name(self, name='', phonebook_id=0): """ Searches the phonebook for a contact by a given name @@ -984,13 +984,14 @@ def get_phone_numbers_by_name(self, name=''): | Implementation of this method used information from https://www.symcon.de/forum/threads/25745-FritzBox-mit-SOAP-auslesen-und-steuern :param name: partial or full name of contact as defined in the phonebook. + :param: ID of the phone book (default: 0) :return: dict of found contact names (keys) with each containing an array of dicts (keys: type, number) """ url = self._build_url("/upnp/control/x_contact") headers = self._header.copy() action = "GetPhonebook" headers['SOAPACTION'] = "%s#%s" % (self._urn_map['OnTel'], action) - soap_data = self._assemble_soap_data(action, self._urn_map['OnTel'], {'NewPhonebookID': 0}) + soap_data = self._assemble_soap_data(action, self._urn_map['OnTel'], {'NewPhonebookID': phonebook_id}) try: response = self._session.post(url, data=soap_data, timeout=self._timeout, headers=headers, auth=HTTPDigestAuth(self._fritz_device.get_user(), @@ -1054,7 +1055,7 @@ def get_calllist(self, filter_incoming='', phonebook_id=0): Curl for testing if the calllist url is returned: curl --anyauth -u user:'password' 'https://192.168.178.1:49443/upnp/control/x_contact' -H 'Content-Type: text/xml; charset="utf-8"' -H 'SoapAction: urn:dslforum-org:service:X_AVM-DE_OnTel:1#GetCallList' -d ' 0 ' -s -k :param: Filter to filter incoming calls to a specific destination phone number - :param: ID of the Phonebook (default: 0) + :param: ID of the phone book (default: 0) :return: Array of calllist entries with the attributes 'Id','Type','Caller','Called','CalledNumber','Name','Numbertype','Device','Port','Date','Duration' (some optional) """ diff --git a/avm/plugin.yaml b/avm/plugin.yaml index e8a12f61b..567f1695a 100755 --- a/avm/plugin.yaml +++ b/avm/plugin.yaml @@ -211,8 +211,8 @@ plugin_functions: type: int default: 0 description: - de: "ID des Telefonbuchs." - en: "ID of the phone book." + de: "ID des Telefonbuchs, in dem nachgeschlagen werden soll." + en: "ID of the phone book, in which numbers should be looked up." get_contact_name_by_phone_number: type: str @@ -225,6 +225,12 @@ plugin_functions: description: de: "Vollständige Telefonnummer" en: "Complete phone number" + phonebook_id: + type: int + default: 0 + description: + de: "ID des Telefonbuchs, in dem nachgeschlagen werden soll." + en: "ID of the phone book, in which numbers should be looked up." get_host_details: type: dict(str) From ae03921749a981c51b94c772c2ad406363e29b28 Mon Sep 17 00:00:00 2001 From: psilo909 Date: Sun, 30 Jun 2019 17:40:53 +0200 Subject: [PATCH 141/200] AVM: more extensions for multi phonebook support --- avm/__init__.py | 5 +++-- avm/plugin.yaml | 6 ++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/avm/__init__.py b/avm/__init__.py index bbc9747e6..d6e03c0e2 100644 --- a/avm/__init__.py +++ b/avm/__init__.py @@ -914,7 +914,7 @@ def update_item(self, item, caller=None, source=None, dest=None): None) # reset response cache self._update_wlan_config(citem) # immediately update remaining guest time - def get_contact_name_by_phone_number(self, phone_number=''): + def get_contact_name_by_phone_number(self, phone_number='', phonebook_id=0): """ Searches the phonebook for a contact by a given (complete) phone number @@ -922,13 +922,14 @@ def get_contact_name_by_phone_number(self, phone_number=''): | Implementation of this method used information from https://www.symcon.de/forum/threads/25745-FritzBox-mit-SOAP-auslesen-und-steuern :param phone_number: full phone number of contact + :param: ID of the phone book (default: 0) :return: string of the contact's real name """ url = self._build_url("/upnp/control/x_contact") headers = self._header.copy() action = "GetPhonebook" headers['SOAPACTION'] = "%s#%s" % (self._urn_map['OnTel'], action) - soap_data = self._assemble_soap_data(action, self._urn_map['OnTel'], {'NewPhonebookID': 0}) + soap_data = self._assemble_soap_data(action, self._urn_map['OnTel'], {'NewPhonebookID': phonebook_id}) try: response = self._session.post(url, data=soap_data, timeout=self._timeout, headers=headers, diff --git a/avm/plugin.yaml b/avm/plugin.yaml index 567f1695a..06bbe113b 100755 --- a/avm/plugin.yaml +++ b/avm/plugin.yaml @@ -279,6 +279,12 @@ plugin_functions: description: de: "Anteiliger oder vollständiger Name des Kontakts." en: "Partial or full name of the contact." + phonebook_id: + type: int + default: 0 + description: + de: "ID des Telefonbuchs, in dem nachgeschlagen werden soll." + en: "ID of the phone book, in which numbers should be looked up." is_host_active: type: bool From be8f9189a80c579417b333f0e06fb68befa03fc9 Mon Sep 17 00:00:00 2001 From: psilo909 Date: Sun, 30 Jun 2019 17:42:42 +0200 Subject: [PATCH 142/200] AVM: parameter indent --- avm/plugin.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/avm/plugin.yaml b/avm/plugin.yaml index 06bbe113b..57eb20190 100755 --- a/avm/plugin.yaml +++ b/avm/plugin.yaml @@ -279,12 +279,12 @@ plugin_functions: description: de: "Anteiliger oder vollständiger Name des Kontakts." en: "Partial or full name of the contact." - phonebook_id: - type: int - default: 0 - description: - de: "ID des Telefonbuchs, in dem nachgeschlagen werden soll." - en: "ID of the phone book, in which numbers should be looked up." + phonebook_id: + type: int + default: 0 + description: + de: "ID des Telefonbuchs, in dem nachgeschlagen werden soll." + en: "ID of the phone book, in which numbers should be looked up." is_host_active: type: bool From 2589ba949531db4706d1e6304a93127a315a5403 Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Mon, 1 Jul 2019 20:50:52 +0200 Subject: [PATCH 143/200] Separated and harmonized Item-Key Generation --- unifi/__init__.py | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/unifi/__init__.py b/unifi/__init__.py index cb314dd25..513ed0bc9 100644 --- a/unifi/__init__.py +++ b/unifi/__init__.py @@ -135,9 +135,14 @@ def get_items(self, filter=None): to_ret.append(i) return to_ret + def _generate_item_key(self, source:str): + step1 = source.lower().replace(' ', '_') + step2 = re.sub('[^0-9a-z_]+', '_', step1) + return step2.replace("___", "_").replace("__", "_") + def _get_device_node_item(self, node_data, parent_type=""): n = node_data['node'] - node_key = re.sub('[^0-9a-z_]+', '_', node_data['node']['key'].lower().replace(' ', '_')).replace("__", "_") + node_key = self._generate_item_key(n['key']) node_body = {} if n['type'] == "wired_client": @@ -240,7 +245,7 @@ def get_item_hierarchy(self): model['unifi_network'] = {} model['unifi_network']['wifi_clients'] = {} for wlc_data in hr['wireless_clients']: - wlc_key = ("client_" + wlc_data['name']).lower().replace('.', '_').replace('-', '_') + wlc_key = "client_" + self._generate_item_key(wlc_data['name']) wlc_body = {} wlc_body['hostname'] = {} wlc_body['hostname']['type'] = 'str' From 14f6ab0b2d24cbfa1716cea9e8077b419a8cdcaf Mon Sep 17 00:00:00 2001 From: onkelandy Date: Tue, 2 Jul 2019 07:52:20 +0200 Subject: [PATCH 144/200] fix version number --- stateengine/__init__.py | 2 +- stateengine/plugin.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/stateengine/__init__.py b/stateengine/__init__.py index 28183d5bc..df618510b 100755 --- a/stateengine/__init__.py +++ b/stateengine/__init__.py @@ -33,7 +33,7 @@ class StateEngine(SmartPlugin): - PLUGIN_VERSION = '1.6' + PLUGIN_VERSION = '1.6.0' # Constructor # noinspection PyUnusedLocal,PyMissingConstructor diff --git a/stateengine/plugin.yaml b/stateengine/plugin.yaml index 6033e0723..d0cbd3874 100755 --- a/stateengine/plugin.yaml +++ b/stateengine/plugin.yaml @@ -26,7 +26,7 @@ plugin: documentation: https://www.smarthomeng.de/user/plugins/stateengine/user_doc.html support: https://knx-user-forum.de/forum/supportforen/smarthome-py/1303071-stateengine-plugin-support - version: 1.6 + version: 1.6.0 sh_minversion: 1.6 multi_instance: False classname: StateEngine From 09841569e377fba97efdcfc33fabaebf32888f76 Mon Sep 17 00:00:00 2001 From: psilo909 Date: Tue, 2 Jul 2019 14:47:11 +0200 Subject: [PATCH 145/200] WithingsHealth, AVM: added information that plugin set item values --- avm/__init__.py | 184 ++++++++++++++++++------------------ avm/plugin.yaml | 2 +- withings_health/__init__.py | 52 +++++----- 3 files changed, 119 insertions(+), 119 deletions(-) diff --git a/avm/__init__.py b/avm/__init__.py index d6e03c0e2..599ff9165 100644 --- a/avm/__init__.py +++ b/avm/__init__.py @@ -263,19 +263,19 @@ def _trigger(self, call_from, call_to, time, callid, event, branch): # in each case set current call event and direction for item in self._items: if self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') == 'call_event': - item(event.lower()) + item(event.lower(), self._plugin_instance.get_shortname()) if self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') == 'call_direction': if event == 'RING': - item("incoming") + item("incoming", self._plugin_instance.get_shortname()) else: - item("outgoing") + item("outgoing", self._plugin_instance.get_shortname()) # call is incoming if event == 'RING': # process "trigger items" for trigger_item in self._trigger_items: if self._plugin_instance.get_iattr_value(trigger_item.conf, 'avm_data_type') == 'monitor_trigger': - trigger_item(0) + trigger_item(0, self._plugin_instance.get_shortname()) self._plugin_instance.logger.debug(self._plugin_instance.get_iattr_value(trigger_item.conf, 'avm_data_type') + " " + trigger_item.conf['avm_incoming_allowed'] + " " + trigger_item.conf[ 'avm_target_number']) @@ -284,43 +284,43 @@ def _trigger(self, call_from, call_to, time, callid, event, branch): "both 'avm_incoming_allowed' and 'avm_target_number' must be specified as attributes in a trigger item.") elif trigger_item.conf['avm_incoming_allowed'] == call_from and trigger_item.conf[ 'avm_target_number'] == call_to: - trigger_item(1) + trigger_item(1, self._plugin_instance.get_shortname()) if self._call_monitor_incoming_filter in call_to: # set call id for incoming call self._call_incoming_cid = callid # reset duration for incoming calls - self._duration_item['call_duration_incoming'](0) + self._duration_item['call_duration_incoming'](0, self._plugin_instance.get_shortname()) # process items specific to incoming calls for item in self._items_incoming: # update items for incoming calls if self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in ['is_call_incoming']: self._plugin_instance.logger.debug("Setting is_call_incoming: %s" % True) - item(True) + item(True, self._plugin_instance.get_shortname()) elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in ['last_caller_incoming']: if call_from != '' and call_from is not None: name = self._callback(call_from) if name != '' and not name is None: - item(name) + item(name, self._plugin_instance.get_shortname()) else: - item(call_from) + item(call_from, self._plugin_instance.get_shortname()) else: - item("Unbekannt") + item("Unbekannt", self._plugin_instance.get_shortname()) elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in [ 'last_call_date_incoming']: self._plugin_instance.logger.debug("Setting last_call_date_incoming: %s" % time) - item(time) + item(time, self._plugin_instance.get_shortname()) elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in ['call_event_incoming']: self._plugin_instance.logger.debug("Setting call_event_incoming: %s" % event.lower()) - item(event.lower()) + item(event.lower(), self._plugin_instance.get_shortname()) elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in ['last_number_incoming']: self._plugin_instance.logger.debug("Setting last_number_incoming: %s" % call_from) - item(call_from) + item(call_from, self._plugin_instance.get_shortname()) elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in [ 'last_called_number_incoming']: self._plugin_instance.logger.debug("Setting last_called_number_incoming: %s" % call_to) - item(call_to) + item(call_to, self._plugin_instance.get_shortname()) # call is outgoing elif event == 'CALL': @@ -333,22 +333,22 @@ def _trigger(self, call_from, call_to, time, callid, event, branch): # process items specific to outgoing calls for item in self._items_outgoing: if self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in ['is_call_outgoing']: - item(True) + item(True, self._plugin_instance.get_shortname()) elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in ['last_caller_outgoing']: name = self._callback(call_to) if name != '' and not name is None: - item(name) + item(name, self._plugin_instance.get_shortname()) else: - item(call_to) + item(call_to, self._plugin_instance.get_shortname()) elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in ['last_call_date_outgoing']: - item(time) + item(time, self._plugin_instance.get_shortname()) elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in ['call_event_outgoing']: - item(event.lower()) + item(event.lower(), self._plugin_instance.get_shortname()) elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in ['last_number_outgoing']: - item(call_from) + item(call_from, self._plugin_instance.get_shortname()) elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in [ 'last_called_number_outgoing']: - item(call_to) + item(call_to, self._plugin_instance.get_shortname()) # connection established elif event == 'CONNECT': @@ -360,7 +360,7 @@ def _trigger(self, call_from, call_to, time, callid, event, branch): self._start_counter(time, 'outgoing') for item in self._items_outgoing: if self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in ['call_event_outgoing']: - item(event.lower()) + item(event.lower(), self._plugin_instance.get_shortname()) # handle INCOMING calls elif callid == self._call_incoming_cid: @@ -372,7 +372,7 @@ def _trigger(self, call_from, call_to, time, callid, event, branch): for item in self._items_incoming: if self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') in ['call_event_incoming']: self._plugin_instance.logger.debug("Setting call_event_incoming: %s" % event.lower()) - item(event.lower()) + item(event.lower(), self._plugin_instance.get_shortname()) # connection ended elif event == 'DISCONNECT': @@ -380,9 +380,9 @@ def _trigger(self, call_from, call_to, time, callid, event, branch): if callid == self._call_outgoing_cid: for item in self._items_outgoing: if self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') == 'call_event_outgoing': - item(event.lower()) + item(event.lower(), self._plugin_instance.get_shortname()) elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') == 'is_call_outgoing': - item(False) + item(False, self._plugin_instance.get_shortname()) if not self._duration_item['call_duration_outgoing'] is None: # stop counter threads self._stop_counter('outgoing') self._call_outgoing_cid = None @@ -392,10 +392,10 @@ def _trigger(self, call_from, call_to, time, callid, event, branch): for item in self._items_incoming: if self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') == 'call_event_incoming': self._plugin_instance.logger.debug("Setting call_event_incoming: %s" % event.lower()) - item(event.lower()) + item(event.lower(), self._plugin_instance.get_shortname()) elif self._plugin_instance.get_iattr_value(item.conf, 'avm_data_type') == 'is_call_incoming': self._plugin_instance.logger.debug("Setting is_call_incoming: %s" % False) - item(False) + item(False, self._plugin_instance.get_shortname()) if not self._duration_item['call_duration_incoming'] is None: # stop counter threads self._plugin_instance.logger.debug("Stopping Counter for Call Time") self._stop_counter('incoming') @@ -504,7 +504,7 @@ class AVM(SmartPlugin): Main class of the Plugin. Does all plugin specific stuff and provides the update functions for the different TR-064 services on the FritzDevice """ - PLUGIN_VERSION = "1.5.6" + PLUGIN_VERSION = "1.5.7" _header = {'SOAPACTION': '', 'CONTENT-TYPE': 'text/xml; charset="utf-8"'} _envelope = """ @@ -725,24 +725,24 @@ def parse_item(self, item): for element in self.get_calllist_from_cache(): if element['Type'] in ['1', '2']: if 'Name' in element: - item(element['Name']) + item(element['Name'], self.get_shortname()) else: - item(element['Caller']) + item(element['Caller'], self.get_shortname()) break elif self.get_iattr_value(item.conf, 'avm_data_type') == 'last_number_incoming' and item() == '': if not self.get_calllist_from_cache() is None: for element in self.get_calllist_from_cache(): if element['Type'] in ['1', '2']: if 'Caller' in element: - item(element['Caller']) + item(element['Caller'], self.get_shortname()) else: - item("") + item("", self.get_shortname()) break elif self.get_iattr_value(item.conf, 'avm_data_type') == 'last_called_number_incoming' and item() == '': if not self.get_calllist_from_cache() is None: for element in self.get_calllist_from_cache(): if element['Type'] in ['1', '2']: - item(element['CalledNumber']) + item(element['CalledNumber'], self.get_shortname()) break elif self.get_iattr_value(item.conf, 'avm_data_type') == 'last_call_date_incoming' and item() == '': if not self.get_calllist_from_cache() is None: @@ -750,35 +750,35 @@ def parse_item(self, item): if element['Type'] in ['1', '2']: date = str(element['Date']) date = date[8:10] + "." + date[5:7] + "." + date[2:4] + " " + date[11:19] - item(date) + item(date, self.get_shortname()) break elif self.get_iattr_value(item.conf, 'avm_data_type') == 'call_event_incoming' and item() == '': - item('disconnect') + item('disconnect', self.get_shortname()) elif self.get_iattr_value(item.conf, 'avm_data_type') == 'is_call_incoming' and item() == '': - item(0) + item(0, self.get_shortname()) elif self.get_iattr_value(item.conf, 'avm_data_type') == 'last_caller_outgoing' and item() == '': if not self.get_calllist_from_cache() is None: for element in self.get_calllist_from_cache(): if element['Type'] in ['3', '4']: if 'Name' in element: - item(element['Name']) + item(element['Name'], self.get_shortname()) else: - item(element['Called']) + item(element['Called'], self.get_shortname()) break elif self.get_iattr_value(item.conf, 'avm_data_type') == 'last_number_outgoing' and item() == '': if not self.get_calllist_from_cache() is None: for element in self.get_calllist_from_cache(): if element['Type'] in ['3', '4']: if 'Caller' in element: - item(''.join(filter(lambda x: x.isdigit(), element['Caller']))) + item(''.join(filter(lambda x: x.isdigit(), element['Caller'])), self.get_shortname()) else: - item("") + item("", self.get_shortname()) break elif self.get_iattr_value(item.conf, 'avm_data_type') == 'last_called_number_outgoing' and item() == '': if not self.get_calllist_from_cache() is None: for element in self.get_calllist_from_cache(): if element['Type'] in ['3', '4']: - item(element['Called']) + item(element['Called'], self.get_shortname()) break elif self.get_iattr_value(item.conf, 'avm_data_type') == 'last_call_date_outgoing' and item() == '': if not self.get_calllist_from_cache() is None: @@ -786,22 +786,22 @@ def parse_item(self, item): if element['Type'] in ['3', '4']: date = str(element['Date']) date = date[8:10] + "." + date[5:7] + "." + date[2:4] + " " + date[11:19] - item(date) + item(date, self.get_shortname()) break elif self.get_iattr_value(item.conf, 'avm_data_type') == 'call_event_outgoing' and item() == '': - item('disconnect') + item('disconnect', self.get_shortname()) elif self.get_iattr_value(item.conf, 'avm_data_type') == 'is_call_outgoing' and item() == '': - item(0) + item(0, self.get_shortname()) elif self.get_iattr_value(item.conf, 'avm_data_type') == 'call_event' and item() == '': - item('disconnect') + item('disconnect', self.get_shortname()) elif self.get_iattr_value(item.conf, 'avm_data_type') == 'call_direction' and item() == '': if not self.get_calllist_from_cache() is None: for element in self.get_calllist_from_cache(): if element['Type'] in ['1', '2']: - item('incoming') + item('incoming', self.get_shortname()) break if element['Type'] in ['3', '4']: - item('outgoing') + item('outgoing', self.get_shortname()) break if self._call_monitor: if self._monitoring_service is not None: @@ -815,7 +815,7 @@ def parse_item(self, item): if element['Type'] in ['1', '2']: duration = element['Duration'] duration = int(duration[0:1]) * 3600 + int(duration[2:4]) * 60 - item(duration) + item(duration, self.get_shortname()) break elif self.get_iattr_value(item.conf, 'avm_data_type') == 'call_duration_outgoing' and item() == 0: if not self.get_calllist_from_cache() is None: @@ -823,7 +823,7 @@ def parse_item(self, item): if element['Type'] in ['3', '4']: duration = element['Duration'] duration = int(duration[0:1]) * 3600 + int(duration[2:4]) * 60 - item(duration) + item(duration, self.get_shortname()) break if not self._monitoring_service is None: self._monitoring_service.set_duration_item(item) @@ -1498,7 +1498,7 @@ def _update_myfritz(self, item): tag_content = xml.getElementsByTagName('NewEnabled') if len(tag_content) > 0: - item(tag_content[0].firstChild.data) + item(tag_content[0].firstChild.data, self.get_shortname()) def _update_host(self, item): """ @@ -1540,16 +1540,16 @@ def _update_host(self, item): tag_content = xml.getElementsByTagName('NewActive') if len(tag_content) > 0: - item(tag_content[0].firstChild.data) + item(tag_content[0].firstChild.data, self.get_shortname()) for child in item.return_children(): if 'avm_data_type' in child.conf: if child.conf['avm_data_type'] == 'device_ip': device_ip = xml.getElementsByTagName('NewIPAddress') if len(device_ip) > 0: if not device_ip[0].firstChild is None: - child(device_ip[0].firstChild.data) + child(device_ip[0].firstChild.data, self.get_shortname()) else: - child('') + child('', self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, @@ -1558,9 +1558,9 @@ def _update_host(self, item): device_connection_type = xml.getElementsByTagName('NewInterfaceType') if len(device_connection_type) > 0: if not device_connection_type[0].firstChild is None: - child(device_connection_type[0].firstChild.data) + child(device_connection_type[0].firstChild.data, self.get_shortname()) else: - child('') + child('', self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, @@ -1568,7 +1568,7 @@ def _update_host(self, item): elif child.conf['avm_data_type'] == 'device_hostname': data = self._get_value_from_xml_node(xml, 'NewHostName') if not data is None: - child(data) + child(data, self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, @@ -1619,10 +1619,10 @@ def _update_home_automation(self, item): element_xml = xml.getElementsByTagName('NewSwitchState') if len(element_xml) > 0: if element_xml[0].firstChild.data not in ['UNDEFINED', 'TOGGLE']: - item(element_xml[0].firstChild.data) + item(element_xml[0].firstChild.data, self.get_shortname()) elif element_xml[0].firstChild.data in 'TOGGLE': value = item() - item(not value) + item(not value, self.get_shortname()) else: self.logger.error( 'NewSwitchState für AHA Device has a non-supported value of %s' % element_xml[0].firstChild.data) @@ -1631,7 +1631,7 @@ def _update_home_automation(self, item): if self.get_iattr_value(child.conf, 'avm_data_type') == 'temperature': temp = xml.getElementsByTagName('NewTemperatureCelsius') if len(temp) > 0: - child(int(temp[0].firstChild.data)) + child(int(temp[0].firstChild.data), self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, @@ -1639,7 +1639,7 @@ def _update_home_automation(self, item): elif self.get_iattr_value(child.conf, 'avm_data_type') == 'power': power = xml.getElementsByTagName('NewMultimeterPower') if len(power) > 0: - child(int(power[0].firstChild.data)) + child(int(power[0].firstChild.data), self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, @@ -1647,7 +1647,7 @@ def _update_home_automation(self, item): elif self.get_iattr_value(child.conf, 'avm_data_type') == 'energy': energy = xml.getElementsByTagName('NewMultimeterEnergy') if len(energy) > 0: - child(int(energy[0].firstChild.data)) + child(int(energy[0].firstChild.data), self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, @@ -1686,7 +1686,7 @@ def _update_home_automation(self, item): elif self.get_iattr_value(child.conf, 'avm_data_type') == 'set_temperature': set_temperature = xml.getElementsByTagName('NewHkrSetTemperature') if len(set_temperature) > 0: - child(int(set_temperature[0].firstChild.data)/10) + child(int(set_temperature[0].firstChild.data)/10, self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, @@ -1694,7 +1694,7 @@ def _update_home_automation(self, item): elif self.get_iattr_value(child.conf, 'avm_data_type') == 'set_temperature_reduced': set_temperature_reduced= xml.getElementsByTagName('NewHkrReduceTemperature') if len(set_temperature_reduced) > 0: - child(int(set_temperature_reduced[0].firstChild.data)/10) + child(int(set_temperature_reduced[0].firstChild.data)/10, self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, @@ -1702,7 +1702,7 @@ def _update_home_automation(self, item): elif self.get_iattr_value(child.conf, 'avm_data_type') == 'set_temperature_comfort': set_temperature_comfort= xml.getElementsByTagName('NewHkrComfortTemperature') if len(set_temperature_comfort) > 0: - child(int(set_temperature_comfort[0].firstChild.data)/10) + child(int(set_temperature_comfort[0].firstChild.data)/10, self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, @@ -1762,28 +1762,28 @@ def _update_fritz_device_info(self, item): if self.get_iattr_value(item.conf, 'avm_data_type') == 'uptime': element_xml = xml.getElementsByTagName('NewUpTime') if len(element_xml) > 0: - item(int(element_xml[0].firstChild.data)) + item(int(element_xml[0].firstChild.data), self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, 'avm_data_type')) elif self.get_iattr_value(item.conf, 'avm_data_type') == 'software_version': element_xml = xml.getElementsByTagName('NewSoftwareVersion') if len(element_xml) > 0: - item(element_xml[0].firstChild.data) + item(element_xml[0].firstChild.data, self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, 'avm_data_type')) elif self.get_iattr_value(item.conf, 'avm_data_type') == 'hardware_version': element_xml = xml.getElementsByTagName('NewHardwareVersion') if len(element_xml) > 0: - item(element_xml[0].firstChild.data) + item(element_xml[0].firstChild.data, self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, 'avm_data_type')) elif self.get_iattr_value(item.conf, 'avm_data_type') == 'serial_number': element_xml = xml.getElementsByTagName('NewSerialNumber') if len(element_xml) > 0: - item(element_xml[0].firstChild.data) + item(element_xml[0].firstChild.data, self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, 'avm_data_type')) @@ -1836,14 +1836,14 @@ def _update_tam(self, item): if self.get_iattr_value(item.conf, 'avm_data_type') == 'tam': element_xml = xml.getElementsByTagName('NewEnable') if len(element_xml) > 0: - item(element_xml[0].firstChild.data) + item(element_xml[0].firstChild.data, self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, 'avm_data_type')) elif self.get_iattr_value(item.conf, 'avm_data_type') == 'tam_name': element_xml = xml.getElementsByTagName('NewName') if len(element_xml) > 0: - item(element_xml[0].firstChild.data) + item(element_xml[0].firstChild.data, self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, 'avm_data_type')) @@ -1882,7 +1882,7 @@ def _update_tam(self, item): is_new = message.getElementsByTagName('New') if int(is_new[0].firstChild.data) == 1: message_count = message_count + 1 - item(message_count) + item(message_count, self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, 'avm_data_type')) @@ -1945,21 +1945,21 @@ def _update_wlan_config(self, item): if self.get_iattr_value(item.conf, 'avm_data_type') == 'wlanconfig': newEnable = self._get_value_from_xml_node(xml, 'NewEnable') if newEnable is not None: - item(newEnable) + item(newEnable, self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, 'avm_data_type')) elif self.get_iattr_value(item.conf, 'avm_data_type') == 'wlanconfig_ssid': newSSID = self._get_value_from_xml_node(xml, 'NewSSID') if newSSID is not None: - item(newSSID) + item(newSSID, self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, 'avm_data_type')) elif self.get_iattr_value(item.conf, 'avm_data_type') == 'wlan_guest_time_remaining': element_xml = xml.getElementsByTagName('NewX_AVM-DE_TimeRemain') if len(element_xml) > 0: - item(int(element_xml[0].firstChild.data)) + item(int(element_xml[0].firstChild.data), self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, 'avm_data_type')) @@ -2011,14 +2011,14 @@ def _update_wan_dsl_interface_config(self, item): if self.get_iattr_value(item.conf, 'avm_data_type') == 'wan_upstream': element_xml = xml.getElementsByTagName('NewUpstreamCurrRate') if len(element_xml) > 0: - item(int(element_xml[0].firstChild.data)) + item(int(element_xml[0].firstChild.data), self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, 'avm_data_type')) elif self.get_iattr_value(item.conf, 'avm_data_type') == 'wan_downstream': element_xml = xml.getElementsByTagName('NewDownstreamCurrRate') if len(element_xml) > 0: - item(int(element_xml[0].firstChild.data)) + item(int(element_xml[0].firstChild.data), self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, 'avm_data_type')) @@ -2087,56 +2087,56 @@ def _update_wan_common_interface_configuration(self, item): if self.get_iattr_value(item.conf, 'avm_data_type') == 'wan_total_packets_sent': data = self._get_value_from_xml_node(xml, 'NewTotalPacketsSent') if data is not None: - item(int(data)) + item(int(data), self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, 'avm_data_type')) elif self.get_iattr_value(item.conf, 'avm_data_type') == 'wan_total_packets_received': data = self._get_value_from_xml_node(xml, 'NewTotalPacketsReceived') if data is not None: - item(int(data)) + item(int(data), self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, 'avm_data_type')) elif self.get_iattr_value(item.conf, 'avm_data_type') == 'wan_current_packets_sent': data = self._get_value_from_xml_node(xml, 'NewPacketSendRate') if data is not None: - item(int(data)) + item(int(data), self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, 'avm_data_type')) elif self.get_iattr_value(item.conf, 'avm_data_type') == 'wan_current_packets_received': data = self._get_value_from_xml_node(xml, 'NewPacketReceiveRate') if data is not None: - item(int(data)) + item(int(data), self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, 'avm_data_type')) elif self.get_iattr_value(item.conf, 'avm_data_type') == 'wan_total_bytes_sent': data = self._get_value_from_xml_node(xml, 'NewTotalBytesSent') if data is not None: - item(int(data)) + item(int(data), self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, 'avm_data_type')) elif self.get_iattr_value(item.conf, 'avm_data_type') == 'wan_total_bytes_received': data = self._get_value_from_xml_node(xml, 'NewTotalBytesReceived') if data is not None: - item(int(data)) + item(int(data), self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, 'avm_data_type')) elif self.get_iattr_value(item.conf, 'avm_data_type') == 'wan_current_bytes_sent': data = self._get_value_from_xml_node(xml, 'NewByteSendRate') if data is not None: - item(int(data)) + item(int(data), self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, 'avm_data_type')) elif self.get_iattr_value(item.conf, 'avm_data_type') == 'wan_current_bytes_received': data = self._get_value_from_xml_node(xml, 'NewByteReceiveRate') if data is not None: - item(int(data)) + item(int(data), self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, 'avm_data_type')) @@ -2144,9 +2144,9 @@ def _update_wan_common_interface_configuration(self, item): data = self._get_value_from_xml_node(xml, 'NewPhysicalLinkStatus') if data is not None: if data == 'Up': - item(True) + item(True, self.get_shortname()) else: - item(False) + item(False, self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, 'avm_data_type')) @@ -2202,33 +2202,33 @@ def _update_wan_ip_connection(self, item): data = self._get_value_from_xml_node(xml, 'NewConnectionStatus') if data is not None: if self.get_iattr_value(item.conf, 'avm_data_type') == 'wan_connection_status': - item(data) + item(data, self.get_shortname()) elif self.get_iattr_value(item.conf, 'avm_data_type') == 'wan_is_connected': if data == 'Connected': - item(True) + item(True, self.get_shortname()) else: - item(False) + item(False, self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, 'avm_data_type')) elif self.get_iattr_value(item.conf, 'avm_data_type') == 'wan_uptime': data = self._get_value_from_xml_node(xml, 'NewUptime') if data is not None: - item(int(data)) + item(int(data), self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, 'avm_data_type')) elif self.get_iattr_value(item.conf, 'avm_data_type') == 'wan_connection_error': data = self._get_value_from_xml_node(xml, 'NewLastConnectionError') if data is not None: - item(data) + item(data, self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, 'avm_data_type')) elif self.get_iattr_value(item.conf, 'avm_data_type') == 'wan_ip': data = self._get_value_from_xml_node(xml, 'NewExternalIPAddress') if data is not None: - item(data) + item(data, self.get_shortname()) else: self.logger.error( "Attribute %s not available on the FritzDevice" % self.get_iattr_value(item.conf, 'avm_data_type')) diff --git a/avm/plugin.yaml b/avm/plugin.yaml index 57eb20190..905f4ef27 100755 --- a/avm/plugin.yaml +++ b/avm/plugin.yaml @@ -12,7 +12,7 @@ plugin: documentation: http://smarthomeng.de/user/plugins/avm/user_doc.html support: https://knx-user-forum.de/forum/supportforen/smarthome-py/934835-avm-plugin - version: 1.5.6 # Plugin version + version: 1.5.7 # Plugin version sh_minversion: 1.5b # minimum shNG version to use this plugin # sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) multi_instance: True # plugin supports multi instance diff --git a/withings_health/__init__.py b/withings_health/__init__.py index 5a5d4e49e..ac0fbc7c6 100644 --- a/withings_health/__init__.py +++ b/withings_health/__init__.py @@ -147,7 +147,7 @@ def _update(self): last_measure = measures[0] if last_measure.get_measure(11) is not None and 'heart_pulse' in self._items: - self._items['heart_pulse'](last_measure.get_measure(11)) + self._items['heart_pulse'](last_measure.get_measure(11), self.get_shortname()) self.logger.debug("Plugin '{}': heart_pulse - {}".format(self.get_fullname(), last_measure.get_measure(11))) # Bugfix for strange behavior of returning heart_pulse as seperate dataset.. @@ -155,73 +155,73 @@ def _update(self): last_measure = measures[1] if last_measure.get_measure(1) is not None and 'weight' in self._items: - self._items['weight'](last_measure.get_measure(1)) + self._items['weight'](last_measure.get_measure(1), self.get_shortname()) self.logger.debug("Plugin '{}': weight - {}".format(self.get_fullname(), last_measure.get_measure(1))) if last_measure.get_measure(4) is not None and 'height' in self._items: - self._items['height'](last_measure.get_measure(4)) + self._items['height'](last_measure.get_measure(4), self.get_shortname()) self.logger.debug("Plugin '{}': height - {}".format(self.get_fullname(), last_measure.get_measure(4))) if last_measure.get_measure(5) is not None and 'fat_free_mass' in self._items: - self._items['fat_free_mass'](last_measure.get_measure(5)) + self._items['fat_free_mass'](last_measure.get_measure(5), self.get_shortname()) self.logger.debug( "Plugin '{}': fat_free_mass - {}".format(self.get_fullname(), last_measure.get_measure(5))) if last_measure.get_measure(6) is not None and 'fat_ratio' in self._items: - self._items['fat_ratio'](last_measure.get_measure(6)) + self._items['fat_ratio'](last_measure.get_measure(6), self.get_shortname()) self.logger.debug("Plugin '{}': fat_ratio - {}".format(self.get_fullname(), last_measure.get_measure(6))) if last_measure.get_measure(8) is not None and 'fat_mass_weight' in self._items: - self._items['fat_mass_weight'](last_measure.get_measure(8)) + self._items['fat_mass_weight'](last_measure.get_measure(8), self.get_shortname()) self.logger.debug( "Plugin '{}': fat_mass_weight - {}".format(self.get_fullname(), last_measure.get_measure(8))) if last_measure.get_measure(9) is not None and 'diastolic_blood_pressure' in self._items: - self._items['diastolic_blood_pressure'](last_measure.get_measure(9)) + self._items['diastolic_blood_pressure'](last_measure.get_measure(9), self.get_shortname()) self.logger.debug( "Plugin '{}': diastolic_blood_pressure - {}".format(self.get_fullname(), last_measure.get_measure(9))) if last_measure.get_measure(10) is not None and 'systolic_blood_pressure' in self._items: - self._items['systolic_blood_pressure'](last_measure.get_measure(10)) + self._items['systolic_blood_pressure'](last_measure.get_measure(10), self.get_shortname()) self.logger.debug( "Plugin '{}': systolic_blood_pressure - {}".format(self.get_fullname(), last_measure.get_measure(10))) if last_measure.get_measure(11) is not None and 'heart_pulse' in self._items: - self._items['heart_pulse'](last_measure.get_measure(11)) + self._items['heart_pulse'](last_measure.get_measure(11), self.get_shortname()) self.logger.debug("Plugin '{}': heart_pulse - {}".format(self.get_fullname(), last_measure.get_measure(11))) if last_measure.get_measure(12) is not None and 'temperature' in self._items: - self._items['temperature'](last_measure.get_measure(12)) + self._items['temperature'](last_measure.get_measure(12), self.get_shortname()) self.logger.debug("Plugin '{}': temperature - {}".format(self.get_fullname(), last_measure.get_measure(12))) if last_measure.get_measure(54) is not None and 'spo2' in self._items: - self._items['spo2'](last_measure.get_measure(54)) + self._items['spo2'](last_measure.get_measure(54), self.get_shortname()) self.logger.debug("Plugin '{}': spo2 - {}".format(self.get_fullname(), last_measure.get_measure(54))) if last_measure.get_measure(71) is not None and 'body_temperature' in self._items: - self._items['body_temperature'](last_measure.get_measure(71)) + self._items['body_temperature'](last_measure.get_measure(71), self.get_shortname()) self.logger.debug( "Plugin '{}': body_temperature - {}".format(self.get_fullname(), last_measure.get_measure(71))) if last_measure.get_measure(72) is not None and 'skin_temperature' in self._items: - self._items['skin_temperature'](last_measure.get_measure(72)) + self._items['skin_temperature'](last_measure.get_measure(72), self.get_shortname()) self.logger.debug( "Plugin '{}': skin_temperature - {}".format(self.get_fullname(), last_measure.get_measure(72))) if last_measure.get_measure(76) is not None and 'muscle_mass' in self._items: - self._items['muscle_mass'](last_measure.get_measure(76)) + self._items['muscle_mass'](last_measure.get_measure(76), self.get_shortname()) self.logger.debug("Plugin '{}': muscle_mass - {}".format(self.get_fullname(), last_measure.get_measure(76))) if last_measure.get_measure(77) is not None and 'hydration' in self._items: - self._items['hydration'](last_measure.get_measure(77)) + self._items['hydration'](last_measure.get_measure(77), self.get_shortname()) self.logger.debug("Plugin '{}': hydration - {}".format(self.get_fullname(), last_measure.get_measure(77))) if last_measure.get_measure(88) is not None and 'bone_mass' in self._items: - self._items['bone_mass'](last_measure.get_measure(88)) + self._items['bone_mass'](last_measure.get_measure(88), self.get_shortname()) self.logger.debug("Plugin '{}': bone_mass - {}".format(self.get_fullname(), last_measure.get_measure(88))) if last_measure.get_measure(91) is not None and 'pulse_wave_velocity' in self._items: - self._items['pulse_wave_velocity'](last_measure.get_measure(91)) + self._items['pulse_wave_velocity'](last_measure.get_measure(91), self.get_shortname()) self.logger.debug( "Plugin '{}': pulse_wave_velocity - {}".format(self.get_fullname(), last_measure.get_measure(91))) @@ -231,24 +231,24 @@ def _update(self): bmi = round( last_measure.get_measure(1) / ((self._items['height']()) * (self._items['height']())), 2) if 'bmi' in self._items: - self._items['bmi'](bmi) + self._items['bmi'](bmi, self.get_shortname()) if 'bmi_text' in self._items: if bmi < 16: - self._items['bmi_text']('starkes Untergewicht') + self._items['bmi_text']('starkes Untergewicht', self.get_shortname()) elif 16 <= bmi < 17: - self._items['bmi_text']('mäßiges Untergewicht ') + self._items['bmi_text']('mäßiges Untergewicht', self.get_shortname()) elif 17 <= bmi < 18.5: - self._items['bmi_text']('leichtes Untergewicht ') + self._items['bmi_text']('leichtes Untergewicht', self.get_shortname()) elif 18.5 <= bmi < 25: - self._items['bmi_text']('Normalgewicht') + self._items['bmi_text']('Normalgewicht', self.get_shortname()) elif 25 <= bmi < 30: - self._items['bmi_text']('Präadipositas (Übergewicht)') + self._items['bmi_text']('Präadipositas (Übergewicht)', self.get_shortname()) elif 30 <= bmi < 35: - self._items['bmi_text']('Adipositas Grad I') + self._items['bmi_text']('Adipositas Grad I', self.get_shortname()) elif 35 <= bmi < 40: - self._items['bmi_text']('Adipositas Grad II') + self._items['bmi_text']('Adipositas Grad II', self.get_shortname()) elif 40 <= bmi: - self._items['bmi_text']('Adipositas Grad III') + self._items['bmi_text']('Adipositas Grad III', self.get_shortname()) else: self.logger.error( "Plugin '{}': Cannot calculate BMI: height is 0, please set height (in m) for height item manually.".format( From aee74627c215cd1d263dd63c32392c03eca07876 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Thu, 4 Jul 2019 18:01:59 +0200 Subject: [PATCH 146/200] openzwave: fix typo --- zwave/plugin.yaml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/zwave/plugin.yaml b/zwave/plugin.yaml index 50db2c986..ff368bb5d 100755 --- a/zwave/plugin.yaml +++ b/zwave/plugin.yaml @@ -67,7 +67,7 @@ item_attributes: description: en: 'connects the item to the defined node' - zwave_valu: + zwave_value: type: str description: en: 'connects the item to the defined value' @@ -77,5 +77,3 @@ plugin_functions: NONE logic_parameters: NONE # Definition of logic parameters defined by this plugin - - From 94f5269489fa39414df31b53b866f432fdf9c06e Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Sun, 26 May 2019 12:20:14 +0200 Subject: [PATCH 147/200] Reworked again Changed Loggings Added minimum channels to be sent Reworked default handling to match shng standard --- artnet/README.md | 166 ++++---- artnet/__init__.py | 488 +++++++++++++++++------- artnet/plugin.yaml | 209 ++++++---- artnet/webif/static/img/plugin_logo.png | Bin 0 -> 72259 bytes artnet/webif/templates/index.html | 68 ++++ 5 files changed, 657 insertions(+), 274 deletions(-) create mode 100644 artnet/webif/static/img/plugin_logo.png create mode 100644 artnet/webif/templates/index.html diff --git a/artnet/README.md b/artnet/README.md index 31c6bdfac..114fb08c3 100644 --- a/artnet/README.md +++ b/artnet/README.md @@ -1,71 +1,95 @@ -# Artnet - -## Requirements - -You need a device understanding Artnet. -I suggest to use the software OLA http://www.opendmx.net/index.php/Open_Lighting_Architecture to translate the ArtNet packets into DMX Signals. -OLA supports most USB -> DMX Adapters available at the moment. - -## Supported Hardware - -* Hardware supported by OLA. See Link above. - -## Configuration - -### plugin.yaml - -``` -dmx1: - class_name: ArtNet - class_path: plugins.artnet - artnet_subnet: 0 - artnet_net: 0 - artnet_universe: 0 - ip: 192.168.1.123 - port: 6454 -``` - -### items.yaml - -Not needed yet. - -### logic.yaml -Notice: First DMX channel is 1! Not 0! - -To send DMX Data to the universe set in plugin.yaml you have 3 possibilities: - -#### 1) Send single value -``sh.dmx1(, )`` - -Sets DMX_CHAN to value DMX_VALUE. - -Example: ``sh.dmx1(12,255)`` -If channels 1-11 are already set, they will not change. -If channels 1-11 are not set till now, the will be set to value 0. -This is needed because on a DMX bus you can not set just one specific channel. -You have to begin at first channel setting your values. - -#### 2) Send a list of values starting at channel -``sh.dmx1(, )`` -Sends to DMX Bus starting at - -Example: -``sh.dmx1(10,[0,33,44,55,99])`` -If channels 1-9 are already set, they will not change. -If channels 1-9 are not set till now, the will be set to value 0. -This is needed because on a DMX bus you can not set just one specific channel. -You have to begin at first channel setting your values. -Values in square brackets will be written to channel (10-14) - -#### 3) Send a list of values - -``sh.dmx1()`` - -Sends to DMX Bus starting at channel 1 - -This is nearly the same as 2) but without starting channel. - -Example: - -``sh.dmx1([0,33,44,55,99])`` -Values in Square brackets will be written to channel (1-5) +# Artnet + +## Requirements + +You need a device understanding Artnet. +I suggest to use the software OLA http://www.opendmx.net/index.php/Open_Lighting_Architecture to translate the ArtNet packets into DMX Signals. +Alternatively you can use any Art-Net to DMX Adapter. (Tested with https://www.ulrichradig.de/home/index.php/dmx/art-net-box) +OLA supports most USB -> DMX Adapters available at the moment. + +## Supported Hardware + +* Hardware supported by OLA. See Link above. + +## Configuration + +### plugin.yaml + +```yaml +artnet1: + class_name: ArtNet + class_path: plugins.artnet + artnet_universe: 0 + artnet_net: 0 + artnet_subnet: 0 + ip: 192.168.0.99 + port: 6454 + update_cycle: 120 + instance: keller +``` + +#### Attributes + * `artnet_universe`: Art-Net Universe, default: 0 + * `artnet_net`: Art-Net Net, default: 0 + * `artnet_subnet`: Art-Net Subnet, default: 0 + * `ip`: IP-address of your Art-Net node, mandatory, no default + * `port`: Port to reach your Art-Net node, defaul 6454 + * `update_cycle`: timeperiod between two update cycles, default 0 for no update. If a cycle is provided the current channel-settings is updated to Art-Net every n-th second. + * `instance`: Name of this plugin instance (e.g. above: keller) + +### items.yaml + +#### artnet_address +This attribute assigns an item to the respective artnet-address (DMX channel) + +### Example: +```yaml + lightbar: + red: + artnet_address@keller: 1 + green: + artnet_address@keller: 2 + blue: + artnet_address@keller: 3 +``` + +### logic.yaml +Notice: First DMX channel is 1! Not 0! + +To send DMX Data to the universe set in plugin.yaml you have 3 possibilities: + +#### 1) Send single value +``sh.artnet1(, )`` + +Sets DMX_CHAN to value DMX_VALUE. + +Example: ``sh.artnet1(12,255)`` +If channels 1-11 are already set, they will not change. +If channels 1-11 are not set till now, the will be set to value 0. +This is needed because on a DMX bus you can not set just one specific channel. +You have to begin at first channel setting your values. + +#### 2) Send a list of values starting at channel +``sh.artnet1(, )`` +Sends to DMX Bus starting at + +Example: +``sh.artnet1(10,[0,33,44,55,99])`` +If channels 1-9 are already set, they will not change. +If channels 1-9 are not set till now, the will be set to value 0. +This is needed because on a DMX bus you can not set just one specific channel. +You have to begin at first channel setting your values. +Values in square brackets will be written to channel (10-14) + +#### 3) Send a list of values + +``sh.artnet1()`` + +Sends to DMX Bus starting at channel 1 + +This is nearly the same as 2) but without starting channel. + +Example: + +``sh.artnet1([0,33,44,55,99])`` +Values in Square brackets will be written to channel (1-5) diff --git a/artnet/__init__.py b/artnet/__init__.py index a7966feee..ee3e2e2c5 100755 --- a/artnet/__init__.py +++ b/artnet/__init__.py @@ -1,133 +1,355 @@ -#!/usr/bin/env python3 -# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab -######################################################################### -# Copyright 2013- mode2k mode@gmx.co.uk -######################################################################### -# This file is part of SmartHomeNG -# https://github.com/smarthomeNG/smarthome -# http://knx-user-forum.de/ -# -# SmartHomeNG is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. -# -# SmartHomeNG is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with SmartHomeNG. If not, see . -######################################################################### - -import logging -import socket -import struct - -from lib.model.smartplugin import SmartPlugin - - -class ArtNet(SmartPlugin): - - ALLOW_MULTIINSTANCE = False - PLUGIN_VERSION = '1.3.0' - - packet_counter = 1 - dmxdata = [0, 0] - - def __init__(self, smarthome, artnet_net, artnet_subnet, artnet_universe, ip, port): - self.logger = logging.getLogger(__name__) - self.s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) - self.net = int(artnet_net) - self.subnet = int(artnet_subnet) - self.universe = int(artnet_universe) - self.ip = ip - self.port = int(port) - self.logger.debug("Init ArtNet Plugin done") - - def run(self): - pass - - def stop(self): - self.close() - - def __call__(self, var1=None, var2=None): - if type(var1) == int and type(var2) == int: - self.send_single_value(var1, var2) - if type(var1) == int and type(var2) == list: - self.send_frame_starting_at(var1, var2) - if type(var1) == list and type(var2) == type(None): - self.send_frame(var1) - - def send_single_value(self, adr, value): - if adr < 1 or adr > 512: - self.logger.error("DMX address %s invalid" % adr) - return - - while len(self.dmxdata) < adr: - self.dmxdata.append(0) - self.dmxdata[adr - 1] = value - self.__ArtDMX_broadcast() - - def send_frame_starting_at(self, adr, values): - if adr < 1 or adr > (512 - len(values) + 1): - self.logger.error("DMX address %s with length %s invalid" % - (adr, len(values))) - return - - while len(self.dmxdata) < (adr + len(values) - 1): - self.dmxdata.append(0) - cnt = 0 - for value in values: - self.dmxdata[adr - 1 + cnt] = value - cnt += 1 - self.__ArtDMX_broadcast() - - def send_frame(self, dmxframe): - if len(dmxframe) < 2: - self.logger.error("Send at least 2 channels") - return - self.dmxdata = dmxframe - self.__ArtDMX_broadcast() - - def __ArtDMX_broadcast(self): -# self.logger.info("Incomming DMX: %s"%self.dmxdata) - # New Array - data = [] - # Fix ID 7byte + 0x00 - data.append("Art-Net\x00") - # OpCode = OpOutput / OpDmx -> 0x5000, Low Byte first - data.append(struct.pack(' Protocol Version 14, High Byte first - data.append(struct.pack('>H', 14)) - # Order 1 to 255 - data.append(struct.pack('B', self.packet_counter)) - self.packet_counter += 1 - if self.packet_counter > 255: - self.packet_counter = 1 - # Physical Input Port - data.append(struct.pack('B', 0)) - # Artnet source address - data.append( - struct.pack('H', len(self.dmxdata))) - # DMX Data - for d in self.dmxdata: - data.append(struct.pack('B', d)) - # convert from list to string - result = bytes() - for token in data: - try: # Handels all strings - result = result + token.encode('utf-8', 'ignore') - except: # Handels all bytes - result = result + token -# data = "".join(data) - # debug -# self.logger.info("Outgoing Artnet:%s"%(':'.join(x.encode('hex') for x in data))) - # send over ethernet - self.s.sendto(result, (self.ip, self.port)) - - def close(self): - self.s.close() +#!/usr/bin/env python3 +# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab +######################################################################### +# Copyright 2013- mode2k mode@gmx.co.uk +# Extended 2019 jentz1986 +######################################################################### +# This file is part of SmartHomeNG +# https://github.com/smarthomeNG/smarthome +# http://knx-user-forum.de/ +# +# SmartHomeNG is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# SmartHomeNG is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with SmartHomeNG. If not, see . +######################################################################### + +import cherrypy +import logging +import socket +import struct + +from lib.model.smartplugin import * +from lib.module import Modules + +class ArtNet_Model: + + def __init__(self, ip, port: int, net: int, subnet: int, universe: int, instance_name, update_cycle: int, min_channels: int): + self._ip = ip + self._port = port + + self._universe = universe + self._net = net + self._subnet = subnet + self._instance_name = instance_name + self._update_cycle = update_cycle + self._min_channels = min_channels + + self._items = [] + + def get_ip(self): + """ + Returns the IP of the ArtNet node + + :return: IP-address of the device, as set in plugin.conf + """ + return self._ip + + def get_port(self): + """ + Returns the port of the ArtNet node + + :return: port of the device, as set in plugin.conf + """ + return self._port + + def get_net(self): + """ + Returns the net of the ArtNet node + + :return: net of the device, as set in plugin.conf + """ + return self._net + + def get_subnet(self): + """ + Returns the Subnet of the ArtNet node + + :return: Subnet of the device, as set in plugin.conf + """ + return self._subnet + + def get_universe(self): + """ + Returns the Universe of the ArtNet node + + :return: Universe of the device, as set in plugin.conf + """ + return self._universe + + def get_items(self): + """ + Returns added items + + :return: array of items held by the device, sorted by their DMX-address + """ + return sorted(self._items, key=lambda i: self.get_iattr_value(i.conf, "artnet_address")) + + + def get_min_channels(self): + """ + Returns minimum channels to be sent + + :return: number of minimum channels to be sent + """ + return self._min_channels + + +class ArtNet(SmartPlugin): + + ALLOW_MULTIINSTANCE = True + PLUGIN_VERSION = "1.6.0" + ADDR_ATTR = 'artnet_address' + + packet_counter = 1 + dmxdata = [0, 0] + + def __init__(self, sh, *args, **kwargs): + """ + Initalizes the plugin. The parameters describe for this method are pulled from the entry in plugin.conf. + """ + self.logger.info('Init ArtNet Plugin') + + self._model = ArtNet_Model(ip=self.get_parameter_value('ip'), + port=self.get_parameter_value('port'), + net=self.get_parameter_value('artnet_net'), + subnet=self.get_parameter_value('artnet_subnet'), + universe=self.get_parameter_value('artnet_universe'), + instance_name=self.get_instance_name(), + update_cycle=self.get_parameter_value('update_cycle'), + min_channels=self.get_parameter_value('min_channels') + ) + + while len(self.dmxdata) < self._model._min_channels: + self.dmxdata.append(0) + + self.s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) + self.init_webinterface() + + self.logger.debug("Init ArtNet Plugin for %s done" % + self._model._instance_name) + + def parse_item(self, item): + # items bound to this artnet-universe + if self.has_iattr(item.conf, self.ADDR_ATTR): + adr = int(self.get_iattr_value(item.conf, self.ADDR_ATTR)) + if adr > 0 and adr < 513: + while len(self.dmxdata) < (adr - 1): + self.dmxdata.append(0) + + self.logger.debug("Bound address %s to item %s" % (adr, item)) + self._model._items.append(item) + return self.update_item + else: + self.logger.error("Invalid address %s in item %s" % (adr, item)) + + def update_item(self, item, caller=None, source=None, dest=None): + if caller != 'ArtNet': + adr = int(self.get_iattr_value(item.conf, self.ADDR_ATTR)) + if item() < 0 or item() > 255: + self.logger.warning( + "Impossible to update address: %s to value %s from item %s, value has to be >=0 and <=255" % (adr, item(), item)) + else: + self.logger.debug("Updating address: %s to value %s" % (adr, item())) + self.send_single_value(adr, item()) + + def _update_loop(self): + if not self.alive: + return + if len(self.dmxdata) < 1: + return + self.__ArtDMX_broadcast() + + def run(self): + """ + Run method for the plugin + """ + self.logger.debug("run method called") + if self._model._update_cycle > 0: + self.scheduler_add('updateArtnet', self._update_loop, + prio=5, cycle=self._model._update_cycle, offset=2) + self.alive = True + for it in self._model._items: + adr = int(self.get_iattr_value(it.conf, self.ADDR_ATTR)) + val = it() + if val < 0 or val > 255: + self.logger.warning( + "Impossible to update address: %s to value %s from item %s, value has to be >=0 and <=255" % (adr, val, it)) + else: + self.logger.debug("Updating address: %s to value %s" % (adr, val)) + self.set_address_value(adr, val) + self.__ArtDMX_broadcast() + + def stop(self): + self.s.close() + self.alive = False + + def __call__(self, var1=None, var2=None): + if type(var1) == int and type(var2) == int: + self.send_single_value(var1, var2) + if type(var1) == int and type(var2) == list: + self.send_frame_starting_at(var1, var2) + if type(var1) == list and type(var2) == type(None): + self.send_frame(var1) + + def get_address_value(self, req_adr): + adr = int(req_adr) + while len(self.dmxdata) < adr: + self.dmxdata.append(0) + return self.dmxdata[adr - 1] + + def set_address_value(self, req_adr, val): + while len(self.dmxdata) < req_adr: + self.dmxdata.append(0) + self.dmxdata[req_adr - 1] = val + + def send_single_value(self, adr, value): + if adr < 1 or adr > 512: + self.logger.error("DMX address %s invalid" % adr) + return + + self.set_address_value(adr, value) + self.__ArtDMX_broadcast() + + def send_frame_starting_at(self, adr, values): + if adr < 1 or adr > (512 - len(values) + 1): + self.logger.error("DMX address %s with length %s invalid" % (adr, len(values))) + return + + while len(self.dmxdata) < (adr + len(values) - 1): + self.dmxdata.append(0) + cnt = 0 + for value in values: + self.dmxdata[adr - 1 + cnt] = value + cnt += 1 + self.__ArtDMX_broadcast() + + def send_frame(self, dmxframe): + if len(dmxframe) < 2: + self.logger.error("Send at least 2 channels") + return + self.dmxdata = dmxframe + self.__ArtDMX_broadcast() + + def __ArtDMX_broadcast(self): + data = [] + # Fix ID 7byte + 0x00 + data.append("Art-Net\x00") + # OpCode = OpOutput / OpDmx -> 0x5000, Low Byte first + data.append(struct.pack(' Protocol Version 14, High Byte first + data.append(struct.pack('>H', 14)) + # Order 1 to 255 + data.append(struct.pack('B', self.packet_counter)) + self.packet_counter += 1 + if self.packet_counter > 255: + self.packet_counter = 1 + # Physical Input Port + data.append(struct.pack('B', 0)) + # Artnet source address + data.append( + struct.pack('H', len(self.dmxdata))) + # DMX Data + for d in self.dmxdata: + data.append(struct.pack('B', d)) + # convert from list to string + result = bytes() + for token in data: + try: # Handels all strings + result = result + token.encode('utf-8', 'ignore') + except: # Handels all bytes + result = result + token + # send over ethernet + self.logger.debug("Sending %s channels to %s:%s as Net/SubNet/Unv: %s/%s/%s" % (len(self.dmxdata), + self._model._ip, + self._model._port, + self._model._net, + self._model._subnet, + self._model._universe)) + self.s.sendto(result, (self._model._ip, self._model._port)) + + def init_webinterface(self): + """" + Initialize the web interface for this plugin + + This method is only needed if the plugin is implementing a web interface + """ + try: + # try/except to handle running in a core version that does not support modules + self.mod_http = Modules.get_instance().get_module('http') + except: + self.mod_http = None + if self.mod_http == None: + self.logger.error("Plugin '{}': Not initializing the web interface".format(self.get_shortname())) + return False + + # set application configuration for cherrypy + webif_dir = self.path_join(self.get_plugin_dir(), 'webif') + config = { + '/': { + 'tools.staticdir.root': webif_dir, + }, + '/static': { + 'tools.staticdir.on': True, + 'tools.staticdir.dir': 'static' + } + } + + # Register the web interface as a cherrypy app + self.mod_http.register_webif(WebInterface(webif_dir, self), + self.get_shortname(), + config, + self.get_classname(), self.get_instance_name(), + description='') + + return True + +# ------------------------------------------ +# Webinterface of the plugin +# ------------------------------------------ + + +class WebInterface(SmartPluginWebIf): + + def __init__(self, webif_dir, plugin): + """ + Initialization of instance of class WebInterface + + :param webif_dir: directory where the webinterface of the plugin resides + :param plugin: instance of the plugin + :type webif_dir: str + :type plugin: object + """ + self.logger = logging.getLogger(__name__) + self.webif_dir = webif_dir + self.plugin = plugin + + self.tplenv = self.init_template_environment() + + @cherrypy.expose + def index(self, reload=None): + """ + Build index.html for cherrypy + + Render the template and return the html file to be delivered to the browser + + :return: contents of the template after beeing rendered + """ + tabcount = 1 + + tmpl = self.tplenv.get_template('index.html') + return tmpl.render(plugin_shortname=self.plugin.get_shortname(), + plugin_version=self.plugin.get_version(), + plugin_info=self.plugin.get_info(), + tabcount=tabcount, + p=self.plugin) diff --git a/artnet/plugin.yaml b/artnet/plugin.yaml index 8b6594c8a..ed13a9634 100755 --- a/artnet/plugin.yaml +++ b/artnet/plugin.yaml @@ -1,70 +1,139 @@ -# Metadata for the classic-plugin -plugin: - # Global plugin attributes - type: gateway # plugin type (gateway, interface, protocol, system, web) - description: - de: 'Ansteuerung der meisten USB/Netwerk DMX Adapter' - en: 'Can control most of USB/network DMX adapters' - maintainer: mode2k - tester: ohinckel - state: qa-passed - keywords: dmx -# documentation: https://github.com/smarthomeNG/plugins/blob/develop/mqtt/README.md # url of documentation (wiki) page - - version: 1.3.0 # Plugin version - sh_minversion: 1.3 # minimum shNG version to use this plugin -# sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) - multi_instance: False - restartable: unknown - classname: ArtNet # class containing the plugin - -parameters: - # Definition of parameters to be configured in etc/plugin.yaml - artnet_net: - type: int - default: 0 - description: - de: 'Gibt das ArtNet Net an' - en: 'Specifies the ArtNet Net to use' - valid_min: 0 - valid_max: 127 - artnet_subnet: - type: int - default: 0 - description: - de: 'Gibt das Art-Net Sub-Net an' - en: 'Specifies the Art-Net Sub-Net to use' - valid_min: 0 - valid_max: 15 - artnet_universe: - type: int - default: 0 - description: - de: 'Gibt das Art-Net Universe an' - en: 'Specifies the Art-Net Universe to use' - valid_min: 0 - valid_max: 15 - ip: - type: ip - description: - de: 'Gibt die Adresse einer Art-Net Node an' - en: 'Specifies the address of a Art-Net node' - port: - type: int - valid_min: 0 - description: - de: 'Gibt den Port einer Art-Net Node an' - en: 'Specifies the port of a Art-Net node' - -item_attributes: NONE - # Definition of item attributes defined by this plugin - -item_structs: NONE - # Definition of item-structure templates for this plugin - -logic_parameters: NONE - # Definition of logic parameters defined by this plugin - -plugin_functions: NONE - # Definition of function interface of the plugin - +# Metadata for the classic-plugin +plugin: + # Global plugin attributes + type: gateway # plugin type (gateway, interface, protocol, system, web) + description: + de: 'Ansteuerung der meisten USB/Netwerk DMX Adapter' + en: 'Can control most of USB/network DMX adapters' + maintainer: mode2k, jentz1986 + tester: ohinckel + state: ready + keywords: dmx +# documentation: https://github.com/smarthomeNG/plugins/blob/develop/mqtt/README.md # url of documentation (wiki) page + + version: 1.6.0 # Plugin version + sh_minversion: 1.5.1 # minimum shNG version to use this plugin +# sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) + multi_instance: True + restartable: True # Plugin can be restarted safely, however, the data is not re-applied from items to the DMX-Values + classname: ArtNet # class containing the plugin + +parameters: + # Definition of parameters to be configured in etc/plugin.yaml + ip: + type: ip + default: 127.0.0.1 + description: + de: 'Gibt die Adresse des angesprochenen Art-Net Node an' + en: 'Specifies the address of a Art-Net node' + port: + type: int + default: 6454 + description: + de: 'Gibt den Port des angesprochenen Art-Net Node an' + en: 'Specifies the port of a Art-Net node' + update_cycle: + type: int + default: 0 + valid_min: 0 + description: + de: 'Gibt an, wie oft (Sekunden) die aktuelle Lichtsituation neu verschickt werden soll (optional, 0 deaktiviert dies)' + en: 'Defines Refresh-cycle for re-sending the current setting in seconds, 0 deactivates this' + artnet_net: + type: int + default: 0 + description: + de: 'Gibt das ArtNet Net an' + en: 'Specifies the ArtNet Net to use' + valid_min: 0 + valid_max: 127 + artnet_subnet: + type: int + default: 0 + description: + de: 'Gibt das Art-Net Sub-Net an' + en: 'Specifies the Art-Net Sub-Net to use' + valid_min: 0 + valid_max: 15 + artnet_universe: + type: int + default: 0 + description: + de: 'Gibt das Art-Net Universe an' + en: 'Specifies the Art-Net Universe to use' + valid_min: 0 + valid_max: 15 + min_channels: + type: int + default: 1 + description: + de: 'Gibt an, wie viele Kanäle mindestens gesendet werden müssen, hilfreich für Geräte, die einen vollen Datensatz über alle ihre Kanäle erhalten müssen' + en: 'Specifies how many DMX channels are to be sent at minimum' + valid_min: 1 + valid_max: 512 + + +item_attributes: + artnet_address: + type: int + mandatory: True + valid_min: 1 + valid_max: 512 + description: + de: 'Definition der DMX Adresse' + en: 'Defition of DMX address' + +logic_parameters: NONE + +plugin_functions: + send_single_value: + type: void + description: + de: "Sendet einen einzelnen DMX Kanalwert" + en: "Sends a single DMX Channel-Value" + parameters: + adr: + type: num + valid_min: 1 + valid_max: 512 + description: + de: "Zu adressierender DMX-Kanal" + en: "DMX Channel to be addressed" + value: + type: num + valid_min: 0 + valid_max: 255 + description: + de: "Wert auf den der Kanal gesetzt werden soll" + en: "Value this Channel is to be set to" + send_frame_starting_at: + type: void + description: + de: "Sendet einen Satz an DMX Kanalwerten, beginnend bei einer Startadresse" + en: "Sends a set of DMX-channel-value starting from a certain address" + parameters: + adr: + type: num + valid_min: 1 + valid_max: 512 + description: + de: "Erster zu adressierender DMX-Kanal" + en: "First DMX-channel to be addressed" + values: + type: list(num) + description: + de: "Werte die ab dem Startkanal gesetzt werden sollen" + en: "Values to be transferred" + send_frame: + type: void + description: + de: "Sendet einen vollständingen DMX-Frame" + en: "Sends a full DMX-Frame" + parameters: + values: + type: list(num) + description: + de: "Wertemenge" + en: "Values to be transferred" + +item_structs: NONE diff --git a/artnet/webif/static/img/plugin_logo.png b/artnet/webif/static/img/plugin_logo.png new file mode 100644 index 0000000000000000000000000000000000000000..2709230b4edb5bc51ef5cdb91529b7f8156fcd86 GIT binary patch literal 72259 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 Sb!#rpbKAo92HM;!@&5s_*pwas literal 0 HcmV?d00001 diff --git a/artnet/webif/templates/index.html b/artnet/webif/templates/index.html new file mode 100644 index 000000000..955c6baa0 --- /dev/null +++ b/artnet/webif/templates/index.html @@ -0,0 +1,68 @@ +{% extends "base_plugin.html" %} +{% set tab1title = _('Artnet Items') %} +{% set language = p._sh.get_defaultlanguage() %} +{% if language not in ['en','de'] %} +{% set language = 'en' %} +{% endif %} + +{% block headtable %} + + + + + + + + + + + + + + + + + + + + + +
{{ _('Host') }}{{ p._model.get_ip() }}{{ _('Netz') }}{{ p._model.get_net() }}
{{ _('Port') }}{{ p._model.get_port() }}{{ _('Subnetz') }}{{ p._model.get_subnet() }}
{{ _('Mininum Kanäle zu senden') }}{{ p._model.get_min_channels() }}{{ _('Universum') }}{{ p._model.get_universe() }}
+{% endblock %} +{% block bodytab1 %} +

+{% endblock %} \ No newline at end of file From d365bb8227d16fc46cdbc1c3b35100adab39880f Mon Sep 17 00:00:00 2001 From: jentz1986 Date: Mon, 17 Jun 2019 21:51:56 +0200 Subject: [PATCH 148/200] Update __init__.py return sorted(self._items, key=lambda i: i.conf[instance_key]) return sorted(self._items, key=lambda i: self.get_iattr_value(i.conf, "artnet_address")) --- artnet/README.md | 6 +++++- artnet/__init__.py | 1 + artnet/plugin.yaml | 2 +- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/artnet/README.md b/artnet/README.md index 114fb08c3..107c9ee04 100644 --- a/artnet/README.md +++ b/artnet/README.md @@ -56,7 +56,11 @@ This attribute assigns an item to the respective artnet-address (DMX channel) ### logic.yaml Notice: First DMX channel is 1! Not 0! -To send DMX Data to the universe set in plugin.yaml you have 3 possibilities: +To send DMX Data to the universe set in plugin.yaml you have 4 possibilities: + +#### 0) Use items + +as explained above you can use items for that #### 1) Send single value ``sh.artnet1(, )`` diff --git a/artnet/__init__.py b/artnet/__init__.py index ee3e2e2c5..e02e43b13 100755 --- a/artnet/__init__.py +++ b/artnet/__init__.py @@ -22,6 +22,7 @@ # along with SmartHomeNG. If not, see . ######################################################################### + import cherrypy import logging import socket diff --git a/artnet/plugin.yaml b/artnet/plugin.yaml index ed13a9634..2d782c9a9 100755 --- a/artnet/plugin.yaml +++ b/artnet/plugin.yaml @@ -8,7 +8,7 @@ plugin: maintainer: mode2k, jentz1986 tester: ohinckel state: ready - keywords: dmx + keywords: dmx,artnet # documentation: https://github.com/smarthomeNG/plugins/blob/develop/mqtt/README.md # url of documentation (wiki) page version: 1.6.0 # Plugin version From 993a5fd5b16284cd5af6bdde126ddbd216244202 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sat, 6 Jul 2019 10:40:38 +0200 Subject: [PATCH 149/200] some code optimizations and fixes --- zwave/__init__.py | 123 +++++++++++++++++++++++++--------------------- zwave/plugin.yaml | 2 +- 2 files changed, 69 insertions(+), 56 deletions(-) diff --git a/zwave/__init__.py b/zwave/__init__.py index 6dadc8b3d..500c7fa32 100755 --- a/zwave/__init__.py +++ b/zwave/__init__.py @@ -25,29 +25,34 @@ from lib.model.smartplugin import SmartPlugin -import os import logging import time -import openzwave -from openzwave.network import ZWaveNetwork -from openzwave.option import ZWaveOption -from pydispatch import dispatcher +try: + from openzwave.network import ZWaveNetwork + from openzwave.option import ZWaveOption + from pydispatch import dispatcher + REQUIRED_PACKAGE_IMPORTED = True +except Exception: + REQUIRED_PACKAGE_IMPORTED = False + +from bin.smarthome import VERSION ITEMS = 'items' ITEM = 'item' LOGICS = 'logics' NID = 'node_id' + class ZWave(SmartPlugin): """ Main class of the Plugin. Does all plugin specific stuff and provides the update functions for the items """ - PLUGIN_VERSION = '1.4.1' + PLUGIN_VERSION = '1.4.2' - def __init__(self, sh, device='/dev/ttyUSB0', sec_strategy='SUPPORTED', config_path='/etc/openzwave/', zlogging='false', logfile='OZW.log', loglevel='Info'): + def __init__(self, sh): """ Initalizes the plugin. The parameters describe for this method are pulled from the entry in plugin.conf. @@ -65,37 +70,45 @@ def __init__(self, sh, device='/dev/ttyUSB0', sec_strategy='SUPPORTED', config_p returns the value in the datatype that is defined in the metadata. """ - self.logger = logging.getLogger(__name__) - self.logger.debug('zwave: Initialization started') + if '.'.join(VERSION.split('.', 2)[:2]) <= '1.5': + self.logger = logging.getLogger(__name__) - if not self.init_webinterface(): + try: + self._sh = sh + self.listenOn = {} + self._device = self.get_parameter_value('device') + self._config_path = self.get_parameter_value('config_path') + self._logging = self.get_parameter_value('zlogging') + logfile = self.get_parameter_value('loglevel') + try: + self._logfile = '{}/log/{}'.format(self.get_vardir(), logfile) + except Exception: + self._logfile = '{}/var/log/{}'.format(self.sh.get_basedir(), logfile) + self._loglevel = self.get_parameter_value('loglevel') + self._sec_strategy = self.get_parameter_value('sec_strategy') + self._ready = False + self.logger.debug('Initialized: logpath={}, loglevel={}, configpath={}, device={}, sec_strategy={}'.format( + self._logfile, self._loglevel, self._config_path, self._device, self._sec_strategy)) + except Exception as err: + self.logger.error(err) self._init_complete = False + return - self._sh = sh - - self.listenOn = {} - self._device = device - self._config_path = config_path - self._logging = zlogging - self._logfile = os.path.join(sh._base_dir, 'var') - self._logfile = os.path.join(self._logfile, 'log') - self._logfile = os.path.join(self._logfile, logfile) - self.logger.debug('zwave: logath={0}', self._logfile) - self._loglevel = loglevel - self._sec_strategy = sec_strategy - self._ready = False + if not REQUIRED_PACKAGE_IMPORTED: + self.logger.warning("Unable to import Python package 'openzwave'") + self._init_complete = False def run(self): """ Run method for the plugin """ - self.logger.debug('zwave: run method called') + self.logger.debug('run method called') self.alive = True try: options = ZWaveOption(self._device, config_path=self._config_path, user_path='./var/ozw', cmd_line='') except Exception as e: - self.logger.error('zwave: error on create ZWaveOption - {}'.format(e)) + self.logger.error('error on create ZWaveOption - {}'.format(e)) self.alive = False return @@ -108,52 +121,52 @@ def run(self): options.set_security_strategy(self._sec_strategy) options.lock() except Exception as e: - self.logger.error('zwave: error on option.set_* - {}'.format(e)) + self.logger.error('error on option.set_* - {}'.format(e)) - self.logger.debug('zwave: run -> create network') + self.logger.debug('run -> create network') try: self._network = ZWaveNetwork(options, autostart=False) except Exception as e: - self.logger.error('zwave: error on create Network Object - {}'.format(e)) + self.logger.error('error on create Network Object - {}'.format(e)) - self.logger.debug('zwave: run -> connect event handler') + self.logger.debug('run -> connect event handler') try: dispatcher.connect(self.zwave_value_update, ZWaveNetwork.SIGNAL_VALUE_CHANGED) except Exception as e: - self.logger.error('zwave: error on connect event handler - {}'.format(e)) + self.logger.error('error on connect event handler - {}'.format(e)) - self.logger.debug('zwave: run -> start network') + self.logger.debug('run -> start network') try: self._network.start() except Exception as e: self.alive = False - self.logger.error('zwave: error on start network - {}'.format(e)) + self.logger.error('error on start network - {}'.format(e)) - self.logger.info('zwave: use openzwave library: {}'.format(self._network.controller.ozw_library_version)) - self.logger.info('zwave: use python library: {}'.format(self._network.controller.python_library_version)) - self.logger.info('zwave: use ZWave library: {}'.format(self._network.controller.library_description)) + self.logger.info('use openzwave library: {}'.format(self._network.controller.ozw_library_version)) + self.logger.info('use python library: {}'.format(self._network.controller.python_library_version)) + self.logger.info('use ZWave library: {}'.format(self._network.controller.library_description)) while self.alive: if self._network.state != self._network.STATE_READY: - self.logger.debug('zwave: wait until network is ready... current state is: {}'.format(self._network.state_str)) + self.logger.debug('wait until network is ready... current state is: {}'.format(self._network.state_str)) if self._network.state == self._network.STATE_FAILED: self.alive = False return # Dump network information on STATE_READY - if self._network.state == self._network.STATE_READY and self._ready == False: - self.logger.info('zwave: controller ready : {} nodes were found.'.format(self._network.nodes_count)) - self.logger.info('zwave: controller node id : {}'.format(self._network.controller.node.node_id)) - self.logger.info('zwave: controller node version : {}'.format(self._network.controller.node.version)) - self.logger.info('zwave: Network home id : {}'.format(self._network.home_id_str)) - self.logger.info('zwave: Nodes in network : {}'.format(self._network.nodes_count)) + if self._network.state == self._network.STATE_READY and self._ready is False: + self.logger.info('controller ready : {} nodes were found.'.format(self._network.nodes_count)) + self.logger.info('controller node id : {}'.format(self._network.controller.node.node_id)) + self.logger.info('controller node version : {}'.format(self._network.controller.node.version)) + self.logger.info('Network home id : {}'.format(self._network.home_id_str)) + self.logger.info('Nodes in network : {}'.format(self._network.nodes_count)) self.logger.info("zwave: Start refresh values") for __id in self.listenOn: __val = self._network.get_value(__id) - self.logger.info("zwave: id : '{}', val: '{}'".format(__id,__val)) + self.logger.info("zwave: id : '{}', val: '{}'".format(__id, __val)) for __item in self.listenOn[__id][ITEMS]: __item(__val.data, 'ZWave') @@ -183,11 +196,11 @@ def parse_item(self, item): can be sent to the knx with a knx write function within the knx plugin. """ if self.has_iattr(item.conf, 'zwave_node') and self.has_iattr(item.conf, 'zwave_value'): - node_id = int(item.conf['zwave_node']) - value_id = int(item.conf['zwave_value']) - self.logger.debug('zwave: connecting item {} to node {} value {}'.format(item, node_id, value_id)) + node_id = int(self.get_iattr_value(item.conf, 'zwave_node').strip()) + value_id = int(self.get_iattr_value(item.conf, 'zwave_value').strip()) + self.logger.debug('connecting item {} to node {} value {}'.format(item, node_id, value_id)) if value_id not in self.listenOn: - self.listenOn[value_id] = {NID: node_id,ITEMS: [item],LOGICS: []} + self.listenOn[value_id] = {NID: node_id, ITEMS: [item], LOGICS: []} elif item not in self.listenOn[value_id][ITEMS]: self.listenOn[value_id][ITEMS].append(item) return self.update_item @@ -209,12 +222,13 @@ def update_item(self, item, caller=None, source=None, dest=None): :param dest: if given it represents the dest """ if self.has_iattr(item.conf, 'zwave_node') and self.has_iattr(item.conf, 'zwave_value'): - self.logger.debug("zwave: update_item was called with item '{}' from caller '{}', source '{}' and dest '{}'".format(item, caller, source, dest)) + self.logger.debug("zwave: update_item was called with item '{}' from caller '{}', source '{}' and dest '{}'".format( + item, caller, source, dest)) self.logger.debug("zwave: item value is '{}' from type '{}'".format(item(), type(item()))) try: self._network._manager.setValue(int(item.conf['zwave_value']), item()) except Exception as e: - self.logger.error('zwave: update_item error - {}'.format(e)) + self.logger.error('update_item error - {}'.format(e)) def zwave_value_update(self, network, node, value): """ @@ -224,17 +238,16 @@ def zwave_value_update(self, network, node, value): :param value: the value object which is updated """ value_id = value.value_id - self.logger.debug('zwave: zwave_value_update called for value_id={} and value={}'.format(value_id, value.data)) - self.logger.debug('zwave: self.listenOn={}'.format(self.listenOn)) + self.logger.debug('zwave_value_update called for value_id={} and value={}'.format(value_id, value.data)) + self.logger.debug('self.listenOn={}'.format(self.listenOn)) if value_id in self.listenOn: if self.listenOn[value_id][ITEMS] is not None: for item in self.listenOn[value_id][ITEMS]: try: item(value.data, 'ZWave') except Exception as e: - self.logger.error('zwave: zwave_value_update error - {}'.format(e)) + self.logger.error('zwave_value_update error - {}'.format(e)) else: - self.logger.debug('zwave: listener found, but no items bound') + self.logger.debug('listener found, but no items bound') else: - self.logger.debug('zwave: no listener defined') - + self.logger.debug('no listener defined') diff --git a/zwave/plugin.yaml b/zwave/plugin.yaml index ff368bb5d..5b9c214ff 100755 --- a/zwave/plugin.yaml +++ b/zwave/plugin.yaml @@ -11,7 +11,7 @@ plugin: keywords: z-wave, zwave # documentation: https://github.com/smarthomeNG/smarthome/wiki/CLI-Plugin # url of documentation (wiki) page - version: 1.4.1 # Plugin version + version: 1.4.2 # Plugin version sh_minversion: 1.3 # minimum shNG version to use this plugin # sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) multi_instance: False # plugin supports multi instance From 07b1742f38dc3092cf15610cfa8debd210db081b Mon Sep 17 00:00:00 2001 From: onkelandy Date: Tue, 9 Jul 2019 00:45:21 +0200 Subject: [PATCH 150/200] improved struct --- uzsu/plugin.yaml | 46 ++++++++++++++++++++++++++++++---------------- 1 file changed, 30 insertions(+), 16 deletions(-) diff --git a/uzsu/plugin.yaml b/uzsu/plugin.yaml index 536282643..90a7add69 100755 --- a/uzsu/plugin.yaml +++ b/uzsu/plugin.yaml @@ -42,6 +42,7 @@ plugin: ' maintainer: cmalo, bmxp, onkelandy tester: Sandman60, cmalo, schuma + state: ready # keywords: iot xyz documentation: https://www.smarthomeng.de/user/plugins/uzsu/user_doc.html support: https://knx-user-forum.de/forum/supportforen/smarthome-py/1364692-supportthread-für-uzsu-plugin @@ -50,6 +51,7 @@ plugin: sh_minversion: 1.5 # minimum shNG version to use this plugin # sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) multi_instance: False # plugin supports multi instance + restartable: unknown classname: UZSU # class containing the plugin parameters: @@ -85,6 +87,34 @@ item_attributes: ``cache: True`` as well for persistent storage of the UZSU information. ' +item_structs: + child: + name: Vorlage-Struktur für Zeitschaltuhren + + uzsu: + type: dict + uzsu_item: .. + cache: True + visu_acl: rw + + active: + remark: Use this item to easily turn on or off your UZSU + type: bool + eval: sh...activate(value) + visu_acl: rw + + status: + type: bool + eval: sh....activate() + eval_trigger: + - .. + - ... + on_change: .. = value + crontab: init = 0 + +logic_parameters: NONE + # Definition of logic parameters defined by this plugin + plugin_functions: # Definition of function interface of the plugin planned: @@ -168,19 +198,3 @@ plugin_functions: description: de: 'Maximales Alter eines UZSU Eintrags in Minuten, um beim Plugin-Start versäumte Einträge nachzuholen.' en: 'maximum age of an uzsu entry in minutes to be catched up at the plugin start' - -item_structs: - child: - name: Vorlage-Struktur für Zeitschaltuhren - - uzsu: - type: dict - uzsu_item: '..' - cache: 'True' - visu_acl: rw - - active: - remark: Use this item to easily turn on or off your UZSU - type: bool - eval: sh...activate(value) - visu_acl: rw From 62aa4d20df89c5c5153301c7918861c0f03a3446 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Wed, 10 Jul 2019 13:52:30 +0200 Subject: [PATCH 151/200] fix --- zwave/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/zwave/__init__.py b/zwave/__init__.py index 500c7fa32..0b913ff7a 100755 --- a/zwave/__init__.py +++ b/zwave/__init__.py @@ -83,7 +83,7 @@ def __init__(self, sh): try: self._logfile = '{}/log/{}'.format(self.get_vardir(), logfile) except Exception: - self._logfile = '{}/var/log/{}'.format(self.sh.get_basedir(), logfile) + self._logfile = '{}/var/log/{}'.format(self._sh.get_basedir(), logfile) self._loglevel = self.get_parameter_value('loglevel') self._sec_strategy = self.get_parameter_value('sec_strategy') self._ready = False From 53c201e324f3e98653fde223026cb674710caf02 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Thu, 11 Jul 2019 20:20:06 +0200 Subject: [PATCH 152/200] Update README.md knx_poll list yaml style --- knx/README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/knx/README.md b/knx/README.md index e80467f3f..5c485c1bd 100644 --- a/knx/README.md +++ b/knx/README.md @@ -153,7 +153,9 @@ living_room: window: type: bool knx_dpt: 1 - knx_poll: 1/1/9 | 60 + knx_poll: + - 1/1/9 + - 60 ``` ### logic.yaml From 5198e1a6a1bde55d556cc0e37b64ca992d397dd1 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 14 Jul 2019 01:50:44 +0200 Subject: [PATCH 153/200] fix issue when using value:X in list of values --- stateengine/StateEngineValue.py | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/stateengine/StateEngineValue.py b/stateengine/StateEngineValue.py index a68fd9e77..e4cbbd079 100755 --- a/stateengine/StateEngineValue.py +++ b/stateengine/StateEngineValue.py @@ -91,6 +91,8 @@ def set(self, value, name=""): else: value[i] = field_value[i] field_value[i] = value[i] + if source[i] == "value": + self.__listorder[i] = value[i] if source[i] == "template": if self.__template is None: self.__template = [] @@ -149,6 +151,8 @@ def set(self, value, name=""): elif field_value == "": field_value = source source = "value" + if source == "value": + self.__listorder = [field_value] else: source = "value" field_value = value From 74253e01f31c25271256acbea18d18f33e050fd9 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 14 Jul 2019 03:52:19 +0200 Subject: [PATCH 154/200] improve caller/source handling --- stateengine/StateEngineAction.py | 40 +++++++++++++++----------------- stateengine/StateEngineItem.py | 8 ++++--- stateengine/StateEngineTools.py | 4 ++-- 3 files changed, 26 insertions(+), 26 deletions(-) diff --git a/stateengine/StateEngineAction.py b/stateengine/StateEngineAction.py index 47a82db71..0f2aae99d 100755 --- a/stateengine/StateEngineAction.py +++ b/stateengine/StateEngineAction.py @@ -53,6 +53,7 @@ def __cast_delay(value): def __init__(self, abitem, name: str): super().__init__(abitem) self._parent = abitem + self._caller = StateEngineDefaults.plugin_identification self.shtime = Shtime.get_instance() self.items = Items.get_instance() self._name = name @@ -195,7 +196,6 @@ def __init__(self, abitem, name: str): self.__item = None self.__value = StateEngineValue.SeValue(self._abitem, "value") self.__mindelta = StateEngineValue.SeValue(self._abitem, "mindelta") - self.__caller = StateEngineDefaults.plugin_identification self.__function = "set" def _getitem_fromeval(self): @@ -213,7 +213,7 @@ def _getitem_fromeval(self): self.__mindelta.set_cast(self.__item.cast) self._scheduler_name = self.__item.property.path + "-SeItemDelayTimer" if self._abitem.id == self.__item.property.path: - self.__caller += '_self' + self._caller += '_self' except Exception as ex: raise Exception("Problem evaluating item '{}' from eval: {}".format(self.__item, ex)) if item is None: @@ -248,7 +248,7 @@ def complete(self, item_state): self.__mindelta.set_cast(self.__item.cast) self._scheduler_name = self.__item.property.path + "-SeItemDelayTimer" if self._abitem.id == self.__item.property.path: - self.__caller += '_self' + self._caller += '_self' # Write action to logger def write_to_logger(self): @@ -293,7 +293,7 @@ def _execute(self, actionname: str, repeat_text: str = ""): def _execute_set_add_remove(self, actionname, repeat_text, item, value): self._log_debug("{0}: Set '{1}' to '{2}'. {3}", actionname, item.property.path, value, repeat_text) # noinspection PyCallingNonCallable - item(value, caller='{} {}'.format(StateEngineDefaults.plugin_identification, self._parent)) + item(value, caller=self._caller, source=self._parent) # Class representing a single "se_setbyattr" action @@ -328,7 +328,7 @@ def _execute(self, actionname: str, repeat_text: str = ""): self._log_info("{0}: Setting values by attribute '{1}'.{2}", actionname, self.__byattr, repeat_text) for item in self.items.find_items(self.__byattr): self._log_info("\t{0} = {1}", item.property.path, item.conf[self.__byattr]) - item(item.conf[self.__byattr], caller='{} {}'.format(StateEngineDefaults.plugin_identification, self._parent)) + item(item.conf[self.__byattr], caller=self._caller, source=self._parent) # Class representing a single "se_trigger" action @@ -367,9 +367,8 @@ def write_to_logger(self): def _execute(self, actionname: str, repeat_text: str = ""): # Trigger logic self._log_info("{0}: Triggering logic '{1}' using value '{2}'.{3}", actionname, self.__logic, self.__value, repeat_text) - by = StateEngineDefaults.plugin_identification add_logics = 'logics.{}'.format(self.__logic) if not self.__logic.startswith('logics.') else self.__logic - self._sh.trigger(add_logics, by=by, source=self._name, value=self.__value) + self._sh.trigger(add_logics, by=self._caller, source=self._name, value=self.__value) # Class representing a single "se_run" action @@ -507,7 +506,7 @@ def _getitem_fromeval(self): self.__mindelta.set_cast(self.__item.cast) self._scheduler_name = self.__item.property.path + "-SeItemDelayTimer" if self._abitem.id == self.__item.property.path: - self.__caller += '_self' + self._caller += '_self' else: self._log_error("Problem evaluating item '{}' from eval. It is None.", item) return @@ -532,25 +531,24 @@ def _execute(self, actionname: str, repeat_text: str = ""): return # Set to different value first ("force") - _caller = '{} {}'.format(StateEngineDefaults.plugin_identification, self._parent) if self.__item() == value: if self.__item._type == 'bool': self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.path, not value) - self.__item(not value, caller=_caller) + self.__item(not value, caller=self._caller, source=self._parent) elif self.__item._type == 'str': if value != '': self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.path, '') - self.__item('', caller=_caller) + self.__item('', caller=self._caller, source=self._parent) else: self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.path, '-') - self.__item('-', caller=_caller) + self.__item('-', caller=self._caller, source=self._parent) elif self.__item._type == 'num': if value != 0: self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.path, 0) - self.__item(0, caller=_caller) + self.__item(0, caller=self._caller, source=self._parent) else: self._log_debug("{0}: Set '{1}' to '{2}' (Force)", actionname, self.__item.property.path, 1) - self.__item(1, caller=_caller) + self.__item(1, caller=self._caller, source=self._parent) else: self._log_warning("{0}: Force not implemented for item type '{1}'", actionname, self.__item._type) else: @@ -558,7 +556,7 @@ def _execute(self, actionname: str, repeat_text: str = ""): self._log_debug("{0}: Set '{1}' to '{2}'.{3}", actionname, self.__item.property.path, value, repeat_text) # noinspection PyCallingNonCallable - self.__item(value, caller=_caller) + self.__item(value, caller=self._caller, source=self._parent) # Class representing a single "se_special" action @@ -612,8 +610,8 @@ def _execute(self, actionname: str, repeat_text: str = ""): self.suspend_execute() elif self.__special == "retrigger": # noinspection PyCallingNonCallable - self.__value(False, caller='{} Retrigger'.format(StateEngineDefaults.plugin_identification)) - self.__value(True, caller='{} Retrigger'.format(StateEngineDefaults.plugin_identification)) + self.__value(False, caller=self._caller) + self.__value(True, caller='{} Retrigger'.format(self._caller)) else: self._log_decrease_indent() raise ValueError("{0}: Unknown special value '{1}'!".format(actionname, self.__special)) @@ -688,7 +686,7 @@ def _execute_set_add_remove(self, actionname, repeat_text, item, value): self._log_debug("{0}: Add '{1}' to '{2}'. {3}", actionname, value, item.property.path, repeat_text) value = item.property.value + value # noinspection PyCallingNonCallable - item(value, caller='{} {}'.format(StateEngineDefaults.plugin_identification, self._parent)) + item(value, caller=self._caller, source=self._parent) # Class representing a single "se_remove" action @@ -714,7 +712,7 @@ def _execute_set_add_remove(self, actionname, repeat_text, item, value): self._log_debug("{0}: Remove first entry '{1}' from '{2}'. {3}", actionname, v, item.property.path, repeat_text) except Exception as ex: self._log_warning("{0}: Remove first entry '{1}' from '{2}' failed: {3}", actionname, value, item.property.path, ex) - item(currentvalue, caller='{} {}'.format(StateEngineDefaults.plugin_identification, self._parent)) + item(currentvalue, caller=self._caller, source=self._parent) # Class representing a single "se_remove" action @@ -742,7 +740,7 @@ def _execute_set_add_remove(self, actionname, repeat_text, item, value): self._log_debug("{0}: Remove last entry '{1}' from '{2}'. {3}", actionname, v, item.property.path, repeat_text) except Exception as ex: self._log_warning("{0}: Remove last entry '{1}' from '{2}' failed: {3}", actionname, value, item.property.path, ex) - item(currentvalue, caller='{} {}'.format(StateEngineDefaults.plugin_identification, self._parent)) + item(currentvalue, caller=self._caller, source=self._parent) # Class representing a single "se_removeall" action @@ -769,4 +767,4 @@ def _execute_set_add_remove(self, actionname, repeat_text, item, value): except Exception as ex: self._log_warning("{0}: Remove all '{1}' from '{2}' failed: {3}", actionname, value, item.property.path, ex) - item(currentvalue, caller='{} {}'.format(StateEngineDefaults.plugin_identification, self._parent)) + item(currentvalue, caller=self._caller, source=self._parent) diff --git a/stateengine/StateEngineItem.py b/stateengine/StateEngineItem.py index e520481ec..e543e6c03 100755 --- a/stateengine/StateEngineItem.py +++ b/stateengine/StateEngineItem.py @@ -176,9 +176,11 @@ def update_state(self, item, caller=None, source=None, dest=None): if orig_caller != caller: text = "Eval initially triggered by {0} (item={1} source={2})" self.__logger.debug(text, orig_caller, orig_item.property.path, orig_source) - cond1 = orig_caller == '{} {}'.format(StateEngineDefaults.plugin_identification, item_id) - cond2 = caller == '{} {}'.format(StateEngineDefaults.plugin_identification, item_id) - if cond1 or cond2: + cond1 = orig_caller == StateEngineDefaults.plugin_identification + cond2 = caller == StateEngineDefaults.plugin_identification + cond1_2 = orig_source == item_id + cond2_2 = source == item_id + if (cond1 and cond1_2) or (cond2 and cond2_2): self.__logger.debug("Ignoring changes from {0}", StateEngineDefaults.plugin_identification) self.__update_in_progress = False return diff --git a/stateengine/StateEngineTools.py b/stateengine/StateEngineTools.py index 47b7ef623..3508a61e4 100755 --- a/stateengine/StateEngineTools.py +++ b/stateengine/StateEngineTools.py @@ -20,14 +20,14 @@ ######################################################################### import datetime from ast import literal_eval -# import logging +#import logging from lib.item import Items itemsApi = Items.get_instance() # # Some general tool functions # -# logger = logging.getLogger(__name__) +#logger = logging.getLogger(__name__) # Find a certain item below a given item. From bc82a8aca19256ba851899357b8b571bf53fec75 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 14 Jul 2019 10:35:01 +0200 Subject: [PATCH 155/200] fix se_eval get_current value --- stateengine/StateEngineCondition.py | 6 +++--- stateengine/StateEngineTools.py | 4 ++-- stateengine/plugin.yaml | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/stateengine/StateEngineCondition.py b/stateengine/StateEngineCondition.py index 193589d88..a4783ba73 100755 --- a/stateengine/StateEngineCondition.py +++ b/stateengine/StateEngineCondition.py @@ -190,9 +190,9 @@ def write_to_logger(self): if self.__item is not None: if isinstance(self.__item, list): for i in self.__item: - self._log_debug("item {0}", self.__name, i.property.path) + self._log_debug("item: {0} ({1})", self.__name, i.property.path) else: - self._log_debug("item {0}", self.__name, self.__item.property.path) + self._log_debug("item: {0} ({1})", self.__name, self.__item.property.path) if self.__eval is not None: if isinstance(self.__item, list): for e in self.__item: @@ -422,7 +422,7 @@ def __get_current(self): # noinspection PyUnusedLocal stateengine_eval = se_eval = StateEngineEval.SeEval(self._abitem) try: - value = eval(self.__eval) + value = eval(self.__eval).property.value except Exception as ex: text = "Condition {}: problem evaluating {}: {}" raise ValueError(text.format(self.__name, str(self.__eval), ex)) diff --git a/stateengine/StateEngineTools.py b/stateengine/StateEngineTools.py index 3508a61e4..47b7ef623 100755 --- a/stateengine/StateEngineTools.py +++ b/stateengine/StateEngineTools.py @@ -20,14 +20,14 @@ ######################################################################### import datetime from ast import literal_eval -#import logging +# import logging from lib.item import Items itemsApi = Items.get_instance() # # Some general tool functions # -#logger = logging.getLogger(__name__) +# logger = logging.getLogger(__name__) # Find a certain item below a given item. diff --git a/stateengine/plugin.yaml b/stateengine/plugin.yaml index d0cbd3874..19a2cc237 100755 --- a/stateengine/plugin.yaml +++ b/stateengine/plugin.yaml @@ -541,13 +541,13 @@ item_structs: - 'function: set' - 'to: False' - 'order: 2' - se_action_release: - - 'function: set' - - 'to: False' - - 'order: 3' se_action_suspend_end: - 'function: set' - 'to: ' + - 'order: 3' + se_action_release: + - 'function: set' + - 'to: False' - 'order: 4' se_action_retrigger: - 'function: special' From 3a0aa6d330aeef4638531ab5a5cc48ff34527317 Mon Sep 17 00:00:00 2001 From: psilo909 Date: Sun, 14 Jul 2019 18:58:31 +0200 Subject: [PATCH 156/200] added fix for missing "end_address" key --- traffic/__init__.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/traffic/__init__.py b/traffic/__init__.py index bf3955ccc..860b76cf6 100644 --- a/traffic/__init__.py +++ b/traffic/__init__.py @@ -80,7 +80,10 @@ def get_route_info(self, origin, destination, alternatives=False, departure_time route_information['start_address'] = leg['start_address'] route_information['start_location_lat'] = leg['start_location']['lat'] route_information['start_location_lon'] = leg['start_location']['lng'] - route_information['end_address'] = leg['end_address'] + if 'end_address' in leg: + route_information['end_address'] = leg['end_address'] + else: + route_information['end_address'] = 'n/a' route_information['end_location_lat'] = leg['end_location']['lat'] route_information['end_location_lon'] = leg['end_location']['lng'] route_information['html_instructions'] = '' From 26b40685cef551c79fbabe57070641c81986b478 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 14 Jul 2019 21:24:29 +0200 Subject: [PATCH 157/200] make age evaluation of se_eval items possible --- stateengine/StateEngineCondition.py | 40 +++++++++++++++++------------ stateengine/StateEngineEval.py | 2 +- 2 files changed, 25 insertions(+), 17 deletions(-) diff --git a/stateengine/StateEngineCondition.py b/stateengine/StateEngineCondition.py index a4783ba73..1c0bc7402 100755 --- a/stateengine/StateEngineCondition.py +++ b/stateengine/StateEngineCondition.py @@ -156,18 +156,14 @@ def complete(self, item_state): except Exception as ex: raise ValueError("Condition {0}: Error when casting: {1}".format(self.__name, ex)) - # 'agemin' and 'agemax' can only be used for items, not for eval + # 'agemin' and 'agemax' can only be used for items cond_min_max = self.__agemin.is_empty() and self.__agemax.is_empty() try: cond_evalitem = self.__eval and ("get_relative_item(" in self.__eval or "return_item(" in self.__eval) except Exception: cond_evalitem = False - if self.__item is None and not cond_min_max: - if cond_evalitem: - self._log_info("Make sure your se_eval '{}' really contains an item and not an ID. If the agemin/max " - "condition does not work though, please check your eval!", self.__eval) - else: - raise ValueError("Condition {}: 'agemin'/'agemax' can not be used for eval!".format(self.__name)) + if self.__item is None and not cond_min_max and not cond_evalitem: + raise ValueError("Condition {}: 'agemin'/'agemax' can not be used for eval!".format(self.__name)) return True @@ -348,12 +344,25 @@ def __check_age(self): self._log_info("Age of '{0}': No limits given", self.__name) return True - # Ignore if no current value can be determined (should not happen as we check this earlier, but to be sure ...) - if self.__item is None: + # Ignore if no current value can be determined + if self.__item is None and self.__eval is None: self._log_info("Age of '{0}': No item found! Considering condition as matching!", self.__name) return True - current = self.__item.age() + try: + cond_evalitem = self.__eval and ("get_relative_item(" in self.__eval or "return_item(" in self.__eval) + except Exception: + cond_evalitem = False + if self.__item is None and cond_evalitem is False: + self._log_info("Make sure your se_eval '{}' really contains an item and not an ID. If the age " + "condition does not work though, please check your eval!", self.__eval) + + try: + current = self.__get_current(type='age') + except Exception as ex: + self._log_info("Age of '{0}': Not possible to get age from eval {1}! " + "Considering condition as matching: {2}", self.__name, self.__eval, ex) + return True agemin = None if self.__agemin.is_empty() else self.__agemin.get() agemax = None if self.__agemax.is_empty() else self.__agemax.get() try: @@ -409,12 +418,12 @@ def __check_age(self): self._log_decrease_indent() # Current value of condition (based on item or eval) - def __get_current(self): + def __get_current(self, type='value'): if self.__item is not None: - # noinspection PyCallingNonCallable - return self.__item() + return self.__item.property.value if type == 'value' else self.__item.property.last_change_age if self.__eval is not None: # noinspection PyUnusedLocal + self._log_debug("Trying to get {} of eval {}", type, self.__eval) sh = self._sh if isinstance(self.__eval, str): # noinspection PyUnusedLocal @@ -422,13 +431,12 @@ def __get_current(self): # noinspection PyUnusedLocal stateengine_eval = se_eval = StateEngineEval.SeEval(self._abitem) try: - value = eval(self.__eval).property.value + value = eval(self.__eval).property.value if type == 'value' else eval(self.__eval).property.last_change_age except Exception as ex: text = "Condition {}: problem evaluating {}: {}" - raise ValueError(text.format(self.__name, str(self.__eval), ex)) + raise ValueError(text.format(self.__name, self.__eval, ex)) else: return value else: - # noinspection PyCallingNonCallable return self.__eval() raise ValueError("Condition {}: Neither 'item' nor eval given!".format(self.__name)) diff --git a/stateengine/StateEngineEval.py b/stateengine/StateEngineEval.py index a5fd86360..d76853a00 100755 --- a/stateengine/StateEngineEval.py +++ b/stateengine/StateEngineEval.py @@ -104,7 +104,7 @@ def get_relative_itemvalue(self, subitem_id): self._log_debug("Executing method 'get_relative_itemvalue({0})'", subitem_id) try: item = self._abitem.return_item(subitem_id) - self._log_info("Return '{0}' for item {1}", item.property.value, subitem_id) + self._log_info("Return '{0}' for item {1}", item.property.value, item.property.path) return item.property.value except Exception as ex: self._log_warning("Problem evaluating value of '{0}': {1}", subitem_id, ex) From 97f5c56bf664939f9ad6cb665005b5c3775e59c8 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 14 Jul 2019 22:26:08 +0200 Subject: [PATCH 158/200] allow relative items in eval by using sh..() --- stateengine/StateEngineValue.py | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/stateengine/StateEngineValue.py b/stateengine/StateEngineValue.py index e4cbbd079..d1b0db11e 100755 --- a/stateengine/StateEngineValue.py +++ b/stateengine/StateEngineValue.py @@ -338,14 +338,32 @@ def __do_cast(self, value): return None return value + def __parse_relative(self, evalstr, begintag, endtag): + if evalstr.find(begintag+'.') == -1: + return evalstr + + pref = '' + rest = evalstr + while (rest.find(begintag+'.') != -1): + pref += rest[:rest.find(begintag+'.')] + rest = rest[rest.find(begintag+'.')+len(begintag):] + rel = rest[:rest.find(endtag)] + rest = rest[rest.find(endtag)+len(endtag):] + pref += "se_eval.get_relative_itemvalue('{}')".format(rel) + + pref += rest + return pref + # Determine value by executing eval-function def __get_eval(self): # noinspection PyUnusedLocal sh = self._sh if isinstance(self.__eval, str): + self.__eval = self.__parse_relative(self.__eval, 'sh.', '()') if "stateengine_eval" in self.__eval or "se_eval" in self.__eval: # noinspection PyUnusedLocal stateengine_eval = se_eval = StateEngineEval.SeEval(self._abitem) + self._log_debug("Checking eval: {0}.", self.__eval) try: _newvalue = eval(self.__eval) if 'eval:{}'.format(self.__eval) in self.__listorder: @@ -362,7 +380,7 @@ def __get_eval(self): val = val.replace("\n", "") except Exception: pass - self._log_info("Checking eval: {0}.", val) + self._log_debug("Checking eval from list: {0}.", val) self._log_increase_indent() if isinstance(val, str): if "stateengine_eval" in val or "se_eval" in val: From 898f7be54aaef98c3b8c34cf7caa693585fbc795 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 14 Jul 2019 23:58:25 +0200 Subject: [PATCH 159/200] new variable current.action_name --- stateengine/StateEngineAction.py | 39 ++++++++++++++++----- stateengine/StateEngineItem.py | 3 +- stateengine/user_doc/user_doc10.rst | 54 +++++++++++++++++++++++++++++ 3 files changed, 86 insertions(+), 10 deletions(-) diff --git a/stateengine/StateEngineAction.py b/stateengine/StateEngineAction.py index 0f2aae99d..34cd9e2c3 100755 --- a/stateengine/StateEngineAction.py +++ b/stateengine/StateEngineAction.py @@ -153,8 +153,9 @@ def execute(self, is_repeat: bool, allow_item_repeat: bool): delay = 0 if self.__delay.is_empty() else self.__delay.get() actionname = "Action '{0}'".format(self._name) if delay == 0 else "Delay Timer '{0}'".format( self._scheduler_name) + if delay == 0: - self._execute(actionname, repeat_text) + self._execute(actionname, self._name, repeat_text) elif delay is None: self._log_warning("Action'{0}: Ignored because of errors while determining the delay!", self._name) elif delay < 0: @@ -163,7 +164,7 @@ def execute(self, is_repeat: bool, allow_item_repeat: bool): self._log_info("Action '{0}: Add {1} second timer '{2}' for delayed execution. {3}", self._name, delay, self._scheduler_name, repeat_text) next_run = self.shtime.now() + datetime.timedelta(seconds=delay) - self._sh.scheduler.add(self._scheduler_name, self._execute, value={'actionname': actionname}, next=next_run) + self._sh.scheduler.add(self._scheduler_name, self._execute, value={'actionname': actionname, 'namevar': self._name}, next=next_run) # set the action based on a set_(action_name) attribute # value: Value of the set_(action_name) attribute @@ -273,7 +274,10 @@ def _can_execute(self): return True # Really execute the action (needs to be implemented in derived classes) - def _execute(self, actionname: str, repeat_text: str = ""): + def _execute(self, actionname: str, namevar: str = "", repeat_text: str = ""): + self._abitem.set_variable('current.action_name', namevar) + self._log_debug("Running action '{}'", namevar) + self._log_increase_indent() value = self.__value.get() if value is None: @@ -291,6 +295,7 @@ def _execute(self, actionname: str, repeat_text: str = ""): self._execute_set_add_remove(actionname, repeat_text, self.__item, value) def _execute_set_add_remove(self, actionname, repeat_text, item, value): + self._log_decrease_indent() self._log_debug("{0}: Set '{1}' to '{2}'. {3}", actionname, item.property.path, value, repeat_text) # noinspection PyCallingNonCallable item(value, caller=self._caller, source=self._parent) @@ -324,7 +329,9 @@ def write_to_logger(self): self._log_debug("set by attriute: {0}", self.__byattr) # Really execute the action - def _execute(self, actionname: str, repeat_text: str = ""): + def _execute(self, actionname: str, namevar: str = "", repeat_text: str = ""): + self._abitem.set_variable('current.action_name', namevar) + self._log_debug("Running action '{}'", namevar) self._log_info("{0}: Setting values by attribute '{1}'.{2}", actionname, self.__byattr, repeat_text) for item in self.items.find_items(self.__byattr): self._log_info("\t{0} = {1}", item.property.path, item.conf[self.__byattr]) @@ -364,7 +371,9 @@ def write_to_logger(self): self._log_debug("value: {0}", self.__value) # Really execute the action - def _execute(self, actionname: str, repeat_text: str = ""): + def _execute(self, actionname: str, namevar: str = "", repeat_text: str = ""): + self._abitem.set_variable('current.action_name', namevar) + self._log_debug("Running action '{}'", namevar) # Trigger logic self._log_info("{0}: Triggering logic '{1}' using value '{2}'.{3}", actionname, self.__logic, self.__value, repeat_text) add_logics = 'logics.{}'.format(self.__logic) if not self.__logic.startswith('logics.') else self.__logic @@ -405,7 +414,10 @@ def write_to_logger(self): self._log_debug("eval: {0}", StateEngineTools.get_eval_name(self.__eval)) # Really execute the action - def _execute(self, actionname: str, repeat_text: str = ""): + def _execute(self, actionname: str, namevar: str = "", repeat_text: str = ""): + self._abitem.set_variable('current.action_name', namevar) + self._log_debug("Running action '{}'", namevar) + self._log_increase_indent() if isinstance(self.__eval, str): # noinspection PyUnusedLocal sh = self._sh @@ -414,14 +426,18 @@ def _execute(self, actionname: str, repeat_text: str = ""): stateengine_eval = se_eval = StateEngineEval.SeEval(self._abitem) try: eval(self.__eval) + self._log_decrease_indent() except Exception as ex: + self._log_decrease_indent() text = "{0}: Problem evaluating '{1}': {2}." self._log_error(text.format(actionname, StateEngineTools.get_eval_name(self.__eval), ex)) else: try: # noinspection PyCallingNonCallable self.__eval() + self._log_decrease_indent() except Exception as ex: + self._log_decrease_indent() text = "{0}: Problem calling '{0}': {1}." self._log_error(text.format(actionname, StateEngineTools.get_eval_name(self.__eval), ex)) @@ -516,7 +532,10 @@ def _getitem_fromeval(self): # Really execute the action (needs to be implemented in derived classes) # noinspection PyProtectedMember - def _execute(self, actionname: str, repeat_text: str = ""): + def _execute(self, actionname: str, namevar: str = "", repeat_text: str = ""): + self._abitem.set_variable('current.action_name', namevar) + self._log_debug("Running action '{}'", namevar) + self._log_increase_indent() value = self.__value.get() if value is None: return @@ -553,7 +572,7 @@ def _execute(self, actionname: str, repeat_text: str = ""): self._log_warning("{0}: Force not implemented for item type '{1}'", actionname, self.__item._type) else: self._log_debug("{0}: New value differs from old value, no force required.", actionname) - + self._log_decrease_indent() self._log_debug("{0}: Set '{1}' to '{2}'.{3}", actionname, self.__item.property.path, value, repeat_text) # noinspection PyCallingNonCallable self.__item(value, caller=self._caller, source=self._parent) @@ -598,7 +617,9 @@ def write_to_logger(self): self._log_debug("Retrigger item: {0}", self.__value.property.path) # Really execute the action - def _execute(self, actionname: str, repeat_text: str = ""): + def _execute(self, actionname: str, namevar: str = "", repeat_text: str = ""): + self._abitem.set_variable('current.action_name', namevar) + self._log_debug("Running action '{}'", namevar) try: _log_value = self.__value.property.path except Exception: diff --git a/stateengine/StateEngineItem.py b/stateengine/StateEngineItem.py index e543e6c03..b13699816 100755 --- a/stateengine/StateEngineItem.py +++ b/stateengine/StateEngineItem.py @@ -118,7 +118,8 @@ def __init__(self, smarthome, item): "current.state_id": "", "current.state_name": "", "current.conditionset_id": "", - "current.conditionset_name": "" + "current.conditionset_name": "", + "current.action_name": "" } # initialize states diff --git a/stateengine/user_doc/user_doc10.rst b/stateengine/user_doc/user_doc10.rst index 6bfcf4bbe..c443053fb 100755 --- a/stateengine/user_doc/user_doc10.rst +++ b/stateengine/user_doc/user_doc10.rst @@ -138,6 +138,60 @@ Im Plugin stehen folgende Variablen zur Verfügung: Beide obigen Variablen werden vom Suspendzustand genutzt, können bei Bedarf aber auch für andere Zwecke, welche auch immer, genutzt werden. +**current.action_name:** +*Der Name der Aktion, in der auf die Variable zugegriffen wird* + +Der Name der aktuellen Aktion, also der Teil hinter ``se_action_`` kann für +das Setzen oder Eruieren von Werten herangezogen werden. Dies macht insbesondere +dann Sinn, wenn auf Setting-Items in der Aktion Bezug genommen wird. Durch +diese Variable ist es so je nach Setup möglich, ein Template für sämtliche +Aktionen zu nutzen. Hier ein Beispiel. Das Template "setvalue" wird für das +Setzen mehrerer Items herangezogen. Der eval Ausdruck schafft eine Referenz +auf das passende Unteritem in licht1.automatik.settings. + +.. code-block:: yaml + + #items/item.yaml + licht1: + irgendeinitem: + type: bool + + dimmen: + warm: + sollwert: + type: num + kalt: + sollwert: + type: num + + automatik: + settings: + sollwert_warm: + type: num + sollwert_kalt: + type: num + wasauchimmer: + type: bool + + rules: + se_item_sollwert_warm: licht1.dimmen.warm.sollwert + se_item_sollwert_kalt: licht1.dimmen.kalt.sollwert + se_item_wasauchimmer: licht1.irgendeinitem + se_template_setvalue: "eval:sh.return_item(se_eval.get_relative_itemid('..settings.{}'.format( + se_eval.get_variable('current.action_name'))))()" + zustand1: + name: 'Ein Zustand' + on_enter_or_stay: + se_action_sollwert_warm: + - 'function: set' + - "to: template:setvalue" + se_action_sollwert_kalt: + - 'function: set' + - "to: template:setvalue" + se_action_wasauchimmer: + - 'function: set' + - "to: template:setvalue" + **current.state_id:** *Die Id des Status, der gerade geprüft wird* From b670e7ad9ed308cc0c9f1b6d870249bcc9f8c377 Mon Sep 17 00:00:00 2001 From: psilo909 Date: Mon, 15 Jul 2019 07:31:12 +0200 Subject: [PATCH 160/200] Changes to error handling Added execption --- withings_health/__init__.py | 90 ++++++++++++++++++------------------- withings_health/plugin.yaml | 4 +- 2 files changed, 47 insertions(+), 47 deletions(-) diff --git a/withings_health/__init__.py b/withings_health/__init__.py index ac0fbc7c6..1abc43b98 100644 --- a/withings_health/__init__.py +++ b/withings_health/__init__.py @@ -30,11 +30,10 @@ class WithingsHealth(SmartPlugin): ALLOW_MULTIINSTANCE = True - PLUGIN_VERSION = "1.5.3" + PLUGIN_VERSION = "1.6.4" ALLOWED_MEASURE_TYPES = [1, 4, 5, 6, 8, 11] def __init__(self, sh, *args, **kwargs): - self.logger = logging.getLogger(__name__) self.shtime = Shtime.get_instance() self._user_id = self.get_parameter_value('user_id') self._client_id = self.get_parameter_value('client_id') @@ -56,8 +55,8 @@ def stop(self): def _store_tokens(self, token): self.logger.debug( - "Plugin '{}': Updating tokens to items: access_token - {} token_expiry - {} token_type - {} refresh_token - {}". - format(self.get_fullname(), token['access_token'], token['expires_in'], token['token_type'], + "Updating tokens to items: access_token - {} token_expiry - {} token_type - {} refresh_token - {}". + format(token['access_token'], token['expires_in'], token['token_type'], token['refresh_token'])) self.get_item('access_token')(token['access_token']) self.get_item('token_expiry')( @@ -70,8 +69,7 @@ def _update_loop(self): """ Starts the update loop for all known items. """ - self.logger.debug( - "Plugin '{}': Starting update loop".format(self.get_fullname())) + self.logger.debug("Starting update loop") if not self.alive: return @@ -101,8 +99,7 @@ def _update(self): if 'access_token' not in self.get_items() or 'token_expiry' not in self.get_items() or 'token_type' not in self.get_items() or 'refresh_token' not in self.get_items(): self.logger.error( - "Plugin '{}': Mandatory Items for OAuth2 Data do not exist. Verify that you have items with withings_type: token_expiry, token_type, refresh_token and access_token in your item tree.".format( - self.get_fullname())) + "Mandatory Items for OAuth2 Data do not exist. Verify that you have items with withings_type: token_expiry, token_type, refresh_token and access_token in your item tree.") return if self._client is None: @@ -113,12 +110,12 @@ def _update(self): if (self.shtime.now() < datetime.datetime.fromtimestamp(self.get_item( 'token_expiry')(), tz=self.shtime.tzinfo())): self.logger.debug( - "Plugin '{}': Token is valid, will expire on {}.".format( - self.get_fullname(), datetime.datetime.fromtimestamp(self.get_item( + "Token is valid, will expire on {}.".format( + datetime.datetime.fromtimestamp(self.get_item( 'token_expiry')(), tz=self.shtime.tzinfo()).strftime('%d.%m.%Y %H:%M:%S'))) self.logger.debug( - "Plugin '{}': Initializing NokiaCredentials: access_token - {} token_expiry - {} token_type - {} refresh_token - {} user_id - {} client_id - {} consumer_secret - {}". - format(self.get_fullname(), self.get_item('access_token')(), + "Initializing NokiaCredentials: access_token - {} token_expiry - {} token_type - {} refresh_token - {} user_id - {} client_id - {} consumer_secret - {}". + format(self.get_item('access_token')(), self.get_item('token_expiry')(), self.get_item('token_type')(), self.get_item('refresh_token')(), @@ -134,21 +131,26 @@ def _update(self): self._client = NokiaApi(self._creds, refresh_cb=self._store_tokens) else: self.logger.error( - "Plugin '{}': Token is expired, run OAuth2 again from Web Interface (Expiry Date: {}).".format( - self.get_fullname(), datetime.datetime.fromtimestamp(self.get_item( + "Token is expired, run OAuth2 again from Web Interface (Expiry Date: {}).".format( + datetime.datetime.fromtimestamp(self.get_item( 'token_expiry')(), tz=self.shtime.tzinfo()).strftime('%d.%m.%Y %H:%M:%S'))) return else: self.logger.error( - "Plugin '{}': Items for OAuth2 Data are not set with required values. Please run process via WebGUI of the plugin.".format( - self.get_fullname())) + "Items for OAuth2 Data are not set with required values. Please run process via WebGUI of the plugin.") return - measures = self._client.get_measures() + try: + measures = self._client.get_measures() + except Exception as e: + self.logger.error( + "An exception occured when running get_measures(): {}.".format( + str(e))) + last_measure = measures[0] if last_measure.get_measure(11) is not None and 'heart_pulse' in self._items: self._items['heart_pulse'](last_measure.get_measure(11), self.get_shortname()) - self.logger.debug("Plugin '{}': heart_pulse - {}".format(self.get_fullname(), last_measure.get_measure(11))) + self.logger.debug("heart_pulse - {}".format(last_measure.get_measure(11))) # Bugfix for strange behavior of returning heart_pulse as seperate dataset.. if last_measure.get_measure(1) is None: @@ -156,74 +158,74 @@ def _update(self): if last_measure.get_measure(1) is not None and 'weight' in self._items: self._items['weight'](last_measure.get_measure(1), self.get_shortname()) - self.logger.debug("Plugin '{}': weight - {}".format(self.get_fullname(), last_measure.get_measure(1))) + self.logger.debug("weight - {}".format(last_measure.get_measure(1))) if last_measure.get_measure(4) is not None and 'height' in self._items: self._items['height'](last_measure.get_measure(4), self.get_shortname()) - self.logger.debug("Plugin '{}': height - {}".format(self.get_fullname(), last_measure.get_measure(4))) + self.logger.debug("height - {}".format(last_measure.get_measure(4))) if last_measure.get_measure(5) is not None and 'fat_free_mass' in self._items: self._items['fat_free_mass'](last_measure.get_measure(5), self.get_shortname()) self.logger.debug( - "Plugin '{}': fat_free_mass - {}".format(self.get_fullname(), last_measure.get_measure(5))) + "fat_free_mass - {}".format(last_measure.get_measure(5))) if last_measure.get_measure(6) is not None and 'fat_ratio' in self._items: self._items['fat_ratio'](last_measure.get_measure(6), self.get_shortname()) - self.logger.debug("Plugin '{}': fat_ratio - {}".format(self.get_fullname(), last_measure.get_measure(6))) + self.logger.debug("fat_ratio - {}".format(last_measure.get_measure(6))) if last_measure.get_measure(8) is not None and 'fat_mass_weight' in self._items: self._items['fat_mass_weight'](last_measure.get_measure(8), self.get_shortname()) self.logger.debug( - "Plugin '{}': fat_mass_weight - {}".format(self.get_fullname(), last_measure.get_measure(8))) + "fat_mass_weight - {}".format(last_measure.get_measure(8))) if last_measure.get_measure(9) is not None and 'diastolic_blood_pressure' in self._items: self._items['diastolic_blood_pressure'](last_measure.get_measure(9), self.get_shortname()) self.logger.debug( - "Plugin '{}': diastolic_blood_pressure - {}".format(self.get_fullname(), last_measure.get_measure(9))) + "diastolic_blood_pressure - {}".format(last_measure.get_measure(9))) if last_measure.get_measure(10) is not None and 'systolic_blood_pressure' in self._items: self._items['systolic_blood_pressure'](last_measure.get_measure(10), self.get_shortname()) self.logger.debug( - "Plugin '{}': systolic_blood_pressure - {}".format(self.get_fullname(), last_measure.get_measure(10))) + "systolic_blood_pressure - {}".format(last_measure.get_measure(10))) if last_measure.get_measure(11) is not None and 'heart_pulse' in self._items: self._items['heart_pulse'](last_measure.get_measure(11), self.get_shortname()) - self.logger.debug("Plugin '{}': heart_pulse - {}".format(self.get_fullname(), last_measure.get_measure(11))) + self.logger.debug("heart_pulse - {}".format(last_measure.get_measure(11))) if last_measure.get_measure(12) is not None and 'temperature' in self._items: self._items['temperature'](last_measure.get_measure(12), self.get_shortname()) - self.logger.debug("Plugin '{}': temperature - {}".format(self.get_fullname(), last_measure.get_measure(12))) + self.logger.debug("temperature - {}".format(last_measure.get_measure(12))) if last_measure.get_measure(54) is not None and 'spo2' in self._items: self._items['spo2'](last_measure.get_measure(54), self.get_shortname()) - self.logger.debug("Plugin '{}': spo2 - {}".format(self.get_fullname(), last_measure.get_measure(54))) + self.logger.debug("spo2 - {}".format(last_measure.get_measure(54))) if last_measure.get_measure(71) is not None and 'body_temperature' in self._items: self._items['body_temperature'](last_measure.get_measure(71), self.get_shortname()) self.logger.debug( - "Plugin '{}': body_temperature - {}".format(self.get_fullname(), last_measure.get_measure(71))) + "body_temperature - {}".format(last_measure.get_measure(71))) if last_measure.get_measure(72) is not None and 'skin_temperature' in self._items: self._items['skin_temperature'](last_measure.get_measure(72), self.get_shortname()) self.logger.debug( - "Plugin '{}': skin_temperature - {}".format(self.get_fullname(), last_measure.get_measure(72))) + "skin_temperature - {}".format(last_measure.get_measure(72))) if last_measure.get_measure(76) is not None and 'muscle_mass' in self._items: self._items['muscle_mass'](last_measure.get_measure(76), self.get_shortname()) - self.logger.debug("Plugin '{}': muscle_mass - {}".format(self.get_fullname(), last_measure.get_measure(76))) + self.logger.debug("muscle_mass - {}".format(last_measure.get_measure(76))) if last_measure.get_measure(77) is not None and 'hydration' in self._items: self._items['hydration'](last_measure.get_measure(77), self.get_shortname()) - self.logger.debug("Plugin '{}': hydration - {}".format(self.get_fullname(), last_measure.get_measure(77))) + self.logger.debug("hydration - {}".format(last_measure.get_measure(77))) if last_measure.get_measure(88) is not None and 'bone_mass' in self._items: self._items['bone_mass'](last_measure.get_measure(88), self.get_shortname()) - self.logger.debug("Plugin '{}': bone_mass - {}".format(self.get_fullname(), last_measure.get_measure(88))) + self.logger.debug("bone_mass - {}".format(last_measure.get_measure(88))) if last_measure.get_measure(91) is not None and 'pulse_wave_velocity' in self._items: self._items['pulse_wave_velocity'](last_measure.get_measure(91), self.get_shortname()) self.logger.debug( - "Plugin '{}': pulse_wave_velocity - {}".format(self.get_fullname(), last_measure.get_measure(91))) + "pulse_wave_velocity - {}".format(last_measure.get_measure(91))) if 'height' in self._items and ('bmi' in self._items or 'bmi_text' in self._items) and last_measure.get_measure( 1) is not None: @@ -251,11 +253,9 @@ def _update(self): self._items['bmi_text']('Adipositas Grad III', self.get_shortname()) else: self.logger.error( - "Plugin '{}': Cannot calculate BMI: height is 0, please set height (in m) for height item manually.".format( - self.get_fullname())) + "Cannot calculate BMI: height is 0, please set height (in m) for height item manually.") else: - self.logger.error( - "Plugin '{}': Cannot calculate BMI: height and / or bmi item missing.".format(self.get_fullname())) + self.logger.error("Cannot calculate BMI: height and / or bmi item missing.") def parse_item(self, item): """ @@ -295,7 +295,7 @@ def init_webinterface(self): except: self.mod_http = None if self.mod_http == None: - self.logger.error("Plugin '{}': Not initializing the web interface".format(self.get_fullname())) + self.logger.error("Not initializing the web interface") return False # set application configuration for cherrypy @@ -350,10 +350,10 @@ def _get_callback_url(self): for web_if in web_ifs: if web_if['Instance'] == self.plugin.get_instance_name(): callback_url = "http://{}:{}{}".format(ip, port, web_if['Mount']) - self.logger.debug("Plugin '{}': WebIf found, callback is {}".format(self.plugin.get_fullname(), - callback_url)) + self.logger.debug("WebIf found, callback is {}".format(self.plugin.get_fullname(), + callback_url)) return callback_url - self.logger.error("Plugin '{}': Callback URL cannot be established.".format(self.plugin.get_fullname())) + self.logger.error("Callback URL cannot be established.".format(self.plugin.get_fullname())) @cherrypy.expose def index(self, reload=None, state=None, code=None, error=None): @@ -373,18 +373,18 @@ def index(self, reload=None, state=None, code=None, error=None): ) if not reload and code: - self.logger.debug("Plugin '{}': Got code as callback: {}".format(self.plugin.get_fullname(), code)) + self.logger.debug("Got code as callback: {}".format(self.plugin.get_fullname(), code)) credentials = None try: credentials = self._auth.get_credentials(code) except Exception as e: self.logger.error( - "Plugin '{}': An error occurred, perhaps code parameter is invalid or too old? Message: {}".format( + "An error occurred, perhaps code parameter is invalid or too old? Message: {}".format( self.plugin.get_fullname(), str(e))) if credentials is not None: self._creds = credentials self.logger.debug( - "Plugin '{}': New credentials are: access_token {}, token_expiry {}, token_type {}, refresh_token {}". + "New credentials are: access_token {}, token_expiry {}, token_type {}, refresh_token {}". format(self.plugin.get_fullname(), self._creds.access_token, self._creds.token_expiry, self._creds.token_type, self._creds.refresh_token)) self.plugin.get_item('access_token')(self._creds.access_token) diff --git a/withings_health/plugin.yaml b/withings_health/plugin.yaml index e2fb34b14..f3990fec0 100644 --- a/withings_health/plugin.yaml +++ b/withings_health/plugin.yaml @@ -12,8 +12,8 @@ plugin: documentation: 'http://smarthomeng.de/user/plugins_doc/config/withings_health.html' support: 'https://knx-user-forum.de/forum/supportforen/smarthome-py/1141179-nokia-health-plugin' - version: 1.5.3 # Plugin version - sh_minversion: 1.4c # minimum shNG version to use this plugin + version: 1.6.4 # Plugin version + sh_minversion: 1.6 # minimum shNG version to use this plugin # sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) multi_instance: True # plugin supports multi instance restartable: unknown From 440fcee97f1b81f02694cdabe978cc0a11ba3c7f Mon Sep 17 00:00:00 2001 From: psilo909 Date: Wed, 17 Jul 2019 12:31:04 +0200 Subject: [PATCH 161/200] Added check for NextDay without \n --- simulation/__init__.py | 8 ++++---- simulation/plugin.yaml | 6 +++--- 2 files changed, 7 insertions(+), 7 deletions(-) diff --git a/simulation/__init__.py b/simulation/__init__.py index a8124caae..71f4cc6a9 100644 --- a/simulation/__init__.py +++ b/simulation/__init__.py @@ -48,7 +48,7 @@ class Simulation(SmartPlugin): ALLOW_MULTIINSTANCE = False - PLUGIN_VERSION = "1.5.0.7" + PLUGIN_VERSION = "1.5.0.8" def __init__(self, sh, *args, **kwargs): self.logger = logging.getLogger(__name__) @@ -225,7 +225,7 @@ def _set_item(self, **kwargs): except: self.logger.error('Skipped unknown item: {}'.format(target)) entry = self.file.readline() - if entry == 'NextDay\n': + if entry in ['NextDay', 'NextDay\n']: entry = self.file.readline() if entry != '': day = entry.split(';')[0] @@ -310,7 +310,7 @@ def _get_tank(self): tank = 0; while entry != '': entry = self.file.readline() - if entry == 'NextDay\n': + if entry in ['NextDay', 'NextDay\n']: tank = tank + 1 else: if entry != '': @@ -334,7 +334,7 @@ def _remove_first_day(self): # except IOError as error: # self.logger.error('Canot open tempfile: {}'.format(error)) entry = 'bla' - while (entry != 'NextDay\n') and (entry != ''): + while (entry not in ['NextDay','NextDay\n']) and (entry != ''): entry = self.file.readline() while (entry != ''): entry = self.file.readline() diff --git a/simulation/plugin.yaml b/simulation/plugin.yaml index 3a110f8cb..6254fed05 100755 --- a/simulation/plugin.yaml +++ b/simulation/plugin.yaml @@ -11,9 +11,9 @@ plugin: # keywords: iot xyz documentation: https://www.smarthomeng.de/developer/plugins/simulation/README.html # url of documentation (wiki) page support: 'https://knx-user-forum.de/forum/supportforen/smarthome-py/841097-anwesenheitssimulation-0-1' - version: 1.5.0.7 # Plugin version - sh_minversion: 1.4c # minimum shNG version to use this plugin -# sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) + version: 1.5.0.8 # Plugin version + sh_minversion: 1.5 # minimum shNG version to use this plugin +# sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) multi_instance: False # plugin supports multi instance restartable: unknown classname: Simulation # class containing the plugin From d5b70f7f03051c92fe48b2432672eedf5654c28a Mon Sep 17 00:00:00 2001 From: psilo909 Date: Thu, 18 Jul 2019 08:12:53 +0200 Subject: [PATCH 162/200] fixed error for missing duration_in_traffic --- traffic/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/traffic/__init__.py b/traffic/__init__.py index 860b76cf6..ecdd28d14 100644 --- a/traffic/__init__.py +++ b/traffic/__init__.py @@ -76,7 +76,8 @@ def get_route_info(self, origin, destination, alternatives=False, departure_time for leg in route['legs']: route_information['distance'] = leg['distance']['value'] route_information['duration'] = leg['duration']['value'] - route_information['duration_in_traffic'] = leg['duration_in_traffic']['value'] + if 'duration_in_traffic' in leg: + route_information['duration_in_traffic'] = leg['duration_in_traffic']['value'] route_information['start_address'] = leg['start_address'] route_information['start_location_lat'] = leg['start_location']['lat'] route_information['start_location_lon'] = leg['start_location']['lng'] From d30986350c08291d86696f51333c2e95d574fbcc Mon Sep 17 00:00:00 2001 From: ivande Date: Thu, 18 Jul 2019 15:24:55 +0200 Subject: [PATCH 163/200] Adaptation to the version SoCo 0.17 (including changes from pfitschi) --- .gitignore | 1 + sonos/README.md | 5 +- sonos/__init__.py | 257 +++--- sonos/plugin.yaml | 11 +- sonos/soco/__init__.py | 2 +- sonos/soco/cache.py | 3 - sonos/soco/config.py | 16 +- sonos/soco/core.py | 52 +- sonos/soco/data_structures.py | 12 +- sonos/soco/events.py | 776 +++++++------------ sonos/soco/events_base.py | 766 ++++++++++++++++++ sonos/soco/events_twisted.py | 556 +++++++++++++ sonos/soco/ms_data_structures.py | 2 +- sonos/soco/music_library.py | 2 +- sonos/soco/music_services/accounts.py | 2 +- sonos/soco/music_services/data_structures.py | 2 +- sonos/soco/services.py | 44 +- sonos/tts.py | 9 +- 18 files changed, 1835 insertions(+), 683 deletions(-) create mode 100644 sonos/soco/events_base.py create mode 100644 sonos/soco/events_twisted.py diff --git a/.gitignore b/.gitignore index 5116ee714..4787c4243 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,4 @@ Thumbs.db # Pycharm settings /.idea +/.vs diff --git a/sonos/README.md b/sonos/README.md index f653cb6da..dd645fd3a 100644 --- a/sonos/README.md +++ b/sonos/README.md @@ -18,10 +18,11 @@ ## Requirements -* SmarthomeNG v1.3 or newer +* SmarthomeNG v1.5 or newer * Python3 libraries ```requests```, ```tinytag``` and ```xmltodict``` * available ```ping``` executable on the host system -* tested on Sonos software 8.1 +* tested on Sonos software 10.3 +* SoCo 0.17 (it will be necessary to update the Sonos software to ≥10.1) To install all necessary libraries for SmarthomeNG, you can run following bash command: diff --git a/sonos/__init__.py b/sonos/__init__.py index 022271eb1..c3e980d5c 100755 --- a/sonos/__init__.py +++ b/sonos/__init__.py @@ -68,7 +68,7 @@ class WebserviceHttpHandler(BaseHTTPRequestHandler): webroot = None def __init__(self, request, client_address, server): - self._logger = logging.getLogger('sonos') # get a unique logger for the plugin and provide it internally + self.logger = logging.getLogger('sonos') # get a unique logger for the plugin and provide it internally super().__init__(request, client_address, server) def _get_mime_type_by_filetype(self, file_path): @@ -90,7 +90,7 @@ def _get_mime_type_by_filetype(self, file_path): raise Exception("Could not found mime-type for extension '{ext}'.".format(ext=extension)) except Exception as err: - self._logger.warning(err) + self.logger.warning(err) return None def do_GET(self): @@ -119,7 +119,7 @@ def do_GET(self): return client = "{ip}:{port}".format(ip=self.client_address[0], port=self.client_address[1]) - self._logger.debug("Webservice: delivering file '{path}' to client ip {client}.".format(path=file_path, + self.logger.debug("Webservice: delivering file '{path}' to client ip {client}.".format(path=file_path, client=client)) file = open(file_path, 'rb').read() self.send_response(200) @@ -128,8 +128,8 @@ def do_GET(self): self.end_headers() self.wfile.write(file) except Exception as ex: - self._logger.error("Error delivering file {file}".format(file=file_path)) - self._logger.error(ex) + self.logger.error("Error delivering file {file}".format(file=file_path)) + self.logger.error(ex) finally: self.connection.close() @@ -162,14 +162,15 @@ def stop(self): class SubscriptionHandler(object): - def __init__(self, endpoint, service, logger): + def __init__(self, endpoint, service, logger, threadName): self._lock = threading.Lock() self._thread = None self._service = service self._endpoint = endpoint self._event = None self._signal = None - self._logger = logger + self.logger = logger + self._threadName = threadName def subscribe(self): with self._lock: @@ -177,9 +178,9 @@ def subscribe(self): try: self._event = self._service.subscribe(auto_renew=True) except Exception as err: - self._logger.warning("Sonos: {err}".format(err=err)) + self.logger.warning("Sonos: {err}".format(err=err)) if self._event: - self._thread = threading.Thread(target=self._endpoint, args=(self,)) + self._thread = threading.Thread(target=self._endpoint, name=self._threadName, args=(self,)) self._thread.setDaemon(True) self._thread.start() @@ -190,11 +191,11 @@ def unsubscribe(self): try: self._event.unsubscribe() except Exception as err: - self._logger.warning("Sonos: {err}".format(err=err)) + self.logger.warning("Sonos: {err}".format(err=err)) self._signal.set() if self._thread: - self._thread.join() - self._logger.debug("Sonos: event {event} unsubscribed and thread terminated".format( + self._thread.join(2) + self.logger.debug("Sonos: event {event} unsubscribed and thread terminated".format( event=self._endpoint)) @property @@ -218,7 +219,7 @@ def is_subscribed(self): class Speaker(object): def __init__(self, uid, logger): - self._logger = logger + self.logger = logger self.uid_items = [] self._uid = "" self._soco = None @@ -319,26 +320,26 @@ def soco(self): def soco(self, value): if self._soco != value: self._soco = value - self._logger.debug("Sonos: {uid}: soco set to {value}".format(uid=self.uid, value=value)) + self.logger.debug("Sonos: {uid}: soco set to {value}".format(uid=self.uid, value=value)) if self._soco: self.render_subscription = \ SubscriptionHandler(endpoint=self._rendering_control_event, service=self._soco.renderingControl, - logger=self._logger) + logger=self.logger, threadName="sonos_{uid}_eventRenderingControl".format(uid=self.uid)) self.av_subscription = \ SubscriptionHandler(endpoint=self._av_transport_event, service=self._soco.avTransport, - logger=self._logger) + logger=self.logger, threadName="sonos_{uid}_eventAvTransport".format(uid=self.uid)) self.system_subscription = \ SubscriptionHandler(endpoint=self._system_properties_event, service=self._soco.systemProperties, - logger=self._logger) + logger=self.logger, threadName="sonos_{uid}_eventSystemProperties".format(uid=self.uid)) self.zone_subscription = \ SubscriptionHandler(endpoint=self._zone_topology_event, service=self._soco.zoneGroupTopology, - logger=self._logger) + logger=self.logger, threadName="sonos_{uid}_eventZoneTopology".format(uid=self.uid)) self.alarm_subscription = \ SubscriptionHandler(endpoint=self._alarm_event, service=self._soco.alarmClock, - logger=self._logger) + logger=self.logger, threadName="sonos_{uid}_eventAlarmEvent".format(uid=self.uid)) self.device_subscription = \ SubscriptionHandler(endpoint=self._device_properties_event, service=self._soco.deviceProperties, - logger=self._logger) + logger=self.logger, threadName="sonos_{uid}_eventDeviceProperties".format(uid=self.uid)) # just to have a list for disposing all events self._events = [ @@ -358,7 +359,7 @@ def dispose(self): """ clean-up all things here """ - self._logger.debug("Sonos: {uid}: disposing".format(uid=self.uid)) + self.logger.debug("Sonos: {uid}: disposing".format(uid=self.uid)) if not self._soco: return @@ -367,7 +368,7 @@ def dispose(self): try: subscription.unsubscribe() except Exception as error: - self._logger.warning("Sonos: {error}".format(error=error)) + self.logger.warning("Sonos: {error}".format(error=error)) continue self._soco = None @@ -426,7 +427,7 @@ def check_subscriptions(self) -> None: self.zone_subscription.unsubscribe() self.zone_subscription.subscribe() - self._logger.debug("Sonos: {uid}: Event subscriptions done".format(uid=self.uid)) + self.logger.debug("Sonos: {uid}: Event subscriptions done".format(uid=self.uid)) # Event Handler routines ########################################################################################### @@ -436,7 +437,7 @@ def _rendering_control_event(self, sub_handler: SubscriptionHandler) -> None: :param sub_handler: SubscriptionHandler for the rendering control event """ try: - self._logger.debug("Sonos: {uid}: rendering control event handler active".format(uid=self.uid)) + self.logger.debug("Sonos: {uid}: rendering control event handler active".format(uid=self.uid)) while not sub_handler.signal.wait(1): try: event = sub_handler.event.events.get(timeout=0.5) @@ -454,10 +455,11 @@ def _rendering_control_event(self, sub_handler: SubscriptionHandler) -> None: if 'dialog_mode' in event.variables: self.dialog_mode = event.variables['dialog_mode'] sub_handler.event.events.task_done() + del event except Empty: pass except Exception as ex: - self._logger.error(ex) + self.logger.error(ex) def _alarm_event(self, sub_handler: SubscriptionHandler) -> None: """ @@ -465,15 +467,16 @@ def _alarm_event(self, sub_handler: SubscriptionHandler) -> None: :param sub_handler: SubscriptionHandler for the alarm event """ try: - self._logger.debug("Sonos: {uid}: alarm clock event handler active".format(uid=self.uid)) + self.logger.debug("Sonos: {uid}: alarm clock event handler active".format(uid=self.uid)) while not sub_handler.signal.wait(1): try: event = sub_handler.event.events.get(timeout=0.5) sub_handler.event.events.task_done() + del event except Empty: pass except Exception as ex: - self._logger.error(ex) + self.logger.error(ex) def _system_properties_event(self, sub_handler: SubscriptionHandler) -> None: """ @@ -481,15 +484,16 @@ def _system_properties_event(self, sub_handler: SubscriptionHandler) -> None: :param sub_handler: SubscriptionHandler for the system properties event """ try: - self._logger.debug("Sonos: {uid}: system properties event handler active".format(uid=self.uid)) + self.logger.debug("Sonos: {uid}: system properties event handler active".format(uid=self.uid)) while not sub_handler.signal.wait(1): try: event = sub_handler.event.events.get(timeout=0.5) sub_handler.event.events.task_done() + del event except Empty: pass except Exception as ex: - self._logger.error(ex) + self.logger.error(ex) def _device_properties_event(self, sub_handler: SubscriptionHandler) -> None: """ @@ -497,17 +501,18 @@ def _device_properties_event(self, sub_handler: SubscriptionHandler) -> None: :param sub_handler: SubscriptionHandler for the device properties event """ try: - self._logger.debug("Sonos: {uid}: device properties event handler active".format(uid=self.uid)) + self.logger.debug("Sonos: {uid}: device properties event handler active".format(uid=self.uid)) while not sub_handler.signal.wait(1): try: event = sub_handler.event.events.get(timeout=0.5) if 'zone_name' in event.variables: self.player_name = event.variables['zone_name'] sub_handler.event.events.task_done() + del event except Empty: pass except Exception as ex: - self._logger.error(ex) + self.logger.error(ex) def _zone_topology_event(self, sub_handler: SubscriptionHandler) -> None: """ @@ -515,20 +520,20 @@ def _zone_topology_event(self, sub_handler: SubscriptionHandler) -> None: :param sub_handler: SubscriptionHandler for the zone topology event """ try: - self._logger.debug("Sonos: {uid}: topology event handler active".format(uid=self.uid)) + self.logger.debug("Sonos: {uid}: topology event handler active".format(uid=self.uid)) while not sub_handler.signal.wait(1): try: event = sub_handler.event.events.get(timeout=0.5) if 'zone_group_state' in event.variables: tree = XML.fromstring(event.variables['zone_group_state'].encode('utf-8')) - # find group where our uid is located - for group_element in tree.findall('ZoneGroup'): + #find group where our uid is located + for group_element in tree.find('ZoneGroups').findall('ZoneGroup'): coordinator_uid = group_element.attrib['Coordinator'].lower() zone_group_member = [] uid_found = False for member_element in group_element.findall('ZoneGroupMember'): member_uid = member_element.attrib['UUID'].lower() - _initialize_speaker(member_uid, self._logger) + _initialize_speaker(member_uid, self.logger) zone_group_member.append(sonos_speaker[member_uid]) if member_uid == self._uid: uid_found = True @@ -547,10 +552,11 @@ def _zone_topology_event(self, sub_handler: SubscriptionHandler) -> None: self.sonos_playlists() sub_handler.event.events.task_done() + del event except Empty: pass except Exception as ex: - self._logger.error(ex) + self.logger.error(ex) def _av_transport_event(self, sub_handler: SubscriptionHandler) -> None: """ @@ -558,7 +564,7 @@ def _av_transport_event(self, sub_handler: SubscriptionHandler) -> None: :param sub_handler: SubscriptionHandler for the av transport event """ try: - self._logger.debug("Sonos: {uid}: av transport event handler active".format(uid=self.uid)) + self.logger.debug("Sonos: {uid}: av transport event handler active".format(uid=self.uid)) while not sub_handler.signal.wait(1): try: event = sub_handler.event.events.get(timeout=0.5) @@ -687,20 +693,21 @@ def _av_transport_event(self, sub_handler: SubscriptionHandler) -> None: self.radio_station = '' sub_handler.event.events.task_done() + del event except Empty: pass except Exception as ex: - self._logger.error(ex) + self.logger.error(ex) def _check_property(self): if not self.is_initialized: - self._logger.warning("Sonos: {uid}: speaker is not initialized.".format(uid=self.uid)) + self.logger.warning("Sonos: {uid}: speaker is not initialized.".format(uid=self.uid)) return False if not self.coordinator: - self._logger.warning("Sonos: {uid}: coordinator is empty".format(uid=self.uid)) + self.logger.warning("Sonos: {uid}: coordinator is empty".format(uid=self.uid)) return False if self.coordinator not in sonos_speaker: - self._logger.warning("Sonos: {uid}: coordinator '{coordinator}' is not a valid speaker.".format + self.logger.warning("Sonos: {uid}: coordinator '{coordinator}' is not a valid speaker.".format (uid=self.uid, coordinator=self.coordinator)) return False return True @@ -730,7 +737,7 @@ def _zone_group_members(self): @_zone_group_members.setter def _zone_group_members(self, value): if not isinstance(value, list): - self._logger.warning("Sonos: {uid}: value [{value]] for setter _zone_group_members must be type of list." + self.logger.warning("Sonos: {uid}: value [{value]] for setter _zone_group_members must be type of list." .format(uid=self.uid, value=value)) return self._zone_group = value @@ -842,7 +849,7 @@ def set_night_mode(self, night_mode: bool) -> bool: self.night_mode = night_mode return True except Exception as ex: - self._logger.warning("Sonos: {uid}: can't set night mode. Not supported.".format(uid=self.uid)) + self.logger.warning("Sonos: {uid}: can't set night mode. Not supported.".format(uid=self.uid)) return False @property @@ -880,7 +887,7 @@ def set_dialog_mode(self, dialog_mode: bool) -> bool: self.dialog_mode = dialog_mode return True except Exception as ex: - self._logger.warning("Sonos: {uid}: can't set dialog mode. Not supported.".format(uid=self.uid)) + self.logger.warning("Sonos: {uid}: can't set dialog mode. Not supported.".format(uid=self.uid)) return False @property @@ -923,7 +930,7 @@ def set_loudness(self, loudness: bool, group_command: bool = False) -> bool: self.loudness = loudness return True except Exception as ex: - self._logger.error(ex) + self.logger.error(ex) return False @property @@ -969,7 +976,7 @@ def set_treble(self, treble: int, group_command: bool = False) -> bool: self.treble = treble return True except Exception as ex: - self._logger.error(ex) + self.logger.error(ex) return False @property @@ -1015,7 +1022,7 @@ def set_bass(self, bass: int, group_command: bool = False) -> bool: self.bass = bass return True except Exception as ex: - self._logger.error(ex) + self.logger.error(ex) return False @property @@ -1074,7 +1081,7 @@ def set_volume(self, volume: int, group_command: bool = False, max_volume: int = # raise Exception('Sonos: Volume has to be an integer between 0 and 100.') if self._check_max_volume_exceeded(volume, max_volume): - self._logger.debug("Sonos: Volume to set [{volume}] exceeds max volume [{max_volume}].".format( + self.logger.debug("Sonos: Volume to set [{volume}] exceeds max volume [{max_volume}].".format( volume=volume, max_volume=max_volume )) volume = max_volume @@ -1088,7 +1095,7 @@ def set_volume(self, volume: int, group_command: bool = False, max_volume: int = self.volume = volume return True except Exception as ex: - self._logger.error(ex) + self.logger.error(ex) return False def switch_to_tv(self) -> bool: @@ -1099,7 +1106,7 @@ def switch_to_tv(self) -> bool: try: return self.soco.switch_to_tv() except Exception as ex: - self._logger.warning("Sonos: {uid}: can't switch to TV. Not supported.".format(uid=self.uid)) + self.logger.warning("Sonos: {uid}: can't switch to TV. Not supported.".format(uid=self.uid)) return False def switch_to_line_in(self) -> bool: @@ -1110,7 +1117,7 @@ def switch_to_line_in(self) -> bool: try: return self.soco.switch_to_line_in() except Exception as ex: - self._logger.warning("Sonos: {uid}: can't switch to line-in. Not supported.".format(uid=self.uid)) + self.logger.warning("Sonos: {uid}: can't switch to line-in. Not supported.".format(uid=self.uid)) return False @property @@ -1144,7 +1151,7 @@ def set_status_light(self, value: bool) -> bool: self.soco.status_light = value return True except Exception as ex: - self._logger.debug(ex) + self.logger.debug(ex) return False def get_status_light(self) -> bool: @@ -1156,7 +1163,7 @@ def get_status_light(self) -> bool: try: return self.soco.status_light except Exception as ex: - self._logger.error(ex) + self.logger.error(ex) return False @property @@ -1193,7 +1200,7 @@ def zone_group_members(self, value: list) -> None: :param value: list with uids to set as group members """ if not isinstance(value, list): - self._logger.warning("Sonos: {uid}: value [{value]] for setter zone_group_members must be type of list." + self.logger.warning("Sonos: {uid}: value [{value]] for setter zone_group_members must be type of list." .format(uid=self.uid, value=value)) return self._members = value @@ -1419,7 +1426,7 @@ def set_next(self, next_track: bool) -> None: try: sonos_speaker[self.coordinator].soco.next() except: - self._logger.debug("Sonos: {uid}: can't go to next track. Maybe the end of the playlist " + self.logger.debug("Sonos: {uid}: can't go to next track. Maybe the end of the playlist " "reached?".format(uid=self.uid)) def set_previous(self, previous: bool) -> None: @@ -1434,7 +1441,7 @@ def set_previous(self, previous: bool) -> None: try: sonos_speaker[self.coordinator].soco.previous() except: - self._logger.debug("Sonos: {uid}: can't go back to the previously played track. Already the first " + self.logger.debug("Sonos: {uid}: can't go back to the previously played track. Already the first " "track in the playlist?".format(uid=self.uid)) @property @@ -1479,7 +1486,7 @@ def set_mute(self, value: bool) -> bool: sonos_speaker[self.coordinator].soco.mute = value return True except Exception as ex: - self._logger.error(ex) + self.logger.error(ex) return False @property @@ -1524,7 +1531,7 @@ def set_cross_fade(self, cross_fade: bool) -> bool: sonos_speaker[self.coordinator].soco.cross_fade = cross_fade return True except Exception as ex: - self._logger.error(ex) + self.logger.error(ex) return False @property @@ -1571,7 +1578,7 @@ def set_snooze(self, snooze: int) -> bool: sonos_speaker[self.coordinator].soco.set_sleep_timer(snooze) return True except Exception as ex: - self._logger.error(ex) + self.logger.error(ex) return False def get_snooze(self) -> int: @@ -1586,7 +1593,7 @@ def get_snooze(self) -> int: return 0 return sonos_speaker[self.coordinator].soco.get_sleep_timer() except Exception as ex: - self._logger.error(ex) + self.logger.error(ex) return 0 @property @@ -1632,7 +1639,7 @@ def set_play_mode(self, play_mode: str) -> bool: sonos_speaker[self.coordinator].soco.play_mode = play_mode return True except Exception as ex: - self._logger.error(ex) + self.logger.error(ex) return False @property @@ -2112,10 +2119,10 @@ def join(self, uid: str) -> None: return uid = uid.lower() if uid not in sonos_speaker: - self._logger.warning("Sonos: Cannot join ... no speaker found with uid {uid}.".format(uid=uid)) + self.logger.warning("Sonos: Cannot join ... no speaker found with uid {uid}.".format(uid=uid)) return speaker_to_join = sonos_speaker[uid] - self._logger.debug( + self.logger.debug( 'Sonos: Joining [{uid}] to [uid: {to_join}, master: {master}]'.format( uid=uid, to_join=speaker_to_join.uid, master=speaker_to_join.coordinator)) self.soco.join(sonos_speaker[speaker_to_join.coordinator].soco) @@ -2161,8 +2168,8 @@ def _play_snippet(self, file_path: str, webservice_url: str, volume: int = -1, d tag = TinyTag.get(file_path) duration = round(tag.duration) + duration_offset - self._logger.debug("Sonos: TTS track duration offset is: {offset}s".format(offset=duration_offset)) - self._logger.debug("Sonos: TTS track duration: {duration}s".format(duration=duration)) + self.logger.debug("Sonos: TTS track duration offset is: {offset}s".format(offset=duration_offset)) + self.logger.debug("Sonos: TTS track duration: {duration}s".format(duration=duration)) file_name = quote(os.path.split(file_path)[1]) snippet_url = "{url}/{file}".format(url=webservice_url, file=file_name) @@ -2210,13 +2217,13 @@ def play_snippet(self, audio_file, local_webservice_path_snippet: str, webservic fade_in) else: if "tinytag" not in sys.modules: - self._logger.error("Sonos: TinyTag module not installed. Please install the module with 'sudo pip3 " + self.logger.error("Sonos: TinyTag module not installed. Please install the module with 'sudo pip3 " "install tinytag'.") return file_path = os.path.join(local_webservice_path_snippet, audio_file) if not os.path.exists(file_path): - self._logger.error("Sonos: Snippet file '{file_path}' does not exists.".format(file_path=file_path)) + self.logger.error("Sonos: Snippet file '{file_path}' does not exists.".format(file_path=file_path)) return self._play_snippet(file_path, webservice_url, volume, duration_offset, fade_in) @@ -2229,21 +2236,21 @@ def play_tts(self, tts: str, tts_language: str, local_webservice_path: str, webs volume, duration_offset, fade_in) else: if "tinytag" not in sys.modules: - self._logger.error("Sonos: TinyTag module not installed. Please install the module with 'sudo pip3 " + self.logger.error("Sonos: TinyTag module not installed. Please install the module with 'sudo pip3 " "install tinytag'.") return file_path = get_tts_local_file_path(local_webservice_path, tts, tts_language) # only do a tts call if file not exists if not os.path.exists(file_path): - tts = gTTS(tts, self._logger, tts_language) + tts = gTTS(tts, self.logger, tts_language) try: tts.save(file_path) except Exception as err: - self._logger.error("Sonos: Could not obtain TTS file from Google. Error: {ex}".format(ex=err)) + self.logger.error("Sonos: Could not obtain TTS file from Google. Error: {ex}".format(ex=err)) return else: - self._logger.debug("Sonos: File {file} already exists. No TTS request necessary.".format( + self.logger.debug("Sonos: File {file} already exists. No TTS request necessary.".format( file=file_path)) self._play_snippet(file_path, webservice_url, volume, duration_offset, fade_in) @@ -2264,7 +2271,7 @@ def load_sonos_playlist(self, name: str, start: bool = False, clear_queue: bool else: try: if not name: - self._logger.warning("Sonos: A valid playlist name must be provided.") + self.logger.warning("Sonos: A valid playlist name must be provided.") return playlist = self.soco.get_sonos_playlist_by_attr('title', name) if playlist: @@ -2274,39 +2281,47 @@ def load_sonos_playlist(self, name: str, start: bool = False, clear_queue: bool try: track = int(track) except TypeError: - self._logger.warning("Sonos: Could not cast track [{track}] to 'int'.") + self.logger.warning("Sonos: Could not cast track [{track}] to 'int'.") return try: self.soco.play_from_queue(track, start) except SoCoUPnPException as ex: - self._logger.warning("Sonos: {ex}".format(ex=ex)) + self.logger.warning("Sonos: {ex}".format(ex=ex)) return # bug here? no event, we have to trigger it manually if start: self.play = True except Exception as ex: - self._logger.warning("Sonos: No Sonos playlist found with title '{title}'.".format(title=name)) + self.logger.warning("Sonos: No Sonos playlist found with title '{title}'.".format(title=name)) class Sonos(SmartPlugin): ALLOW_MULTIINSTANCE = False - PLUGIN_VERSION = "1.4.8" + PLUGIN_VERSION = "1.4.9" def __init__(self, sh, tts=False, local_webservice_path=None, local_webservice_path_snippet=None, discover_cycle="120", webservice_ip=None, webservice_port=23500, speaker_ips=None, snippet_duration_offset=0.0, **kwargs): super().__init__(**kwargs) self._sh = sh - self._logger = logging.getLogger('sonos') # get a unique logger for the plugin and provide it internally + #self.logger = logging.getLogger('sonos') # get a unique logger for the plugin and provide it internally self.zero_zone = False # sometime a discovery scan fails, so try it two times; we need to save the state self._sonos_dpt3_step = 2 # default value for dpt3 volume step (step(s) per time period) self._sonos_dpt3_time = 1 # default value for dpt3 volume time (time period per step in seconds) self._tts = self.to_bool(tts, default=False) self._local_webservice_path = local_webservice_path self._snippet_duration_offset = float(snippet_duration_offset) + + from bin.smarthome import VERSION + if '.'.join(VERSION.split('.', 2)[:2]) <= '1.5': + self.logger = logging.getLogger(__name__) + #else: + # self.logger = logging.getLogger('sonos') # get a unique logger for the plugin and provide it internally + + self.logger.debug("init {} version: {ver}".format(__name__, ver='.'.join(VERSION.split('.', 2)[:2]))) # Exit if the required package(s) could not be imported if not REQUIRED_PACKAGE_IMPORTED: - self._logger.error("{}: Unable to import required external python packages. Please install.".format(self.get_fullname())) + self.logger.error("{}: Unable to import required external python packages. Please install.".format(self.get_fullname())) return # see documentation: if no exclusive snippet path is set, we use the global one @@ -2323,14 +2338,14 @@ def __init__(self, sh, tts=False, local_webservice_path=None, local_webservice_p self._speaker_ips = [] if speaker_ips: - self._logger.debug("Sonos: User-defined speaker IPs set. Auto-discover disabled.") + self.logger.debug("Sonos: User-defined speaker IPs set. Auto-discover disabled.") # check user specified sonos speaker ips if speaker_ips: for ip in speaker_ips: if self.is_ip(ip): self._speaker_ips.append(ip) else: - self._logger.warning("Sonos: Invalid Sonos speaker ip '{ip}'. Ignoring.".format(ip=ip)) + self.logger.warning("Sonos: Invalid Sonos speaker ip '{ip}'. Ignoring.".format(ip=ip)) # unique items in list self._speaker_ips = utils.unique_list(self._speaker_ips) @@ -2340,7 +2355,7 @@ def __init__(self, sh, tts=False, local_webservice_path=None, local_webservice_p if self.is_ip(webservice_ip): self._webservice_ip = webservice_ip else: - self._logger.error("Sonos: Your webservice_ip parameter is invalid. '{ip}' is not a vaild ip address. " + self.logger.error("Sonos: Your webservice_ip parameter is invalid. '{ip}' is not a vaild ip address. " "Disabling TTS.".format(ip=webservice_ip)) self._tts = False else: @@ -2349,11 +2364,11 @@ def __init__(self, sh, tts=False, local_webservice_path=None, local_webservice_p if utils.is_valid_port(str(webservice_port)): self._webservice_port = int(webservice_port) if not utils.is_open_port(self._webservice_port): - self._logger.error("Sonos: Your chosen webservice port {port} is already in use. " + self.logger.error("Sonos: Your chosen webservice port {port} is already in use. " "TTS disabled!".format(port=self._webservice_port)) self._tts = False else: - self._logger.error("Sonos: Your webservice_port parameter is invalid. '{port}' is not within port range " + self.logger.error("Sonos: Your webservice_port parameter is invalid. '{port}' is not within port range " "1024-65535. TTS disabled!".format(port=webservice_port)) self._tts = False @@ -2364,10 +2379,10 @@ def __init__(self, sh, tts=False, local_webservice_path=None, local_webservice_p # we just need an existing path with read rights, this can be done by the user while shNG is running # just throw some warnings if not os.path.exists(self._local_webservice_path_snippet): - self._logger.warning("Sonos: Local webservice snippet path was set to '{path}' but doesn't " + self.logger.warning("Sonos: Local webservice snippet path was set to '{path}' but doesn't " "exists".format(path=self._local_webservice_path_snippet)) if not os.access(self._local_webservice_path_snippet, os.R_OK): - self._logger.warning("Sonos: Local webservice snippet path '{path}' is not readable.".format( + self.logger.warning("Sonos: Local webservice snippet path '{path}' is not readable.".format( path=self._local_webservice_path_snippet)) if self._local_webservice_path: @@ -2375,19 +2390,19 @@ def __init__(self, sh, tts=False, local_webservice_path=None, local_webservice_p try: os.makedirs(self._local_webservice_path, exist_ok=True) if os.path.exists(self._local_webservice_path): - self._logger.debug("Sonos: Local webservice path set to '{path}'".format( + self.logger.debug("Sonos: Local webservice path set to '{path}'".format( path=self._local_webservice_path)) if os.access(self._local_webservice_path, os.W_OK): - self._logger.debug("Sonos: Write permissions ok for tts on path {path}".format( + self.logger.debug("Sonos: Write permissions ok for tts on path {path}".format( path=self._local_webservice_path)) free_diskspace = get_free_diskspace(self._local_webservice_path) human_readable_diskspace = file_size(free_diskspace) - self._logger.debug("Sonos: Free diskspace: {disk}".format(disk=human_readable_diskspace)) + self.logger.debug("Sonos: Free diskspace: {disk}".format(disk=human_readable_diskspace)) self._webservice_url = "http://{ip}:{port}".format(ip=self._webservice_ip, port=self._webservice_port) - self._logger.debug("Sonos: Starting webservice for TTS on {url}".format( + self.logger.debug("Sonos: Starting webservice for TTS on {url}".format( url=self._webservice_url)) self.webservice = SimpleHttpServer(self._webservice_ip, self._webservice_port, @@ -2395,37 +2410,37 @@ def __init__(self, sh, tts=False, local_webservice_path=None, local_webservice_p self._local_webservice_path_snippet) self.webservice.start() else: - self._logger.warning( + self.logger.warning( "Sonos: Local webservice path '{path}' is not writeable for current user. " "TTS disabled!".format(path=self._local_webservice_path)) else: - self._logger.warning("Sonos: Local webservice path '{path}' for TTS not exists. " + self.logger.warning("Sonos: Local webservice path '{path}' for TTS not exists. " "TTS disabled!".format(path=self._local_webservice_path)) except OSError: - self._logger.warning("Sonos: Could not create local webserver path '{path}'. Wrong permissions? " + self.logger.warning("Sonos: Could not create local webserver path '{path}'. Wrong permissions? " "TTS disabled!".format(path=self._local_webservice_path)) else: - self._logger.debug("Sonos: Local webservice path for TTS has to be set. TTS disabled!") + self.logger.debug("Sonos: Local webservice path for TTS has to be set. TTS disabled!") else: - self._logger.debug("Sonos: TTS disabled") + self.logger.debug("Sonos: TTS disabled") try: self._discover_cycle = int(discover_cycle) except: - self._logger.error("Sonos: Parameter 'discover_cycle' [{val}] invalid, must be int.".format( + self.logger.error("Sonos: Parameter 'discover_cycle' [{val}] invalid, must be int.".format( val=discover_cycle )) self._discover_cycle = discover_cycle_default - self._logger.info("Sonos: Setting discover cycle to {val} seconds.".format(val=self._discover_cycle)) + self.logger.info("Sonos: Setting discover cycle to {val} seconds.".format(val=self._discover_cycle)) def run(self): - self._logger.debug("Sonos: run method called") + self.logger.debug("Sonos: run method called") self._sh.scheduler.add("sonos_discover_scheduler", self._discover, prio=3, cron=None, cycle=self._discover_cycle, value=None, offset=None, next=None) self.alive = True def stop(self): - self._logger.debug("Sonos: stop method called") + self.logger.debug("Sonos: stop method called") for uid, speaker in sonos_speaker.items(): speaker.dispose() event_listener.stop() @@ -2440,23 +2455,23 @@ def parse_item(self, item: Item) -> object: uid = None if self.has_iattr(item.conf, 'sonos_recv') or self.has_iattr(item.conf, 'sonos_send'): - self._logger.debug("parse item: {0}".format(item)) + self.logger.debug("parse item: {0}".format(item)) # get uid from parent item uid = self._resolve_uid(item) if not uid: - self._logger.error("Sonos: No uid found for {item}.".format(item=item)) + self.logger.error("Sonos: No uid found for {item}.".format(item=item)) return if self.has_iattr(item.conf, 'sonos_recv'): # create Speaker instance if not exists - _initialize_speaker(uid, self._logger) + _initialize_speaker(uid, self.logger) # to make code smaller, map sonos_cmd value to the Speaker property by name item_name = self.get_iattr_value(item.conf, 'sonos_recv') try: list_name = '{item_name}_items'.format(item_name=item_name) attr = getattr(sonos_speaker[uid], list_name) - self._logger.debug( + self.logger.debug( "Sonos: Adding item {item} to {uid}: list {list}".format(item=item, uid=uid, list=list_name)) attr.append(item) except: @@ -2464,7 +2479,7 @@ def parse_item(self, item: Item) -> object: .format(item_name=item_name)) if self.has_iattr(item.conf, 'sonos_send'): - self._logger.debug("Sonos: {item} registered to send Sonos commands.".format(item=item)) + self.logger.debug("Sonos: {item} registered to send Sonos commands.".format(item=item)) return self.update_item # some special handling for dpt3 volume @@ -2479,9 +2494,9 @@ def parse_item(self, item: Item) -> object: if parent_item is not None: if self.has_iattr(parent_item.conf, 'sonos_recv'): if self.get_iattr_value(parent_item.conf, 'sonos_recv').lower() != 'volume': - self._logger.warning("Sonos: volume_dpt3 item has no volume parent item. Ignoring!") + self.logger.warning("Sonos: volume_dpt3 item has no volume parent item. Ignoring!") else: - self._logger.warning("Sonos: volume_dpt3 item has no volume parent item. Ignoring!") + self.logger.warning("Sonos: volume_dpt3 item has no volume parent item. Ignoring!") return item.conf['volume_parent'] = parent_item @@ -2495,19 +2510,19 @@ def parse_item(self, item: Item) -> object: break if child_helper is None: - self._logger.warning("Sonos: volume_dpt3 item has no helper item. Ignoring!") + self.logger.warning("Sonos: volume_dpt3 item has no helper item. Ignoring!") return item.conf['helper'] = child_helper if not self.has_iattr(item.conf, 'sonos_dpt3_step'): item.conf['sonos_dpt3_step'] = self._sonos_dpt3_step - self._logger.debug("Sonos: No sonos_dpt3_step defined, using default value {step}.". + self.logger.debug("Sonos: No sonos_dpt3_step defined, using default value {step}.". format(step=self._sonos_dpt3_step)) if not self.has_iattr(item.conf, 'sonos_dpt3_time'): item.conf['sonos_dpt3_time'] = self._sonos_dpt3_time - self._logger.debug("Sonos: no sonos_dpt3_time defined, using default value {time}.". + self.logger.debug("Sonos: no sonos_dpt3_time defined, using default value {time}.". format(time=self._sonos_dpt3_time)) return self._handle_dpt3 @@ -2558,7 +2573,7 @@ def update_item(self, item: Item, caller: object = str, source: object = str, de # get uid from parent item uid = self._resolve_uid(item) if not uid: - self._logger.error("Sonos: No uid found for {item}.".format(item=item)) + self.logger.error("Sonos: No uid found for {item}.".format(item=item)) return command = self.get_iattr_value(item.conf, "sonos_send").lower() @@ -2694,7 +2709,7 @@ def _resolve_child_command_int(self, item: Item, child_command, default_value=0) return int(child()) return default_value except: - self._logger.warning("Sonos: Could not cast value [{val}] to 'int', using default value '0'") + self.logger.warning("Sonos: Could not cast value [{val}] to 'int', using default value '0'") return default_value def _resolve_group_command(self, item: Item) -> bool: @@ -2729,7 +2744,7 @@ def _resolve_max_volume_command(self, item: Item) -> int: try: return int(child()) except Exception as ex: - self._logger.error(ex) + self.logger.error(ex) return -1 return -1 @@ -2752,7 +2767,7 @@ def _resolve_uid(self, item: Item) -> str: if self.has_iattr(parent_item.conf, 'sonos_uid'): return self.get_iattr_value(parent_item.conf, 'sonos_uid').lower() - self._logger.warning("Sonos: could not resolve sonos_uid for item {item}".format(item=item)) + self.logger.warning("Sonos: could not resolve sonos_uid for item {item}".format(item=item)) return '' def _discover(self) -> None: @@ -2774,10 +2789,10 @@ def _discover(self) -> None: # 2. attempt: ok, no speaker found, go on if not zones: if not self.zero_zone: - self._logger.debug("Sonos: No speaker found (1. attempt), ignoring speaker handling.") + self.logger.debug("Sonos: No speaker found (1. attempt), ignoring speaker handling.") self.zero_zone = True return - self._logger.debug("Sonos: No speaker found.") + self.logger.debug("Sonos: No speaker found.") self.zero_zone = False for zone in zones: @@ -2798,18 +2813,18 @@ def _discover(self) -> None: is_up = False if is_up: - self._logger.debug("Sonos: Speaker found: {zone}, {uid}".format(zone=zone.ip_address, uid=uid)) + self.logger.debug("Sonos: Speaker found: {zone}, {uid}".format(zone=zone.ip_address, uid=uid)) if uid in sonos_speaker: if zone is not sonos_speaker[uid].soco: sonos_speaker[uid].soco = zone sonos_speaker[uid].subscribe_base_events() else: - self._logger.debug("Sonos: SoCo instance already initiated, skipping.") - self._logger.debug("Sonos: checking subscriptions") + self.logger.debug("Sonos: SoCo instance already initiated, skipping.") + self.logger.debug("Sonos: checking subscriptions") sonos_speaker[uid].check_subscriptions() else: - _initialize_speaker(uid, self._logger) + _initialize_speaker(uid, self.logger) sonos_speaker[uid].soco = zone sonos_speaker[uid].is_initialized = True @@ -2817,11 +2832,11 @@ def _discover(self) -> None: else: if sonos_speaker[uid].soco is not None: - self._logger.debug( + self.logger.debug( "Sonos: Disposing offline speaker: {zone}, {uid}".format(zone=zone.ip_address, uid=uid)) sonos_speaker[uid].dispose() else: - self._logger.debug( + self.logger.debug( "Sonos: Ignoring offline speaker: {zone}, {uid}".format(zone=zone.ip_address, uid=uid)) sonos_speaker[uid].is_initialized = False @@ -2832,7 +2847,7 @@ def _discover(self) -> None: # dispose every speaker that was not found for uid in set(sonos_speaker.keys()) - set(handled_speaker.keys()): if sonos_speaker[uid].soco is not None: - self._logger.debug( + self.logger.debug( "Sonos: Removing undiscovered speaker: {zone}, {uid}".format(zone=zone.ip_address, uid=uid)) sonos_speaker[uid].dispose() diff --git a/sonos/plugin.yaml b/sonos/plugin.yaml index 9a0e5c0dd..a341689d9 100755 --- a/sonos/plugin.yaml +++ b/sonos/plugin.yaml @@ -7,12 +7,11 @@ plugin: en: 'Sonos plugin' maintainer: pfischi tester: pfischi - state: ready keywords: Sonos sonos multimedia documentation: https://github.com/smarthomeNG/plugins/tree/master/sonos # url of documentation (wiki) page support: https://knx-user-forum.de/forum/supportforen/smarthome-py/25151-sonos-anbindung - version: 1.4.8 # Plugin version + version: 1.4.9 # Plugin version sh_minversion: 1.5.1 # minimum shNG version to use this plugin multi_instance: False # plugin supports multi instance classname: Sonos # class containing the plugin @@ -71,10 +70,4 @@ parameters: item_attributes: # Definition of item attributes defined by this plugin - -plugin_functions: NONE -# Definition of plugin functions defined by this plugin - -logic_parameters: NONE -# Definition of logic parameters defined by this plugin - + diff --git a/sonos/soco/__init__.py b/sonos/soco/__init__.py index 1302d211c..c1e68e493 100644 --- a/sonos/soco/__init__.py +++ b/sonos/soco/__init__.py @@ -19,7 +19,7 @@ __author__ = 'The SoCo-Team ' # Please add the suffix "+" to the version after release, to make it # possible infer whether in development code from the version string -__version__ = '0.16' +__version__ = '0.17' __website__ = 'https://github.com/SoCo/SoCo' __license__ = 'MIT License' diff --git a/sonos/soco/cache.py b/sonos/soco/cache.py index 115c6d9f8..5d42e73fb 100644 --- a/sonos/soco/cache.py +++ b/sonos/soco/cache.py @@ -54,7 +54,6 @@ class NullCache(_BaseCache): def put(self, item, *args, **kwargs): """Put an item into the cache.""" - pass def get(self, *args, **kwargs): """Get an item from the cache.""" @@ -62,11 +61,9 @@ def get(self, *args, **kwargs): def delete(self, *args, **kwargs): """Delete an item from the cache.""" - pass def clear(self): """Empty the whole cache.""" - pass class TimedCache(_BaseCache): diff --git a/sonos/soco/config.py b/sonos/soco/config.py index d2b49be30..3fb277871 100644 --- a/sonos/soco/config.py +++ b/sonos/soco/config.py @@ -30,6 +30,7 @@ The :mod:`soco.cache` module. """ + EVENT_ADVERTISE_IP = None """The IP on which to advertise to Sonos. @@ -37,7 +38,7 @@ automatically. See also: - The :mod:`soco.events` module. + The :mod:`soco.events_base` module. """ EVENT_LISTENER_IP = None @@ -47,7 +48,7 @@ automatically. See also: - The :mod:`soco.events` module. + The :mod:`soco.events_base` module. """ @@ -57,5 +58,14 @@ The default is 1400. You must set this before subscribing to any events. See also: - The :mod:`soco.events` module. + The :mod:`soco.events_base` module. +""" + +EVENTS_MODULE = None +"""The events module to be used by the :mod:`soco.services` module. + +The default of None means the :mod:`soco.events` module will be used. + +See also: + The :mod:`soco.events` and :mod:`soco.events_twisted` modules. """ diff --git a/sonos/soco/core.py b/sonos/soco/core.py index 9818c5b39..a6a9a258d 100755 --- a/sonos/soco/core.py +++ b/sonos/soco/core.py @@ -91,7 +91,6 @@ class _SocoSingletonBase( # pylint: disable=too-few-public-methods,no-init here: http://www.artima.com/weblogs/viewpost.jsp?thread=236234 and here: http://mikewatkins.ca/2008/11/29/python-2-and-3-metaclasses/ """ - pass def only_on_master(function): @@ -169,6 +168,7 @@ class SoCo(_SocoSingletonBase): is_visible is_bridge is_coordinator + is_soundbar bass treble loudness @@ -260,6 +260,7 @@ def __init__(self, ip_address): self._groups = set() self._is_bridge = None self._is_coordinator = False + self._is_soundbar = None self._player_name = None self._uid = None self._household_id = None @@ -371,6 +372,18 @@ def is_coordinator(self): self._parse_zone_group_state() return self._is_coordinator + @property + def is_soundbar(self): + """bool: Is this zone a soundbar (i.e. has night mode etc.)?""" + if self._is_soundbar is None: + if not self.speaker_info: + self.get_speaker_info() + + model_name = self.speaker_info['model_name'].lower() + self._is_soundbar = any(model_name.endswith(s) for s in SOUNDBARS) + + return self._is_soundbar + @property def play_mode(self): """str: The queue's play mode. @@ -414,7 +427,7 @@ def cross_fade(self): ('InstanceID', 0), ]) cross_fade_state = response['CrossfadeMode'] - return True if int(cross_fade_state) else False + return bool(int(cross_fade_state)) @cross_fade.setter @only_on_master @@ -669,7 +682,7 @@ def mute(self): ('Channel', 'Master') ]) mute_state = response['CurrentMute'] - return True if int(mute_state) else False + return bool(int(mute_state)) @mute.setter def mute(self, mute): @@ -768,7 +781,7 @@ def loudness(self): ('Channel', 'Master'), ]) loudness = response["CurrentLoudness"] - return True if int(loudness) else False + return bool(int(loudness)) @loudness.setter def loudness(self, loudness): @@ -786,9 +799,7 @@ def night_mode(self): True if on, False if off, None if not supported. """ - if not self.speaker_info: - self.get_speaker_info() - if 'PLAYBAR' not in self.speaker_info['model_name']: + if not self.is_soundbar: return None response = self.renderingControl.GetEQ([ @@ -806,9 +817,7 @@ def night_mode(self, night_mode): :raises NotSupportedException: If the device does not support night mode. """ - if not self.speaker_info: - self.get_speaker_info() - if 'PLAYBAR' not in self.speaker_info['model_name']: + if not self.is_soundbar: message = 'This device does not support night mode' raise NotSupportedException(message) @@ -824,9 +833,7 @@ def dialog_mode(self): True if on, False if off, None if not supported. """ - if not self.speaker_info: - self.get_speaker_info() - if 'PLAYBAR' not in self.speaker_info['model_name']: + if not self.is_soundbar: return None response = self.renderingControl.GetEQ([ @@ -844,9 +851,7 @@ def dialog_mode(self, dialog_mode): :raises NotSupportedException: If the device does not support dialog mode. """ - if not self.speaker_info: - self.get_speaker_info() - if 'PLAYBAR' not in self.speaker_info['model_name']: + if not self.is_soundbar: message = 'This device does not support dialog mode' raise NotSupportedException(message) @@ -920,8 +925,7 @@ def parse_zone_group_member(member_element): zone._player_name = member_attribs['ZoneName'] # add the zone to the set of all members, and to the set # of visible members if appropriate - is_visible = False if member_attribs.get( - 'Invisible') == '1' else True + is_visible = (member_attribs.get('Invisible') != '1') if is_visible: self._visible_zones.add(zone) self._all_zones.add(zone) @@ -943,7 +947,6 @@ def parse_zone_group_member(member_element): self._all_zones.clear() self._visible_zones.clear() # Loop over each ZoneGroup Element - #for group_element in tree.findall('ZoneGroup'): for group_element in tree.find('ZoneGroups').findall('ZoneGroup'): coordinator_uid = group_element.attrib['Coordinator'] group_uid = group_element.attrib['ID'] @@ -964,8 +967,8 @@ def parse_zone_group_member(member_element): # is_bridge doesn't change, but it does no real harm to # set/reset it here, just in case the zone has not been seen # before - zone._is_bridge = True if member_element.attrib.get( - 'IsZoneBridge') == '1' else False + zone._is_bridge = ( + member_element.attrib.get('IsZoneBridge') == '1') # add the zone to the members for this group members.add(zone) # Loop over Satellite elements if present, and process as for @@ -1128,7 +1131,7 @@ def status_light(self): """ result = self.deviceProperties.GetLEDState() LEDState = result["CurrentLEDState"] # pylint: disable=invalid-name - return True if LEDState == "On" else False + return LEDState == "On" @status_light.setter def status_light(self, led_on): @@ -1705,8 +1708,7 @@ def set_sleep_timer(self, sleep_time_seconds): if 'Error 402 received' in str(err): raise ValueError('invalid sleep_time_seconds, must be integer \ value between 0 and 86399 inclusive or None') - else: - raise + raise except ValueError: raise ValueError('invalid sleep_time_seconds, must be integer \ value between 0 and 86399 inclusive or None') @@ -1984,6 +1986,8 @@ def get_sonos_playlist_by_attr(self, attr_name, match): # Valid play modes PLAY_MODES = ('NORMAL', 'SHUFFLE_NOREPEAT', 'SHUFFLE', 'REPEAT_ALL', 'SHUFFLE_REPEAT_ONE', 'REPEAT_ONE') +# soundbar product names +SOUNDBARS = ('playbase', 'playbar', 'beam') if config.SOCO_CLASS is None: config.SOCO_CLASS = SoCo diff --git a/sonos/soco/data_structures.py b/sonos/soco/data_structures.py index 1abc8ba74..1fbc87fee 100755 --- a/sonos/soco/data_structures.py +++ b/sonos/soco/data_structures.py @@ -479,7 +479,7 @@ def from_element(cls, element): # pylint: disable=R0914 # Spotify Direct violates this. To make it work, a missing restricted # tag is interpreted as `restricted = True`. restricted = element.get('restricted', None) - restricted = False if restricted in [0, 'false', 'False'] else True + restricted = (restricted not in [0, 'false', 'False']) # Similarily, all elements should have a title tag, but Spotify Direct # does not comply @@ -492,6 +492,10 @@ def from_element(cls, element): # pylint: disable=R0914 # Deal with any resource elements resources = [] for res_elt in element.findall(ns_tag('', 'res')): + # Not all Favorits have resources, so in case the "res" + # tage has no attributes, just skip it + if cls is DidlFavorite and not res_elt.attrib: + continue resources.append( DidlResource.from_element(res_elt)) @@ -1051,6 +1055,12 @@ class DidlPlaylistContainerFavorite(DidlPlaylistContainer): item_class = 'object.container.playlistContainer.sonos-favorite' +class DidlPlaylistContainerTracklist(DidlPlaylistContainer): + + """Class that represents a Sonos tracklist.""" + item_class = 'object.container.playlistContainer.tracklist' + + class DidlGenre(DidlContainer): """A content directory class representing a general genre.""" diff --git a/sonos/soco/events.py b/sonos/soco/events.py index 7692830e5..e8e1a713a 100755 --- a/sonos/soco/events.py +++ b/sonos/soco/events.py @@ -2,225 +2,84 @@ # pylint: disable=not-context-manager # NOTE: The pylint not-content-manager warning is disabled pending the fix of -# a bug in pylint: https://github.com/PyCQA/pylint/issues/782 +# a bug in pylint. See https://github.com/PyCQA/pylint/issues/782 # Disable while we have Python 2.x compatability # pylint: disable=useless-object-inheritance -"""Classes to handle Sonos UPnP Events and Subscriptions.""" +"""Classes to handle Sonos UPnP Events and Subscriptions. -from __future__ import unicode_literals - -import atexit -import logging -import socket -import threading -import time -import weakref - -import requests - -from . import config -from .compat import ( - Queue, BaseHTTPRequestHandler, URLError, socketserver, urlopen -) -from .data_structures_entry import from_didl_string -from .exceptions import SoCoException, SoCoFault, EventParseException -from .utils import camel_to_underscore -from .xml import XML - -log = logging.getLogger(__name__) # pylint: disable=C0103 - - -# pylint: disable=too-many-branches -def parse_event_xml(xml_event): - """Parse the body of a UPnP event. +The `Subscription` class from this module will be used in +:py:mod:`soco.services` unless config.EVENTS_MODULE is set +to point to :py:mod:`soco.events_twisted`, in which case +:py:mod:`soco.events_twisted.Subscription` will be used. +See the Example in :py:mod:`soco.events_twisted`. - Args: - xml_event (bytes): bytes containing the body of the event encoded - with utf-8. +Example: - Returns: - dict: A dict with keys representing the evented variables. The - relevant value will usually be a string representation of the - variable's value, but may on occasion be: + Run this code, and change your volume, tracks etc:: - * a dict (eg when the volume changes, the value will itself be a - dict containing the volume for each channel: - :code:`{'Volume': {'LF': '100', 'RF': '100', 'Master': '36'}}`) - * an instance of a `DidlObject` subclass (eg if it represents - track metadata). - * a `SoCoFault` (if a variable contains illegal metadata) - - Example: - - Run this code, and change your volume, tracks etc:: - - from __future__ import print_function + from __future__ import print_function + try: + from queue import Empty + except: # Py2.7 + from Queue import Empty + + import logging + logging.basicConfig() + import soco + from pprint import pprint + from soco.events import event_listener + # pick a device at random and use it to get + # the group coordinator + device = soco.discover().pop().group.coordinator + print (device.player_name) + sub = device.renderingControl.subscribe() + sub2 = device.avTransport.subscribe() + + while True: try: - from queue import Empty - except: # Py2.7 - from Queue import Empty - - import soco - from pprint import pprint - from soco.events import event_listener - # pick a device at random - device = soco.discover().pop() - print (device.player_name) - sub = device.renderingControl.subscribe() - sub2 = device.avTransport.subscribe() - - while True: - try: - event = sub.events.get(timeout=0.5) - pprint (event.variables) - except Empty: - pass - try: - event = sub2.events.get(timeout=0.5) - pprint (event.variables) - except Empty: - pass - - except KeyboardInterrupt: - sub.unsubscribe() - sub2.unsubscribe() - event_listener.stop() - break - """ + event = sub.events.get(timeout=0.5) + pprint (event.variables) + except Empty: + pass + try: + event = sub2.events.get(timeout=0.5) + pprint (event.variables) + except Empty: + pass - result = {} - tree = XML.fromstring(xml_event) - # property values are just under the propertyset, which - # uses this namespace - properties = tree.findall( - '{urn:schemas-upnp-org:event-1-0}property') - for prop in properties: # pylint: disable=too-many-nested-blocks - for variable in prop: - # Special handling for a LastChange event specially. For details on - # LastChange events, see - # http://upnp.org/specs/av/UPnP-av-RenderingControl-v1-Service.pdf - # and http://upnp.org/specs/av/UPnP-av-AVTransport-v1-Service.pdf - if variable.tag == "LastChange": - last_change_tree = XML.fromstring( - variable.text.encode('utf-8')) - # We assume there is only one InstanceID tag. This is true for - # Sonos, as far as we know. - # InstanceID can be in one of two namespaces, depending on - # whether we are looking at an avTransport event, a - # renderingControl event, or a Queue event - # (there, it is named QueueID) - instance = last_change_tree.find( - "{urn:schemas-upnp-org:metadata-1-0/AVT/}InstanceID") - if instance is None: - instance = last_change_tree.find( - "{urn:schemas-upnp-org:metadata-1-0/RCS/}InstanceID") - if instance is None: - instance = last_change_tree.find( - "{urn:schemas-sonos-com:metadata-1-0/Queue/}QueueID") - # Look at each variable within the LastChange event - for last_change_var in instance: - tag = last_change_var.tag - # Remove any namespaces from the tags - if tag.startswith('{'): - tag = tag.split('}', 1)[1] - # Un-camel case it - tag = camel_to_underscore(tag) - # Now extract the relevant value for the variable. - # The UPnP specs suggest that the value of any variable - # evented via a LastChange Event will be in the 'val' - # attribute, but audio related variables may also have a - # 'channel' attribute. In addition, it seems that Sonos - # sometimes uses a text value instead: see - # http://forums.sonos.com/showthread.php?t=34663 - value = last_change_var.get('val') - if value is None: - value = last_change_var.text - # If DIDL metadata is returned, convert it to a music - # library data structure - if value.startswith('>> print event.variables['transport_state'] - 'STOPPED' - >>> print event.transport_state - 'STOPPED' +from .exceptions import SoCoException - """ - # pylint: disable=too-few-public-methods, too-many-arguments - - def __init__(self, sid, seq, service, timestamp, variables=None): - # Initialisation has to be done like this, because __setattr__ is - # overridden, and will not allow direct setting of attributes - self.__dict__['sid'] = sid - self.__dict__['seq'] = seq - self.__dict__['timestamp'] = timestamp - self.__dict__['service'] = service - self.__dict__['variables'] = variables if variables is not None else {} - - def __getattr__(self, name): - if name in self.variables: - return self.variables[name] - else: - raise AttributeError('No such attribute: %s' % name) - - def __setattr__(self, name, value): - """Disable (most) attempts to set attributes. - - This is not completely foolproof. It just acts as a warning! See - `object.__setattr__`. - """ - raise TypeError('Event object does not support attribute assignment') +log = logging.getLogger(__name__) # pylint: disable=C0103 class EventServer(socketserver.ThreadingMixIn, socketserver.TCPServer): @@ -228,47 +87,35 @@ class EventServer(socketserver.ThreadingMixIn, socketserver.TCPServer): allow_reuse_address = True -class EventNotifyHandler(BaseHTTPRequestHandler): - """Handles HTTP ``NOTIFY`` Verbs sent to the listener server.""" +class EventNotifyHandler(BaseHTTPRequestHandler, EventNotifyHandlerBase): + """Handles HTTP ``NOTIFY`` Verbs sent to the listener server. + Inherits from `soco.events_base.EventNotifyHandlerBase`. + """ + def __init__(self, *args, **kwargs): + # The SubscriptionsMap instance created when this module is imported. + # This is referenced by soco.events_base.EventNotifyHandlerBase. + self.subscriptions_map = subscriptions_map + # super appears at the end of __init__, because + # BaseHTTPRequestHandler.__init__ does not return. + super(EventNotifyHandler, self).__init__(*args, **kwargs) def do_NOTIFY(self): # pylint: disable=invalid-name - """Serve a ``NOTIFY`` request. - - A ``NOTIFY`` request will be sent by a Sonos device when a state - variable changes. See the `UPnP Spec §4.3 [pdf] - `_ for details. + """Serve a ``NOTIFY`` request by calling `handle_notification` + with the headers and content. """ - timestamp = time.time() headers = requests.structures.CaseInsensitiveDict(self.headers) - seq = headers['seq'] # Event sequence number - sid = headers['sid'] # Event Subscription Identifier content_length = int(headers['content-length']) content = self.rfile.read(content_length) - # Find the relevant service and queue from the sid - with _subscriptions_lock: - subscription = _subscriptions.get(sid) - # It might have been removed by another thread - if subscription: - service = subscription.service - log.info( - "Event %s received for %s service on thread %s at %s", seq, - service.service_id, threading.current_thread(), timestamp) - log.debug("Event content: %s", content) - variables = parse_event_xml(content) - # Build the Event object - event = Event(sid, seq, service, timestamp, variables) - # pass the event details on to the service so it can update its - # cache. - # pylint: disable=protected-access - service._update_cache_on_event(event) - # Put the event on the queue - subscription.events.put(event) - else: - log.info("No service registered for %s", sid) + self.handle_notification(headers, content) self.send_response(200) self.end_headers() + # pylint: disable=no-self-use, missing-docstring + def log_event(self, seq, service_id, timestamp): + log.info( + "Event %s received for %s service on thread %s at %s", seq, + service_id, threading.current_thread(), timestamp) + def log_message(self, fmt, *args): # pylint: disable=arguments-differ # Divert standard webserver logging to the debug log log.debug(fmt, *args) @@ -291,99 +138,84 @@ def __init__(self, address): self.address = address def run(self): - """Start the server on the local IP at port 1400 (default). - + """Start the server on `address`. Handling of requests is delegated to an instance of the `EventNotifyHandler` class. """ - listener = EventServer(self.address, EventNotifyHandler) - log.info("Event listener running on %s", listener.server_address) + server = EventServer(self.address, EventNotifyHandler) + log.info("Event listener running on %s", server.server_address) # Listen for events until told to stop while not self.stop_flag.is_set(): - listener.handle_request() + server.handle_request() + + def stop(self): + """Stop the server. + """ + self.stop_flag.set() -class EventListener(object): +class EventListener(EventListenerBase): """The Event Listener. Runs an http server in a thread which is an endpoint for ``NOTIFY`` - requests from Sonos devices. - + requests from Sonos devices. Inherits from + `soco.events_base.EventListenerBase`. """ def __init__(self): super(EventListener, self).__init__() - #: `bool`: Indicates whether the server is currently running - self.is_running = False - self._start_lock = threading.Lock() + #: `EventServerThread`: thread on which to run. self._listener_thread = None - #: `tuple`: The address (ip, port) on which the server is - #: configured to listen. - # Empty for the moment. (It is set in `start`) - self.address = () - def start(self, any_zone): - """Start the event listener listening on the local machine at port 1400 - (default) + def listen(self, ip_address): + """Start the event listener listening on the local machine at + port 1400 (default). + + Make sure that your firewall allows connections to this port. - Make sure that your firewall allows connections to this port + This method is called by `soco.events_base.EventListenerBase.start` Args: - any_zone (SoCo): Any Sonos device on the network. It does not - matter which device. It is used only to find a local IP address - reachable by the Sonos net. + ip_address (str): The local network interface on which the server + should start listening. + Returns: + int: `requested_port_number`. Included for + compatibility with `soco.events_twisted.EventListener.listen` Note: The port on which the event listener listens is configurable. See `config.EVENT_LISTENER_PORT` """ - - # Find our local network IP address which is accessible to the - # Sonos net, see http://stackoverflow.com/q/166506 - with self._start_lock: - if not self.is_running: - # Use configured IP address if there is one, else detect - # automatically. - if config.EVENT_LISTENER_IP: - ip_address = config.EVENT_LISTENER_IP - else: - temp_sock = socket.socket(socket.AF_INET, - socket.SOCK_DGRAM) - temp_sock.connect((any_zone.ip_address, - config.EVENT_LISTENER_PORT)) - ip_address = temp_sock.getsockname()[0] - temp_sock.close() - - # Start the event listener server in a separate thread. - self.address = (ip_address, config.EVENT_LISTENER_PORT) - self._listener_thread = EventServerThread(self.address) - self._listener_thread.daemon = True - self._listener_thread.start() - self.is_running = True - log.info("Event listener started") - - def stop(self): - """Stop the event listener.""" + address = (ip_address, self.requested_port_number) + self._listener_thread = EventServerThread(address) + self._listener_thread.daemon = True + self._listener_thread.start() + return self.requested_port_number + + def stop_listening(self, address): + """Stop the listener.""" # Signal the thread to stop before handling the next request - self._listener_thread.stop_flag.set() + self._listener_thread.stop() # Send a dummy request in case the http server is currently listening try: urlopen( - 'http://%s:%s/' % (self.address[0], self.address[1])) + 'http://%s:%s/' % (address[0], address[1])) except URLError: # If the server is already shut down, we receive a socket error, # which we ignore. pass - # wait for the thread to finish - self._listener_thread.join() - self.is_running = False - log.info("Event listener stopped") - + # wait for the thread to finish, with a timeout of one second + # to ensure the main thread does not hang + self._listener_thread.join(1) + # check if join timed out and issue a warning if it did + if self._listener_thread.isAlive(): + log.warning('Event Listener did not shutdown gracefully.') -class Subscription(object): - """A class representing the subscription to a UPnP event.""" - # pylint: disable=too-many-instance-attributes +class Subscription(SubscriptionBase): + """A class representing the subscription to a UPnP event. + Inherits from `soco.events_base.SubscriptionBase`. + """ def __init__(self, service, event_queue=None): """ Args: @@ -392,30 +224,22 @@ def __init__(self, service, event_queue=None): event_queue (:class:`~queue.Queue`): A queue on which received events will be put. If not specified, a queue will be created and used. - """ - super(Subscription, self).__init__() - self.service = service - #: `str`: A unique ID for this subscription - self.sid = None - #: `int`: The amount of time in seconds until the subscription expires. - self.timeout = None - #: `bool`: An indication of whether the subscription is subscribed. - self.is_subscribed = False - #: :class:`~queue.Queue`: The queue on which events are placed. - self.events = Queue() if event_queue is None else event_queue - #: `int`: The period (seconds) for which the subscription is requested - self.requested_timeout = None - # A flag to make sure that an unsubscribed instance is not - # resubscribed - self._has_been_unsubscribed = False - # The time when the subscription was made - self._timestamp = None + super(Subscription, self).__init__(service, event_queue) # Used to keep track of the auto_renew thread self._auto_renew_thread = None self._auto_renew_thread_flag = threading.Event() - - def subscribe(self, requested_timeout=None, auto_renew=False): + # The SubscriptionsMap instance created when this module is imported. + # This is referenced by soco.events_base.SubscriptionBase. + self.subscriptions_map = subscriptions_map + # The EventListener instance created when this module is imported. + # This is referenced by soco.events_base.SubscriptionBase. + self.event_listener = event_listener + # Used to stop race conditions, as autorenewal may occur from a thread + self._lock = threading.Lock() + + # pylint: disable=arguments-differ + def subscribe(self, requested_timeout=None, auto_renew=False, strict=True): """Subscribe to the service. If requested_timeout is provided, a subscription valid for that number @@ -423,6 +247,8 @@ def subscribe(self, requested_timeout=None, auto_renew=False): `timeout` on return to find out what period of validity is actually allocated. + This method calls `events_base.SubscriptionBase.subscribe`. + Note: SoCo will try to unsubscribe any subscriptions which are still subscribed on program termination, but it is good practice for @@ -433,224 +259,188 @@ def subscribe(self, requested_timeout=None, auto_renew=False): requested_timeout(int, optional): The timeout to be requested. auto_renew (bool, optional): If `True`, renew the subscription automatically shortly before timeout. Default `False`. + strict (bool, optional): If True and an Exception occurs during + execution, the Exception will be raised or, if False, the + Exception will be logged and the Subscription instance will be + returned. Default `True`. + + Returns: + `Subscription`: The Subscription instance. + + """ + subscribe = super(Subscription, self).subscribe + return self._wrap(subscribe, strict, requested_timeout, auto_renew) + + def renew(self, requested_timeout=None, is_autorenew=False, strict=True): + """renew(requested_timeout=None) + Renew the event subscription. + You should not try to renew a subscription which has been + unsubscribed, or once it has expired. + + This method calls `events_base.SubscriptionBase.renew`. + + Args: + requested_timeout (int, optional): The period for which a renewal + request should be made. If None (the default), use the timeout + requested on subscription. + is_autorenew (bool, optional): Whether this is an autorenewal. + Default 'False'. + strict (bool, optional): If True and an Exception occurs during + execution, the Exception will be raised or, if False, the + Exception will be logged and the Subscription instance will be + returned. Default `True`. + + Returns: + `Subscription`: The Subscription instance. + + """ + renew = super(Subscription, self).renew + return self._wrap(renew, strict, requested_timeout, is_autorenew) + + def unsubscribe(self, strict=True): + """unsubscribe() + Unsubscribe from the service's events. + Once unsubscribed, a Subscription instance should not be reused + + This method calls `events_base.SubscriptionBase.unsubscribe`. + + Args: + strict (bool, optional): If True and an Exception occurs during + execution, the Exception will be raised or, if False, the + Exception will be logged and the Subscription instance will be + returned. Default `True`. + + Returns: + `Subscription`: The Subscription instance. + """ + unsubscribe = super(Subscription, self).unsubscribe + return self._wrap(unsubscribe, strict) + + def _auto_renew_start(self, interval): + """Starts the auto_renew thread.""" class AutoRenewThread(threading.Thread): """Used by the auto_renew code to renew a subscription from within a thread. - """ def __init__(self, interval, stop_flag, sub, *args, **kwargs): super(AutoRenewThread, self).__init__(*args, **kwargs) self.interval = interval - self.sub = sub + self.subscription = sub self.stop_flag = stop_flag self.daemon = True def run(self): - sub = self.sub + subscription = self.subscription stop_flag = self.stop_flag interval = self.interval while not stop_flag.wait(interval): - log.info("Autorenewing subscription %s", sub.sid) - sub.renew() - - # TIMEOUT is provided for in the UPnP spec, but it is not clear if - # Sonos pays any attention to it. A timeout of 86400 secs always seems - # to be allocated - self.requested_timeout = requested_timeout - if self._has_been_unsubscribed: - raise SoCoException( - 'Cannot resubscribe instance once unsubscribed') - service = self.service - # The event listener must be running, so start it if not - if not event_listener.is_running: - event_listener.start(service.soco) - # an event subscription looks like this: - # SUBSCRIBE publisher path HTTP/1.1 - # HOST: publisher host:publisher port - # CALLBACK: - # NT: upnp:event - # TIMEOUT: Second-requested subscription duration (optional) - - # pylint: disable=unbalanced-tuple-unpacking - ip_address, port = event_listener.address - - if config.EVENT_ADVERTISE_IP: - ip_address = config.EVENT_ADVERTISE_IP - - headers = { - 'Callback': ''.format(ip_address, port), - 'NT': 'upnp:event' - } - if requested_timeout is not None: - headers["TIMEOUT"] = "Second-{}".format(requested_timeout) - - # Lock out EventNotifyHandler during registration - with _subscriptions_lock: - response = requests.request( - 'SUBSCRIBE', service.base_url + service.event_subscription_url, - headers=headers) - response.raise_for_status() - self.sid = response.headers['sid'] - timeout = response.headers['timeout'] - # According to the spec, timeout can be "infinite" or "second-123" - # where 123 is a number of seconds. Sonos uses "Second-123" (with - # a capital letter) - if timeout.lower() == 'infinite': - self.timeout = None - else: - self.timeout = int(timeout.lstrip('Second-')) - self._timestamp = time.time() - self.is_subscribed = True - log.info( - "Subscribed to %s, sid: %s", - service.base_url + service.event_subscription_url, self.sid) - # Add the subscription to the master dict so it can be looked up - # by sid - _subscriptions[self.sid] = self - - # Register this subscription to be unsubscribed at exit if still alive - # This will not happen if exit is abnormal (eg in response to a - # signal or fatal interpreter error - see the docs for `atexit`). - atexit.register(self.unsubscribe) - - # Set up auto_renew - if not auto_renew: - return - # Autorenew just before expiry, say at 85% of self.timeout seconds - interval = self.timeout * 85 / 100 + subscription.renew(is_autorenew=True, strict=False) + auto_renew_thread = AutoRenewThread( interval, self._auto_renew_thread_flag, self) auto_renew_thread.start() - def renew(self, requested_timeout=None): - """Renew the event subscription. + def _auto_renew_cancel(self): + """Cancels the auto_renew thread""" + self._auto_renew_thread_flag.set() - You should not try to renew a subscription which has been - unsubscribed, or once it has expired. + # pylint: disable=no-self-use, too-many-arguments + def _request(self, method, url, headers, success): + """Sends an HTTP request. Args: - requested_timeout (int, optional): The period for which a renewal - request should be made. If None (the default), use the timeout - requested on subscription. + method (str): 'SUBSCRIBE' or 'UNSUBSCRIBE'. + url (str): The full endpoint to which the request is being sent. + headers (dict): A dict of headers, each key and each value being + of type `str`. + success (function): A function to be called if the + request succeeds. The function will be called with a dict + of response headers as its only parameter. + """ - # NB This code is sometimes called from a separate thread (when - # subscriptions are auto-renewed. Be careful to ensure thread-safety - - if self._has_been_unsubscribed: - raise SoCoException( - 'Cannot renew subscription once unsubscribed') - if not self.is_subscribed: - raise SoCoException( - 'Cannot renew subscription before subscribing') - if self.time_left == 0: - raise SoCoException( - 'Cannot renew subscription after expiry') - - # SUBSCRIBE publisher path HTTP/1.1 - # HOST: publisher host:publisher port - # SID: uuid:subscription UUID - # TIMEOUT: Second-requested subscription duration (optional) - headers = { - 'SID': self.sid - } - if requested_timeout is None: - requested_timeout = self.requested_timeout - if requested_timeout is not None: - headers["TIMEOUT"] = "Second-{}".format(requested_timeout) - response = requests.request( - 'SUBSCRIBE', - self.service.base_url + self.service.event_subscription_url, - headers=headers) + response = requests.request(method, url, headers=headers) response.raise_for_status() - timeout = response.headers['timeout'] - # According to the spec, timeout can be "infinite" or "second-123" - # where 123 is a number of seconds. Sonos uses "Second-123" (with a - # a capital letter) - if timeout.lower() == 'infinite': - self.timeout = None - else: - self.timeout = int(timeout.lstrip('Second-')) - self._timestamp = time.time() - self.is_subscribed = True - log.info( - "Renewed subscription to %s, sid: %s", - self.service.base_url + self.service.event_subscription_url, - self.sid) + if success: + success(response.headers) - def unsubscribe(self): - """Unsubscribe from the service's events. + def _wrap(self, method, strict, *args, **kwargs): - Once unsubscribed, a Subscription instance should not be reused - """ - # Trying to unsubscribe if already unsubscribed, or not yet - # subscribed, fails silently - if self._has_been_unsubscribed or not self.is_subscribed: - return + """This is a wrapper for `Subscription.subscribe`, `Subscription.renew` + and `Subscription.unsubscribe` which: - # Cancel any auto renew - self._auto_renew_thread_flag.set() - # Send an unsubscribe request like this: - # UNSUBSCRIBE publisher path HTTP/1.1 - # HOST: publisher host:publisher port - # SID: uuid:subscription UUID - headers = { - 'SID': self.sid - } - response = requests.request( - 'UNSUBSCRIBE', - self.service.base_url + self.service.event_subscription_url, - headers=headers) - response.raise_for_status() - self.is_subscribed = False - self._timestamp = None - log.info( - "Unsubscribed from %s, sid: %s", - self.service.base_url + self.service.event_subscription_url, - self.sid) - # remove queue from event queues and sid to service mappings + * Returns the`Subscription` instance. + * If an Exception has occurred: - with _subscriptions_lock: - try: - del _subscriptions[self.sid] - except KeyError: - pass - self._has_been_unsubscribed = True + * Cancels the Subscription (unless the Exception was caused by + a SoCoException upon subscribe). + * On an autorenew, if the strict flag was set to False, calls + the optional self.auto_renew_fail method with the + Exception. This method needs to be threadsafe. + * If the strict flag was set to True (the default), reraises + the Exception or, if the strict flag was set to False, logs + the Exception instead. - @property - def time_left(self): - """ - `int`: The amount of time left until the subscription expires (seconds) + * Calls the wrapped methods with a threading.Lock, to prevent race + conditions (e.g. to prevent unsubscribe and autorenew being + called simultaneously). - If the subscription is unsubscribed (or not yet subscribed), - `time_left` is 0. """ - if self._timestamp is None: - return 0 - else: - time_left = self.timeout - (time.time() - self._timestamp) - return time_left if time_left > 0 else 0 - def __enter__(self): - if not self.is_subscribed: - self.subscribe() - return self + action = method.__name__ - def __exit__(self, exc_type, exc_val, exc_tb): - self.unsubscribe() + # A lock is used, because autorenewal occurs in + # a thread + with self._lock: + try: + method(*args, **kwargs) + + except Exception as exc: # pylint: disable=broad-except + # If an Exception occurred during execution of subscribe, + # renew or unsubscribe, set the cancel flag to True unless + # the Exception was a SoCoException upon subscribe + cancel = action == 'renew' or not \ + isinstance(exc, SoCoException) + + if cancel: + # If the cancel flag was set to true, cancel the + # subscription with an explanation. + msg = "An Exception occurred. Subscription to" +\ + " {}, sid: {} has been cancelled".format( + self.service.base_url + + self.service.event_subscription_url, + self.sid) + self._cancel_subscription(msg) + # If we're not being strict, log the Exception + if not strict: + msg = "Exception received in Subscription." +\ + "{} for Subscription to:\n{}, sid: {}".format( + action, + self.service.base_url + + self.service.event_subscription_url, + self.sid) + log.exception(msg) + # If we're not being strict upon a renewal + # (e.g. an autorenewal) call the optional + # self.auto_renew_fail method, if it has been set + if action == 'renew' and self.auto_renew_fail is not None: + if hasattr(self.auto_renew_fail, '__call__'): + # pylint: disable=not-callable + self.auto_renew_fail(exc) + + # If we're being strict, reraise the Exception + else: + raise # pylint: disable=raising-bad-type -# pylint: disable=C0103 -event_listener = EventListener() + else: + # Return the Subscription to the function that + # called subscribe, renew or unsubscribe (unless an + # Exception occurred and it was reraised above) + return self # pylint: disable=lost-exception -# Thread safe mapping. -# Used to store a mapping of sid to subscription. -_subscriptions = weakref.WeakValueDictionary() -# The lock to go with it -# You must only ever access the mapping in the context of this lock, eg: -# with _subscriptions_lock: -# queue = _subscriptions[sid].events -_subscriptions_lock = threading.Lock() +subscriptions_map = SubscriptionsMap() # pylint: disable=C0103 +event_listener = EventListener() # pylint: disable=C0103 diff --git a/sonos/soco/events_base.py b/sonos/soco/events_base.py new file mode 100644 index 000000000..7cce50136 --- /dev/null +++ b/sonos/soco/events_base.py @@ -0,0 +1,766 @@ +# -*- coding: utf-8 -*- +# pylint: disable=not-context-manager + +# NOTE: The pylint not-content-manager warning is disabled pending the fix of +# a bug in pylint. See https://github.com/PyCQA/pylint/issues/782 + +# Disable while we have Python 2.x compatability +# pylint: disable=useless-object-inheritance + + +"""Base classes used by :py:mod:`soco.events` and +:py:mod:`soco.events_twisted`.""" + +from __future__ import unicode_literals + +import atexit +import logging +import socket +import time +import threading +import weakref + +from . import config +from .compat import Queue +from .data_structures_entry import from_didl_string +from .exceptions import SoCoException, SoCoFault, EventParseException +from .utils import camel_to_underscore +from .xml import XML + +log = logging.getLogger(__name__) # pylint: disable=C0103 + + +# pylint: disable=too-many-branches +def parse_event_xml(xml_event): + """Parse the body of a UPnP event. + + Args: + xml_event (bytes): bytes containing the body of the event encoded + with utf-8. + + Returns: + dict: A dict with keys representing the evented variables. The + relevant value will usually be a string representation of the + variable's value, but may on occasion be: + + * a dict (eg when the volume changes, the value will itself be a + dict containing the volume for each channel: + :code:`{'Volume': {'LF': '100', 'RF': '100', 'Master': '36'}}`) + * an instance of a `DidlObject` subclass (eg if it represents + track metadata). + * a `SoCoFault` (if a variable contains illegal metadata) + """ + + result = {} + tree = XML.fromstring(xml_event) + # property values are just under the propertyset, which + # uses this namespace + properties = tree.findall( + '{urn:schemas-upnp-org:event-1-0}property') + for prop in properties: # pylint: disable=too-many-nested-blocks + for variable in prop: + # Special handling for a LastChange event specially. For details on + # LastChange events, see + # http://upnp.org/specs/av/UPnP-av-RenderingControl-v1-Service.pdf + # and http://upnp.org/specs/av/UPnP-av-AVTransport-v1-Service.pdf + if variable.tag == "LastChange": + last_change_tree = XML.fromstring( + variable.text.encode('utf-8')) + # We assume there is only one InstanceID tag. This is true for + # Sonos, as far as we know. + # InstanceID can be in one of two namespaces, depending on + # whether we are looking at an avTransport event, a + # renderingControl event, or a Queue event + # (there, it is named QueueID) + instance = last_change_tree.find( + "{urn:schemas-upnp-org:metadata-1-0/AVT/}InstanceID") + if instance is None: + instance = last_change_tree.find( + "{urn:schemas-upnp-org:metadata-1-0/RCS/}InstanceID") + if instance is None: + instance = last_change_tree.find( + "{urn:schemas-sonos-com:metadata-1-0/Queue/}QueueID") + # Look at each variable within the LastChange event + for last_change_var in instance: + tag = last_change_var.tag + # Remove any namespaces from the tags + if tag.startswith('{'): + tag = tag.split('}', 1)[1] + # Un-camel case it + tag = camel_to_underscore(tag) + # Now extract the relevant value for the variable. + # The UPnP specs suggest that the value of any variable + # evented via a LastChange Event will be in the 'val' + # attribute, but audio related variables may also have a + # 'channel' attribute. In addition, it seems that Sonos + # sometimes uses a text value instead: see + # http://forums.sonos.com/showthread.php?t=34663 + value = last_change_var.get('val') + if value is None: + value = last_change_var.text + # If DIDL metadata is returned, convert it to a music + # library data structure + if value.startswith('>> print event.variables['transport_state'] + 'STOPPED' + >>> print event.transport_state + 'STOPPED' + + """ + # pylint: disable=too-few-public-methods, too-many-arguments + + def __init__(self, sid, seq, service, timestamp, variables=None): + # Initialisation has to be done like this, because __setattr__ is + # overridden, and will not allow direct setting of attributes + self.__dict__['sid'] = sid + self.__dict__['seq'] = seq + self.__dict__['timestamp'] = timestamp + self.__dict__['service'] = service + self.__dict__['variables'] = variables if variables is not None else {} + + def __getattr__(self, name): + if name in self.variables: + return self.variables[name] + else: + raise AttributeError('No such attribute: %s' % name) + + def __setattr__(self, name, value): + """Disable (most) attempts to set attributes. + + This is not completely foolproof. It just acts as a warning! See + `object.__setattr__`. + """ + raise TypeError('Event object does not support attribute assignment') + + +class EventNotifyHandlerBase(object): + """Base class for `soco.events.EventNotifyHandler` and + `soco.events_twisted.EventNotifyHandler`. + """ + # pylint: disable=too-many-public-methods + + def handle_notification(self, headers, content): + """Handle a ``NOTIFY`` request by building an `Event` object and + sending it to the relevant Subscription object. + + A ``NOTIFY`` request will be sent by a Sonos device when a state + variable changes. See the `UPnP Spec §4.3 [pdf] + `_ for details. + + Args: + headers (dict): A dict of received headers. + content (str): A string of received content. + Note: + Each of the :py:mod:`soco.events` and the + :py:mod:`soco.events_twisted` modules has a **subscriptions_map** + object which keeps a record of Subscription objects. The + *get_subscription* method of the **subscriptions_map** object is + used to look up the subscription to which the event relates. When + the Event Listener runs in a thread (the default), a lock is + used by this method for thread safety. The *send_event* + method of the relevant Subscription will first check to see + whether the *callback* variable of the Subscription has been + set. If it has been and is callable, then the *callback* + will be called with the `Event` object. Otherwise, the `Event` + object will be sent to the event queue of the Subscription + object. The *callback* variable of the Subscription object is + intended for use only if :py:mod:`soco.events_twisted` is being + used, as calls to it are not threadsafe. + + This method calls the log_event method, which must be overridden + in the class that inherits from this class. + """ + + timestamp = time.time() + seq = headers['seq'] # Event sequence number + sid = headers['sid'] # Event Subscription Identifier + # find the relevant service from the sid + # pylint: disable=no-member + subscription = self.subscriptions_map.get_subscription(sid) + # It might have been removed by another thread + if subscription: + service = subscription.service + self.log_event(seq, service.service_id, timestamp) + log.debug("Event content: %s", content) + variables = parse_event_xml(content) + # Build the Event object + event = Event(sid, seq, service, timestamp, variables) + # pass the event details on to the service so it can update + # its cache. + # pylint: disable=protected-access + service._update_cache_on_event(event) + # Pass the event on for handling + subscription.send_event(event) + else: + log.info("No service registered for %s", sid) + + # pylint: disable=missing-docstring + def log_event(self, seq, service_id, timestamp): + raise NotImplementedError + + +class EventListenerBase(object): + """Base class for `soco.events.EventListener` and + `soco.events_twisted.EventListener`. + """ + + def __init__(self): + #: `bool`: Indicates whether the server is currently running + self.is_running = False + self._start_lock = threading.Lock() + #: `tuple`: The address (ip, port) on which the server is + #: configured to listen. + # Empty for the moment. (It is set in `start`) + self.address = () + #: `int`: Port on which to listen. + self.requested_port_number = config.EVENT_LISTENER_PORT + + def start(self, any_zone): + """Start the event listener listening on the local machine. + + Args: + any_zone (SoCo): Any Sonos device on the network. It does not + matter which device. It is used only to find a local IP + address reachable by the Sonos net. + + """ + + # Find our local network IP address which is accessible to the + # Sonos net, see http://stackoverflow.com/q/166506 + with self._start_lock: + if not self.is_running: + # Use configured IP address if there is one, else detect + # automatically. + if config.EVENT_LISTENER_IP: + ip_address = config.EVENT_LISTENER_IP + else: + temp_sock = socket.socket(socket.AF_INET, + socket.SOCK_DGRAM) + try: + # doesn't have to be reachable + temp_sock.connect((any_zone.ip_address, 0)) + ip_address = temp_sock.getsockname()[0] + except socket.error: + log.exception( + 'Could not start Event Listener: check network.') + ip_address = None + finally: + temp_sock.close() + if ip_address: # Otherwise, no point trying to start server + # Check what port we actually got (twisted only) + port = self.listen(ip_address) + if port: + self.address = (ip_address, port) + self.is_running = True + log.info("Event Listener started") + + def stop(self): + """Stop the Event Listener. + """ + if not self.is_running: + return + self.is_running = False + self.stop_listening(self.address) + log.info("Event Listener stopped") + + # pylint: disable=missing-docstring + def listen(self, ip_address): + """Start the event listener listening on the local machine. + This method is called by `start`. + + Args: + ip_address (str): The local network interface on which the server + should start listening. + Returns: + int: The port on which the server is listening. + + Note: + This method must be overridden in the class that inherits from + this class. + """ + raise NotImplementedError + + # pylint: disable=missing-docstring + def stop_listening(self, address): + """Stop the listener. + + Note: + This method must be overridden in the class that inherits from + this class. + """ + raise NotImplementedError + + +class SubscriptionBase(object): + """Base class for `soco.events.Subscription` and + `soco.events_twisted.Subscription` + """ + # pylint: disable=too-many-instance-attributes + + def __init__(self, service, event_queue=None): + """ + Args: + service (Service): The SoCo `Service` to which the subscription + should be made. + event_queue (:class:`~queue.Queue`): A queue on which received + events will be put. If not specified, a queue will be + created and used. + """ + self.service = service + #: `str`: A unique ID for this subscription + self.sid = None + #: `int`: The amount of time in seconds until the subscription expires. + self.timeout = None + #: `bool`: An indication of whether the subscription is subscribed. + self.is_subscribed = False + #: :class:`~queue.Queue`: The queue on which events are placed. + self.events = Queue() if event_queue is None else event_queue + #: `int`: The period (seconds) for which the subscription is requested + self.requested_timeout = None + #: :py:obj:`function`: an optional function to be called if an + #: exception occurs upon autorenewal. This will be called with the + #: exception (or failure, when using :py:mod:`soco.events_twisted`) + #: as its only parameter. This function must be threadsafe (unless + #: :py:mod:`soco.events_twisted` is being used). + self.auto_renew_fail = None + # A flag to make sure that an unsubscribed instance is not + # resubscribed + self._has_been_unsubscribed = False + # The time when the subscription was made + self._timestamp = None + + def subscribe(self, requested_timeout=None, auto_renew=False): + """Subscribe to the service. + + If requested_timeout is provided, a subscription valid for that number + of seconds will be requested, but not guaranteed. Check + `timeout` on return to find out what period of validity is + actually allocated. + + Note: + SoCo will try to unsubscribe any subscriptions which are still + subscribed on program termination, but it is good practice for + you to clean up by making sure that you call :meth:`unsubscribe` + yourself. + + Args: + requested_timeout(int, optional): The timeout to be requested. + auto_renew (bool, optional): If `True`, renew the subscription + automatically shortly before timeout. Default `False`. + + """ + + # TIMEOUT is provided for in the UPnP spec, but it is not clear if + # Sonos pays any attention to it. A timeout of 86400 secs always seems + # to be allocated + self.requested_timeout = requested_timeout + if self.is_subscribed: + raise SoCoException( + 'Cannot subscribe Subscription instance more than once. ' + + 'Use renew instead') + if self._has_been_unsubscribed: + raise SoCoException( + 'Cannot resubscribe Subscription instance once unsubscribed') + service = self.service + # The Event Listener must be running, so start it if not + # pylint: disable=no-member + if not self.event_listener.is_running: + self.event_listener.start(service.soco) + # an event subscription looks like this: + # SUBSCRIBE publisher path HTTP/1.1 + # HOST: publisher host:publisher port + # CALLBACK: + # NT: upnp:event + # TIMEOUT: Second-requested subscription duration (optional) + + # pylint: disable=unbalanced-tuple-unpacking + ip_address, port = self.event_listener.address + + if config.EVENT_ADVERTISE_IP: + ip_address = config.EVENT_ADVERTISE_IP + + headers = { + 'Callback': ''.format(ip_address, port), + 'NT': 'upnp:event' + } + if requested_timeout is not None: + headers["TIMEOUT"] = "Second-{}".format(requested_timeout) + + # pylint: disable=missing-docstring + def success(headers): + self.sid = headers['sid'] + timeout = headers['timeout'] + # According to the spec, timeout can be "infinite" or "second-123" + # where 123 is a number of seconds. Sonos uses "Second-123" + # (with a capital letter) + if timeout.lower() == 'infinite': + self.timeout = None + else: + self.timeout = int(timeout.lstrip('Second-')) + self._timestamp = time.time() + self.is_subscribed = True + log.info( + "Subscribed to %s, sid: %s", + service.base_url + service.event_subscription_url, self.sid) + # Register the subscription so it can be looked up by sid + # and unsubscribed at exit + self.subscriptions_map.register(self) + + # Set up auto_renew + if not auto_renew: + return + # Autorenew just before expiry, say at 85% of self.timeout seconds + interval = self.timeout * 85 / 100 + self._auto_renew_start(interval) + + # Lock out EventNotifyHandler during registration. + # If events_twisted is used, this lock should always be + # available, since threading is not being used. This is to prevent + # the EventNotifyHandler from sending a notification before the + # subscription has been registered. + with self.subscriptions_map.subscriptions_lock: + return self._request( + 'SUBSCRIBE', service.base_url + service.event_subscription_url, + headers, success) + + def renew(self, requested_timeout=None, is_autorenew=False): + """renew(requested_timeout=None) + Renew the event subscription. + You should not try to renew a subscription which has been + unsubscribed, or once it has expired. + + Args: + requested_timeout (int, optional): The period for which a renewal + request should be made. If None (the default), use the timeout + requested on subscription. + is_autorenew (bool, optional): Whether this is an autorenewal. + + """ + # NB This code may be called from a separate thread when + # subscriptions are auto-renewed. Be careful to ensure thread-safety + + if is_autorenew: + log_msg = "Autorenewing subscription %s" + else: + log_msg = "Renewing subscription %s" + log.info(log_msg, self.sid) + + if self._has_been_unsubscribed: + raise SoCoException( + "Cannot renew subscription once unsubscribed") + if not self.is_subscribed: + raise SoCoException( + "Cannot renew subscription before subscribing") + if self.time_left == 0: + raise SoCoException( + "Cannot renew subscription after expiry") + + # SUBSCRIBE publisher path HTTP/1.1 + # HOST: publisher host:publisher port + # SID: uuid:subscription UUID + # TIMEOUT: Second-requested subscription duration (optional) + headers = { + 'SID': self.sid + } + if requested_timeout is None: + requested_timeout = self.requested_timeout + if requested_timeout is not None: + headers["TIMEOUT"] = "Second-{}".format(requested_timeout) + + # pylint: disable=missing-docstring + def success(headers): + timeout = headers['timeout'] + # According to the spec, timeout can be "infinite" or "second-123" + # where 123 is a number of seconds. Sonos uses "Second-123" + # (with a capital letter) + if timeout.lower() == 'infinite': + self.timeout = None + else: + self.timeout = int(timeout.lstrip('Second-')) + self._timestamp = time.time() + self.is_subscribed = True + log.info( + "Renewed subscription to %s, sid: %s", + self.service.base_url + self.service.event_subscription_url, + self.sid) + + return self._request( + 'SUBSCRIBE', + self.service.base_url + self.service.event_subscription_url, + headers, success) + + def unsubscribe(self): + """unsubscribe() + Unsubscribe from the service's events. + Once unsubscribed, a Subscription instance should not be reused + """ + # Trying to unsubscribe if already unsubscribed, or not yet + # subscribed, fails silently + if self._has_been_unsubscribed or not self.is_subscribed: + return None + + self._cancel_subscription() + + # If the subscription has timed out, an attempt to + # unsubscribe from it will fail silently. + if self.time_left == 0: + return None + + # Send an unsubscribe request like this: + # UNSUBSCRIBE publisher path HTTP/1.1 + # HOST: publisher host:publisher port + # SID: uuid:subscription UUID + headers = { + 'SID': self.sid + } + + # pylint: disable=missing-docstring, unused-argument + def success(*arg): + log.info( + "Unsubscribed from %s, sid: %s", + self.service.base_url + self.service.event_subscription_url, + self.sid) + + return self._request( + 'UNSUBSCRIBE', + self.service.base_url + self.service.event_subscription_url, + headers, success) + + def send_event(self, event): + """Send an `Event` to self.callback or self.events. + If self.callback is set and is callable, it will be called with the + `Event` as the only parameter. Otherwise the `Event` will be sent to + self.events. As self.callback is not threadsafe, it should be set + only if `soco.events_twisted.Subscription` is being used. + + Args: + event(Event): The `Event` to send to self.callback or + self.events. + + """ + if hasattr(self, 'callback'): + # pylint: disable=no-member + callback = self.callback + else: + callback = None + if callback and hasattr(callback, '__call__'): + callback(event) + else: + self.events.put(event) + + # pylint: disable=missing-docstring + def _auto_renew_start(self, interval): + """Starts the auto_renew thread. + + Note: + This method must be overridden in the class that inherits from + this class. + """ + raise NotImplementedError + + # pylint: disable=missing-docstring + def _auto_renew_cancel(self): + """Cancels the auto_renew thread. + + Note: + This method must be overridden in the class that inherits from + this class. + """ + raise NotImplementedError + + # pylint: disable=missing-docstring, too-many-arguments + def _request(self, method, url, headers, success): + """Send a HTTP request + + Args: + method (str): 'SUBSCRIBE' or 'UNSUBSCRIBE'. + url (str): The full endpoint to which the request is being sent. + headers (dict): A dict of headers, each key and each value being + of type `str`. + success (function): A function to be called if the + request succeeds. The function will be called with a dict + of response headers as its only parameter. + + Note: + This method must be overridden in the class that inherits from + this class. + """ + raise NotImplementedError + + # pylint: disable=missing-docstring + def _cancel_subscription(self, msg=None): + # unregister subscription + # pylint: disable=no-member + self.subscriptions_map.unregister(self) + # Stop the event listener, if there are no other subscriptions + if self.subscriptions_map.count == 0: + self.event_listener.stop() + # No need to do any more if this flag has been set to True + if self._has_been_unsubscribed: + return + self.is_subscribed = False + # Set the self._has_been_unsubscribed flag now + # to prevent reuse of the subscription, even if + # an attempt to unsubscribe fails + self._has_been_unsubscribed = True + self._timestamp = None + # Cancel any auto renew + self._auto_renew_cancel() + if msg: + log.info(msg) + + @property + def time_left(self): + """ + `int`: The amount of time left until the subscription expires (seconds) + If the subscription is unsubscribed (or not yet subscribed), + `time_left` is 0. + """ + if self._timestamp is None: + return 0 + else: + time_left = self.timeout - (time.time() - self._timestamp) + return time_left if time_left > 0 else 0 + + def __enter__(self): + if not self.is_subscribed: + self.subscribe() + return self + + def __exit__(self, exc_type, exc_val, exc_tb): + self.unsubscribe() + + +class SubscriptionsMap(object): + """Maintains a mapping of sids to `soco.events.Subscription` instances + and the thread safe lock to go with it. Registers each subscription to + be unsubscribed at exit. + + `SubscriptionsMapTwisted` inherits from this class. + + """ + def __init__(self): + super(SubscriptionsMap, self).__init__() + #: `weakref.WeakValueDictionary`: Thread safe mapping. + #: Used to store a mapping of sid to subscription + self.subscriptions = weakref.WeakValueDictionary() + # The lock to go with it + # You must only ever access the mapping in the context of this lock, + # eg: + # with self.subscriptions_lock: + # queue = self.subscriptions[sid].events + #: `threading.Lock`: for use with `subscriptions` + self.subscriptions_lock = threading.Lock() + + def register(self, subscription): + """Register a subscription by updating local mapping of sid to + subscription and registering it to be unsubscribed at exit. + + Args: + subscription(`soco.events.Subscription`): the subscription + to be registered. + + """ + # Add the queue to the master dict of subscriptions so it can be + # looked up by sid. The subscriptions_lock is not used here as + # it is used in Subscription.subscribe() in the events_base + # module, from which the register function is called. + self.subscriptions[subscription.sid] = subscription + # Register subscription to be unsubscribed at exit if still alive + # This will not happen if exit is abnormal (eg in response to a + # signal or fatal interpreter error - see the docs for `atexit`). + atexit.register(subscription.unsubscribe) + + def unregister(self, subscription): + """Unregister a subscription by updating local mapping of sid to + subscription instances. + + Args: + subscription(`soco.events.Subscription`): the subscription + to be unregistered. + + When using :py:mod:`soco.events_twisted`, an instance of + `soco.events_twisted.Subscription` will be unregistered. + + """ + with self.subscriptions_lock: + try: + del self.subscriptions[subscription.sid] + except KeyError: + pass + + def get_subscription(self, sid): + """Look up a subscription from a sid. + + Args: + sid(str): The sid from which to look up the subscription. + + Returns: + `soco.events.Subscription`: The subscription relating + to that sid. + + When using :py:mod:`soco.events_twisted`, an instance of + `soco.events_twisted.Subscription` will be returned. + + """ + with self.subscriptions_lock: + return self.subscriptions.get(sid) + + @property + def count(self): + """ + `int`: The number of active subscriptions. + """ + with self.subscriptions_lock: + return len(self.subscriptions) diff --git a/sonos/soco/events_twisted.py b/sonos/soco/events_twisted.py new file mode 100644 index 000000000..1f5143406 --- /dev/null +++ b/sonos/soco/events_twisted.py @@ -0,0 +1,556 @@ +# -*- coding: utf-8 -*- +# pylint: disable=not-context-manager + +# NOTE: The pylint not-content-manager warning is disabled pending the fix of +# a bug in pylint. See https://github.com/PyCQA/pylint/issues/782 + +# Disable while we have Python 2.x compatability +# pylint: disable=useless-object-inheritance + + +"""Classes to handle Sonos UPnP Events and Subscriptions. + +The `Subscription` class from this module will be used in +:py:mod:`soco.services` if config.EVENTS_MODULE is set +to point to this module. + +Example: + + Run this code, and change your volume, tracks etc:: + + from __future__ import print_function + import logging + logging.basicConfig() + import soco + from pprint import pprint + + from soco import events_twisted + soco.config.EVENTS_MODULE = events_twisted + from twisted.internet import reactor + + def print_event(event): + try: + pprint (event.variables) + except Exception as e: + pprint ('There was an error in print_event:', e) + + def main(): + # pick a device at random and use it to get + # the group coordinator + device = soco.discover().pop().group.coordinator + print (device.player_name) + sub = device.renderingControl.subscribe().subscription + sub2 = device.avTransport.subscribe().subscription + sub.callback = print_event + sub2.callback = print_event + + def before_shutdown(): + sub.unsubscribe() + sub2.unsubscribe() + events_twisted.event_listener.stop() + + reactor.addSystemEventTrigger( + 'before', 'shutdown', before_shutdown) + + if __name__=='__main__': + reactor.callWhenRunning(main) + reactor.run() + +.. _Deferred: https://twistedmatrix.com/documents/current/api/\ +twisted.internet.defer.Deferred.html +.. _Failure: https://twistedmatrix.com/documents/current/api/\ +twisted.python.failure.Failure.html + +""" + +from __future__ import unicode_literals + +import logging + +# pylint: disable=import-error +from twisted.internet import reactor +from twisted.web.server import Site +from twisted.web.resource import Resource +import twisted.internet.error +from twisted.internet import task, defer +from twisted.python.failure import Failure +from twisted.web.client import Agent, BrowserLikeRedirectAgent +from twisted.web.http_headers import Headers + +# Event is imported for compatibility with events.py +# pylint: disable=unused-import +from .events_base import Event # noqa: F401 + +from .events_base import ( + EventNotifyHandlerBase, EventListenerBase, SubscriptionBase, + SubscriptionsMap +) + +from .exceptions import SoCoException + +log = logging.getLogger(__name__) # pylint: disable=C0103 + + +class EventNotifyHandler(Resource, EventNotifyHandlerBase): + """Handles HTTP ``NOTIFY`` Verbs sent to the listener server. + Inherits from `soco.events_base.EventNotifyHandlerBase`. + """ + isLeaf = True + + def __init__(self): + super(EventNotifyHandler, self).__init__() + # The SubscriptionsMapTwisted instance created when this module is + # imported. This is referenced by + # soco.events_base.EventNotifyHandlerBase. + self.subscriptions_map = subscriptions_map + + def render_NOTIFY(self, request): # pylint: disable=invalid-name + """Serve a ``NOTIFY`` request by calling `handle_notification` + with the headers and content. + """ + headers = {} + for header in request.requestHeaders.getAllRawHeaders(): + decoded_key = header[0].decode('utf8').lower() + decoded_header = header[1][0].decode('utf8') + headers[decoded_key] = decoded_header + content = request.content.read() + self.handle_notification(headers, content) + return b'OK' + + # pylint: disable=no-self-use, missing-docstring + def log_event(self, seq, service_id, timestamp): + log.info( + "Event %s received for %s service at %s", seq, + service_id, timestamp) + + +class EventListener(EventListenerBase): + """The Event Listener. + + Runs an http server which is an endpoint for ``NOTIFY`` + requests from Sonos devices. Inherits from + `soco.events_base.EventListenerBase`. + """ + + def __init__(self): + super(EventListener, self).__init__() + #: :py:class:`twisted.internet.tcp.Port`: set at `listen` + self.port = None + + def listen(self, ip_address): + """Start the event listener listening on the local machine at + port 1400 (default). If this port is unavailable, the + listener will attempt to listen on the next available port, + within a range of 100. + + Make sure that your firewall allows connections to this port. + + This method is called by `soco.events_base.EventListenerBase.start` + + Handling of requests is delegated to an instance of the + `EventNotifyHandler` class. + + Args: + ip_address (str): The local network interface on which the server + should start listening. + Returns: + int: The port on which the server is listening. + + Note: + The port on which the event listener listens is configurable. + See `config.EVENT_LISTENER_PORT` + """ + factory = Site(EventNotifyHandler()) + for port_number in range(self.requested_port_number, + self.requested_port_number + 100): + try: + if port_number > self.requested_port_number: + log.warning("Trying next port (%d)", port_number) + # pylint: disable=no-member + self.port = reactor.listenTCP(port_number, factory, + interface=ip_address) + break + # pylint: disable=invalid-name + except twisted.internet.error.CannotListenError as e: + log.warning(e) + continue + + if self.port: + log.info("Event listener running on %s", (ip_address, + self.port.port)) + return self.port.port + else: + return None + + # pylint: disable=unused-argument + def stop_listening(self, address): + """Stop the listener.""" + port, self.port = self.port, None + port.stopListening() + + +class Subscription(SubscriptionBase): + """A class representing the subscription to a UPnP event. + Inherits from `soco.events_base.SubscriptionBase`. + """ + def __init__(self, service, event_queue=None): + """ + Args: + service (Service): The SoCo `Service` to which the subscription + should be made. + event_queue (:class:`~queue.Queue`): A queue on which received + events will be put. If not specified, a queue will be + created and used. + + """ + super(Subscription, self).__init__(service, event_queue) + #: :py:obj:`function`: callback function to be called whenever an + #: `Event` is received. If it is set and is callable, the callback + #: function will be called with the `Event` as the only parameter and + #: the Subscription's event queue won't be used. + self.callback = None + # The SubscriptionsMapTwisted instance created when this module is + # imported. This is referenced by soco.events_base.SubscriptionBase. + self.subscriptions_map = subscriptions_map + # The EventListener instance created when this module is imported. + # This is referenced by soco.events_base.SubscriptionBase. + self.event_listener = event_listener + # Used to keep track of the auto_renew loop + self._auto_renew_loop = None + # Used to serialise calls to subscribe, renew and unsubscribe + self._queue = [] + + # pylint: disable=arguments-differ + def subscribe(self, requested_timeout=None, auto_renew=False, strict=True): + """Subscribe to the service. + + If requested_timeout is provided, a subscription valid for that number + of seconds will be requested, but not guaranteed. Check + `timeout` on return to find out what period of validity is + actually allocated. + + This method calls `events_base.SubscriptionBase.subscribe`. + + Note: + SoCo will try to unsubscribe any subscriptions which are still + subscribed on program termination, but it is good practice for + you to clean up by making sure that you call :meth:`unsubscribe` + yourself. + + Args: + requested_timeout(int, optional): The timeout to be requested. + auto_renew (bool, optional): If `True`, renew the subscription + automatically shortly before timeout. Default `False`. + strict (bool, optional): If True and an Exception occurs during + execution, the returned Deferred_ will fail with a Failure_ + which will be passed to the applicable errback (if any has + been set by the calling code) or, if False, the Failure will + be logged and the Subscription instance will be passed to + the applicable callback (if any has + been set by the calling code). Default `True`. + + Returns: + Deferred_: A Deferred_ the result of which will be the + Subscription instance and the subscription property of which + will point to the Subscription instance. + + """ + subscribe = super(Subscription, self).subscribe + return self._wrap(subscribe, strict, requested_timeout, auto_renew) + + def renew(self, requested_timeout=None, is_autorenew=False, strict=True): + """renew(requested_timeout=None) + Renew the event subscription. + You should not try to renew a subscription which has been + unsubscribed, or once it has expired. + + This method calls `events_base.SubscriptionBase.renew`. + + Args: + requested_timeout (int, optional): The period for which a renewal + request should be made. If None (the default), use the timeout + requested on subscription. + is_autorenew (bool, optional): Whether this is an autorenewal. + Default 'False'. + strict (bool, optional): If True and an Exception occurs during + execution, the returned Deferred_ will fail with a Failure_ + which will be passed to the applicable errback (if any has + been set by the calling code) or, if False, the Failure will + be logged and the Subscription instance will be passed to + the applicable callback (if any has + been set by the calling code). Default `True`. + + Returns: + Deferred_: A Deferred_ the result of which will be the + Subscription instance and the subscription property of which + will point to the Subscription instance. + + """ + renew = super(Subscription, self).renew + return self._wrap(renew, strict, requested_timeout, is_autorenew) + + def unsubscribe(self, strict=True): + """unsubscribe() + Unsubscribe from the service's events. + Once unsubscribed, a Subscription instance should not be reused + + This method calls `events_base.SubscriptionBase.unsubscribe`. + + Args: + strict (bool, optional): If True and an Exception occurs during + execution, the returned Deferred_ will fail with a Failure_ + which will be passed to the applicable errback (if any has + been set by the calling code) or, if False, the Failure will + be logged and the Subscription instance will be passed to + the applicable callback (if any has + been set by the calling code). Default `True`. + + Returns: + Deferred_: A Deferred_ the result of which will be the + Subscription instance and the subscription property of which + will point to the Subscription instance. + """ + unsubscribe = super(Subscription, self).unsubscribe + return self._wrap(unsubscribe, strict) + + def _auto_renew_start(self, interval): + """Starts the auto_renew loop.""" + self._auto_renew_loop = task.LoopingCall(self.renew, is_autorenew=True, + strict=False) + # False means wait for the interval to elapse, rather than fire at once + self._auto_renew_loop.start(interval, False) + + def _auto_renew_cancel(self): + """Cancels the auto_renew loop""" + if self._auto_renew_loop: + self._auto_renew_loop.stop() + self._auto_renew_loop = None + + # pylint: disable=no-self-use, too-many-branches, too-many-arguments + def _request(self, method, url, headers, success): + """Sends an HTTP request. + + Args: + method (str): 'SUBSCRIBE' or 'UNSUBSCRIBE'. + url (str): The full endpoint to which the request is being sent. + headers (dict): A dict of headers, each key and each value being + of type `str`. + success (function): A function to be called if the + request succeeds. The function will be called with a dict + of response headers as its only parameter. + + """ + agent = BrowserLikeRedirectAgent(Agent(reactor)) + + if headers: + for k in headers.keys(): + header = headers[k] + del headers[k] + if isinstance(header, (list,)): + header = header[0] + if not isinstance(header, (bytes, bytearray)): + header = header.encode('latin-1') + k = k.encode('latin-1') + headers[k] = [header] + + args = ( + method.encode('latin-1'), + url.encode('latin-1'), + Headers(headers) + ) + d = agent.request(*args) # pylint: disable=invalid-name + + def on_success(response): # pylint: disable=missing-docstring + response_headers = {} + for header in response.headers.getAllRawHeaders(): + decoded_key = header[0].decode('utf8').lower() + decoded_header = header[1][0].decode('utf8') + response_headers[decoded_key] = decoded_header + success(response_headers) + return self + + d.addCallback(on_success) + return d + + def _wrap(self, method, strict, *args, **kwargs): + + """This is a wrapper for `Subscription.subscribe`, `Subscription.renew` + and `Subscription.unsubscribe` which: + + * Returns a deferred, the result of which will be the`Subscription` + instance. + * Sets deferred.subscription to point to the `Subscription` + instance so a calling function can access the Subscription + instance immediately without registering a Callback and waiting + for it to fire. + * Converts an Exception into a twisted.python.failure.Failure. + * If a Failure (including an Exception converted into a Failure) + has occurred: + + * Cancels the Subscription (unless the Failure was caused by a + SoCoException upon subscribe). + * On an autorenew, if the strict flag was set to False, calls + the optional self.auto_renew_fail method with the + Failure. + * If the strict flag was set to True (the default), passes the + Failure to the next Errback for handling or, if the strict + flag was set to False, logs the Failure instead. + + * Calls the `subscribing` and `finished_subscribing` methods of + self.subscriptions_map, so that `count` property of + self.subscriptions_map includes pending subscriptions. + * Serialises calls to the wrapped methods, so that, for example, a + call to unsubscribe will not commence until a call to subscribe + has completed. + + """ + action = method.__name__ + + # pylint: disable=unused-argument + def execute(result, method, *args, **kwargs): + """Execute method + """ + # Increment the counter of pending calls to Subscription.subscribe + # if method is subscribe + if method.__name__ == 'subscribe': + self.subscriptions_map.subscribing() + + # Execute method + return method(*args, **kwargs) + + def callnext(): + """Call the next deferred in the queue. + """ + # If there is another deferred in the queue, + # call it + if self._queue: + d = self._queue[0] # pylint: disable=invalid-name + d.callback(None) + + def handle_outcome(outcome): + """A callback / errback to handle the outcome ofmethod, + after it has been executed + """ + # We start by assuming no Failure occurred + failure = None + + if isinstance(outcome, Failure): + failure = outcome + # If a Failure or Exception occurred during execution of + # subscribe, renew or unsubscribe, cancel it unless the + # Failure or Exception was a SoCoException upon subscribe + if failure.type != SoCoException or action == 'renew': + msg = "An Exception occurred. Subscription to" +\ + " {}, sid: {} has been cancelled".format( + self.service.base_url + + self.service.event_subscription_url, + self.sid) + self._cancel_subscription(msg) + # If we're not being strict, log the Failure + if not strict: + msg = "Failure received in Subscription" +\ + ".{} for Subscription to:\n{}, sid: {}: {}".format( + action, + self.service.base_url + + self.service.event_subscription_url, + self.sid, + str(failure)) + log.exception(msg) + # If we're not being strict upon a renewal + # (e.g. an autorenewal) call the optional + # self.auto_renew_fail method, if it has been set + if action == 'renew': + if self.auto_renew_fail: + if hasattr(self.auto_renew_fail, '__call__'): + # pylint: disable=not-callable + self.auto_renew_fail(failure) + + # Decrement the counter of pending calls to Subscription.subscribe + # if completed action was subscribe + if action == 'subscribe': + self.subscriptions_map.finished_subscribing() + + # Remove the previous deferred from the queue + self._queue.pop(0) + + # And call the next deferred in the queue + callnext() + + # If a Failure occurred and we're in strict mode, reraise it + if failure and strict: + failure.trap() + + # Create a deferred + d = defer.Deferred() # pylint: disable=invalid-name + # Set its subscription property to refer to this Subscription + d.subscription = self + # Set the deferred to execute method, when the + # deferred is called + d.addCallback(execute, method, *args, **kwargs) + # Add handle_outcome as both a callback and errback + d.addBoth(handle_outcome) + # Add the deferred to the queue + self._queue.append(d) + # If this is the only deferred in the queue, + # call it + if len(self._queue) == 1: + callnext() + # Return the deferred + return d + + +class SubscriptionsMapTwisted(SubscriptionsMap): + """Maintains a mapping of sids to `soco.events_twisted.Subscription` + instances. Registers each subscription to be unsubscribed at exit. + + Inherits from `soco.events_base.SubscriptionsMap`. + """ + def __init__(self): + super(SubscriptionsMapTwisted, self).__init__() + # A counter of calls to Subscription.subscribe + # that have started but not completed. This is + # to prevent the event listener from being stopped prematurely + self._pending = 0 + + def register(self, subscription): + """Register a subscription by updating local mapping of sid to + subscription and registering it to be unsubscribed at exit. + + Args: + subscription(`soco.events_twisted.Subscription`): the subscription + to be registered. + + """ + + # Add the subscription to the local dict of subscriptions so it + # can be looked up by sid + self.subscriptions[subscription.sid] = subscription + # Register subscription to be unsubscribed at exit if still alive + # pylint: disable=no-member + reactor.addSystemEventTrigger('before', 'shutdown', + subscription.unsubscribe) + + def subscribing(self): + """Called when the `Subscription.subscribe` method + commences execution. + """ + # Increment the counter + self._pending += 1 + + def finished_subscribing(self): + """Called when the `Subscription.subscribe` method + completes execution. + """ + # Decrement the counter + self._pending -= 1 + + @property + def count(self): + """ + `int`: The number of active or pending subscriptions. + """ + return len(self.subscriptions) + self._pending + + +subscriptions_map = SubscriptionsMapTwisted() # pylint: disable=C0103 +event_listener = EventListener() # pylint: disable=C0103 diff --git a/sonos/soco/ms_data_structures.py b/sonos/soco/ms_data_structures.py index a4d53e2c1..28a70ae00 100644 --- a/sonos/soco/ms_data_structures.py +++ b/sonos/soco/ms_data_structures.py @@ -128,7 +128,7 @@ class variable by that name (where 'id' has been renamed to content[key] = int(value) if key in ['can_play', 'can_skip', 'can_add_to_favorites', 'can_enumerate']: - content[key] = True if value == 'true' else False + content[key] = (value == 'true') # Rename a single item content['item_id'] = content.pop('id') # And get the extended id diff --git a/sonos/soco/music_library.py b/sonos/soco/music_library.py index e505521ff..d0caec044 100644 --- a/sonos/soco/music_library.py +++ b/sonos/soco/music_library.py @@ -82,7 +82,7 @@ def _update_album_art_to_full_uri(self, item): item.album_art_uri) def get_artists(self, *args, **kwargs): - """Convenience method for `get_music_library_information` + """Convenience method for `get_music_library_formation` with ``search_type='artists'``. For details of other arguments, see `that method <#soco.music_library.MusicLibrary.get_music_library_information>`_. diff --git a/sonos/soco/music_services/accounts.py b/sonos/soco/music_services/accounts.py index be6072ea3..ba27b9591 100644 --- a/sonos/soco/music_services/accounts.py +++ b/sonos/soco/music_services/accounts.py @@ -132,7 +132,7 @@ def get_accounts(cls, soco=None): result = {} for xml_account in xml_accounts: serial_number = xml_account.get('SerialNum') - is_deleted = True if xml_account.get('Deleted') == '1' else False + is_deleted = (xml_account.get('Deleted') == '1') # cls._all_accounts is a weakvaluedict keyed by serial number. # We use it as a database to store details of the accounts we # know about. We need to update it with info obtained from the diff --git a/sonos/soco/music_services/data_structures.py b/sonos/soco/music_services/data_structures.py index 122859abc..ace1a0150 100644 --- a/sonos/soco/music_services/data_structures.py +++ b/sonos/soco/music_services/data_structures.py @@ -175,7 +175,7 @@ def bool_str(string): """Returns a boolean from a string imput of 'true' or 'false'""" if string not in BOOL_STRS: raise ValueError('Invalid boolean string: "{}"'.format(string)) - return True if string == 'true' else False + return string == 'true' # Music Service item base classes diff --git a/sonos/soco/services.py b/sonos/soco/services.py index dec543091..90b2575aa 100644 --- a/sonos/soco/services.py +++ b/sonos/soco/services.py @@ -43,7 +43,8 @@ import requests from .cache import Cache -from .events import Subscription +from . import events +from . import config from .exceptions import ( SoCoUPnPException, UnknownSoCoException ) @@ -66,6 +67,9 @@ # logging.basicConfig() # log.setLevel(logging.INFO) +if config.EVENTS_MODULE is None: + config.EVENTS_MODULE = events + class Action(namedtuple('ActionBase', 'name, in_args, out_args')): """A UPnP Action and its arguments.""" @@ -494,11 +498,7 @@ def send_command(self, action, args=None, cache=None, cache_timeout=None, # Internal server error. UPnP requires this to be returned if the # device does not like the action for some reason. The returned # content will be a SOAP Fault. Parse it and raise an error. - try: - self.handle_upnp_error(response.text) - except Exception as exc: - log.exception(str(exc)) - raise + self.handle_upnp_error(response.text) else: # Something else has gone wrong. Probably a network error. Let # Requests handle it @@ -559,13 +559,14 @@ def handle_upnp_error(self, xml_error): error_description=description, error_xml=xml_error ) - else: - # Unknown error, so just return the entire response - log.error("Unknown error received from %s", self.soco.ip_address) - raise UnknownSoCoException(xml_error) + + # Unknown error, so just return the entire response + log.error("Unknown error received from %s", self.soco.ip_address) + raise UnknownSoCoException(xml_error) def subscribe( - self, requested_timeout=None, auto_renew=False, event_queue=None): + self, requested_timeout=None, auto_renew=False, event_queue=None, + strict=True): """Subscribe to the service's events. Args: @@ -577,22 +578,28 @@ def subscribe( auto_renew (bool): If auto_renew is `True`, the subscription will automatically be renewed just before it expires, if possible. Default is `False`. - event_queue (:class:`~queue.Queue`): a thread-safe queue object on which received events will be put. If not specified, a (:class:`~queue.Queue`) will be created and used. + strict (bool, optional): If True and an Exception occurs during + execution, the Exception will be raised or, if False, the + Exception will be logged and the Subscription instance will be + returned. Default `True`. Returns: - `Subscription`: an insance of `Subscription`, representing - the new subscription. + `Subscription`: an instance of :class:`~soco.events.Subscription`, + representing the new subscription. If config.EVENTS_MODULE has + been set to refer to :py:mod:`events_twisted`, a deferred will + be returned with the Subscription as its result and + deferred.subscription will be set to refer to the Subscription. To unsubscribe, call the `unsubscribe` method on the returned object. """ - subscription = Subscription( + subscription = config.EVENTS_MODULE.Subscription( self, event_queue) - subscription.subscribe( - requested_timeout=requested_timeout, auto_renew=auto_renew) - return subscription + return subscription.subscribe( + requested_timeout=requested_timeout, auto_renew=auto_renew, + strict=strict) def _update_cache_on_event(self, event): """Update the cache when an event is received. @@ -610,7 +617,6 @@ def _update_cache_on_event(self, event): without appropriate locks. Treat all parameters passed to this method as read only. """ - pass @property def actions(self): diff --git a/sonos/tts.py b/sonos/tts.py index 7328d6f3d..f4e946628 100644 --- a/sonos/tts.py +++ b/sonos/tts.py @@ -52,9 +52,13 @@ def _get_token_key(self): return self.token_key response = requests.get("https://translate.google.com/") - line = response.text.split('\n')[-1] - tkk_expr = re.search(".*?(TKK=.*?;)W.*?", line).group(1) + tkk_expr = re.search("(tkk:.*?),", response.text) + if not tkk_expr: + raise ValueError( + "Unable to find token seed! Did https://translate.google.com change?" + ) + tkk_expr = tkk_expr.group(1) try: # Grab the token directly if already generated by function call result = re.search("\d{6}\.[0-9]+", tkk_expr).group(0) @@ -82,7 +86,6 @@ def _work_token(self, a, seed): a = a + d & 4294967295 if seed[i] == "+" else a ^ d return a - class gTTS: """ gTTS (Google Text to Speech): an interface to Google's Text to Speech API """ From 1463fde59e76add3e7ffc7d8d3d88ae1980c8598 Mon Sep 17 00:00:00 2001 From: ivande Date: Thu, 18 Jul 2019 15:29:41 +0200 Subject: [PATCH 164/200] added webinterface --- .gitignore | 1 + snap7_logo/README.md | 97 ++++ snap7_logo/__init__.py | 575 ++++++++++++++++++++ snap7_logo/plugin.yaml | 25 + snap7_logo/requirements.txt | 1 + snap7_logo/webif/static/img/lamp_green.png | Bin 0 -> 3757 bytes snap7_logo/webif/static/img/lamp_red.png | Bin 0 -> 3740 bytes snap7_logo/webif/static/img/plugin_logo.png | Bin 0 -> 73694 bytes snap7_logo/webif/templates/index.html | 129 +++++ 9 files changed, 828 insertions(+) create mode 100644 snap7_logo/README.md create mode 100644 snap7_logo/__init__.py create mode 100644 snap7_logo/plugin.yaml create mode 100644 snap7_logo/requirements.txt create mode 100644 snap7_logo/webif/static/img/lamp_green.png create mode 100644 snap7_logo/webif/static/img/lamp_red.png create mode 100644 snap7_logo/webif/static/img/plugin_logo.png create mode 100644 snap7_logo/webif/templates/index.html diff --git a/.gitignore b/.gitignore index 5116ee714..4787c4243 100644 --- a/.gitignore +++ b/.gitignore @@ -29,3 +29,4 @@ Thumbs.db # Pycharm settings /.idea +/.vs diff --git a/snap7_logo/README.md b/snap7_logo/README.md new file mode 100644 index 000000000..41831c47d --- /dev/null +++ b/snap7_logo/README.md @@ -0,0 +1,97 @@ +# snap7logo + +## Requirements +Siemens LOGO PLC + +Library ``snap7`` and ``python-snap7`` need to be installed prior to usage of the plugin. +https://python-snap7.readthedocs.io/en/latest/installation.html + +## Supported Hardware + +Siemens LOGO version 0BA7 +Siemens LOGO version 0BA8 + +## Configuration + +### plugin.yaml + +Sample configuration file for two instances of the logo plugin. + +```yaml +logo1: + class_name: snap7logo + class_path: plugins.snap7logo + host: 10.10.10.99 + instance: logo1 + # port: 102 + # io_wait: 5 + # version: 0BA8 +logo2: + class_name: snap7logo + class_path: plugins.snap7logo + host: 10.10.10.100 + version: 0BA8 + instance: logo2 + # port: 102 + # io_wait: 5 +``` + +This plugin needs an host attribute and you could specify a port attribute + +* 'instance' = give the instance a name (e.g.'logo1') for multiinstance + +* 'io_wait' = timeperiod between two read requests. Default 5 seconds. + +* 'version' = Siemens Hardware Version. Default 0BA7 + +### items.yaml + +#### logo_read@logo1 +Input, Output, Mark to read from Siemens Logo +@logo1 instancename + +#### logo_write@logo1 +Input, Output, Mark to write to Siemens Logo +@logo1 instancename + +* 'I' Input bit to read I1, I2 I3,.. (max I24) +* 'Q' Output bit to read/write Q1, Q2, Q3,.. (0BA7 max Q16; OBA8 max Q20) +* 'M' Mark bit to read/write M1, M2 M3,.. (0BA7 max M27; OBA8 max M64) +* 'AI' Analog Input(word) to read AI1, AI2, AI3,.. (max AI8) +* 'AQ' Analog Output(word) to read/write AQ1, AQ2,.. (0BA7 max AQ2; OBA8 max AQ8) +* 'AM' Analog Mark(word) to read/write AM1, AM2, AM3,.. (0BA7 max AM16; OBA8 max AM64) +* 'NI' Network Input bit to read NI1, NI2,.. (OBA8 max NI64) +* 'NAI' Network Analog Input (word) to read NAI1, NAI2,.. (OBA8 max NAI32) +* 'NQ' Network Output bit to read NQ1, NQ2,.. (OBA8 max NQ64) +* 'NAQ' Network Analog Output (word) to read NAQ1, NAQ2,.. (OBA8 max NAQ16) +* 'VM' VM-Byte to read/write VM0, VM1, VM3,.. VM850 +* 'VMx.x' VM-Bit to read/write VM0.0, VM0.7, VM3.4,.. VM850.7 +* 'VMW' VM-Word to read/write VMW0, VM2, VMW4,.. VM849 + +```yaml +myroom: + + status_I1: + typ: bool + #logo_read@logo1: "I1 ## read the Input I1 from Logo-Instance 'logo1'" + logo_read@logo2: "I1 ## read the Input I1 from Logo-Instance 'logo2'" + + lightM1: + typ: bool + knx_dpt: 1 + knx_listen: 1/1/3 + knx_init: 1/1/3 + logo_write@logo1: "M4 ## write the Mark M4 to Logo-Instance 'logo1'" + + temp_measure: + typ: num + eval: value/10 + visu: 'yes' + sqlite: 'yes' + logo_read@logo1: "AI1 ## read the Analog Input AI1 from Logo-Instance 'logo1'" + + temp_set: + typ: num + visu: 'yes' + logo_write@logo1: "VMW4 ## write the VM-Word VM4 to Logo-Instance 'logo1'" +``` diff --git a/snap7_logo/__init__.py b/snap7_logo/__init__.py new file mode 100644 index 000000000..46f1c2774 --- /dev/null +++ b/snap7_logo/__init__.py @@ -0,0 +1,575 @@ +#!/usr/bin/env python3 +# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab +######################################################################### +# Copyright 2013 KNX-User-Forum e.V. http://knx-user-forum.de/ +######################################################################### +# This file is part of SmartHomeNG. https://github.com/smarthomeNG// +# +# SmartHomeNG is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# SmartHomeNG is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with SmartHomeNG. If not, see . +######################################################################### + +import ctypes +import os +import string +import time +import logging +import threading +from lib.model.smartplugin import * +from lib.module import Modules +from lib.logic import Logics +from lib.item import Items +import snap7 + +class snap7logo(SmartPlugin): + + ALLOW_MULTIINSTANCE = True + PLUGIN_VERSION = "1.5.2" + def __init__(self, smarthome, host, tsap_server=0x0200, tsap_client=0x0100, version='0BA7', cycle=5 ): + self.logger = logging.getLogger(__name__) + self.host = host + self.tsap_server = int(tsap_server) + self.tsap_client = int(tsap_client) + self._version = version + self._cycle = int(cycle) + self._lock = threading.Lock() + self._rw_lock = threading.Lock() + self.connected = False + self._sh = smarthome + self._connection_attempts = 0 + self._connection_errorlog = 2 + + self._vmIO = 923 # lesen der I Q M AI AQ AM ab VM-Adresse VM923 + self._vmIO_len = 60 # Anzahl der zu lesenden Bytes 60 + self._vm = 0 # lesen der VM ab VM-Adresse VM0 + self._vm_len = 850 # Anzahl der zu lesenden Bytes VM0-850 + self.tableVM_IO = { # Address-Tab der I,Q,M,AI,AQ,AM im PLC-VM-Buffer + 'I': {'VMaddr': 923, 'bytes': 3, 'bits': 24}, + 'Q': {'VMaddr': 942, 'bytes': 2, 'bits': 16}, + 'M': {'VMaddr': 948, 'bytes': 3, 'bits': 27}, + 'AI': {'VMaddr': 926, 'words': 8}, + 'AQ': {'VMaddr': 944, 'words': 2}, + 'AM': {'VMaddr': 952, 'words': 16}, + 'VM': {'VMaddr': 0, 'bytes': 850}} + self.logger.info('LOGO: init {0}:{1} '.format(self.get_instance_name(), self.host)) + + # Hardware Version 0BA8 + self._vmIO_0BA8 = 1024 # lesen der I Q M AI AQ AM ab VM-Adresse VM1024 + self._vmIO_len_0BA8 = 445 # Anzahl der zu lesenden Bytes 445 + self.table_VM_IO_0BA8 = { # Address-Tab der I,Q,M,AI,AQ,AM im PLC-VM-Buffer + 'I': {'VMaddr': 1024, 'bytes': 8, 'bits': 64}, + 'Q': {'VMaddr': 1064, 'bytes': 8, 'bits': 64}, + 'M': {'VMaddr': 1104, 'bytes': 14, 'bits': 112}, + 'AI': {'VMaddr': 1032, 'words': 16}, + 'AQ': {'VMaddr': 1072, 'words': 16}, + 'AM': {'VMaddr': 1118, 'words': 64}, + 'NI': {'VMaddr': 1256, 'bytes': 16, 'bits':128}, + 'NAI': {'VMaddr': 1262, 'words': 64}, + 'NQ': {'VMaddr': 1390, 'bytes': 16, 'bits': 128}, + 'NAQ': {'VMaddr': 1406, 'words': 32}, + 'VM': {'VMaddr': 0, 'bytes': 850}} + + if self._version == '0BA8': + self.logger.info('{0}: LOGO-Version {1}'.format(self.get_instance_name(), self._version)) + self.tableVM_IO = self.table_VM_IO_0BA8 + self._vmIO = self._vmIO_0BA8 + self._vmIO_len = self._vmIO_len_0BA8 + # End Hardware Version 0BA8 + + self.reads = {} + self.writes = {} + self.stat_writes = {} + + #self.Dateipfad = '/lib' # Dateipfad zur Bibliothek + self.threadLastRead = 0 # verstrichene Zeit zwischen zwei LeseBefehlen + + smarthome.connections.monitor(self) # damit connect ausgeführt wird + + self.init_webinterface() + + # Öffnen der Verbindung zur LOGO + def connect(self): + self._lock.acquire() + try: + self.logger.debug('{0}: try to connected to {1}'.format(self.get_instance_name(), self.host)) + self.plc = snap7.logo.Logo() + self.plc.connect(self.host, self.tsap_client, self.tsap_server) + #if not self.plc.get_connected(): + #raise LOGO('{0}:connection error'.format(self.get_instance_name())) + + except Exception as e: + self._connection_attempts -= 1 + if self._connection_attempts <= 0: + self.logger.error('{0}: could not connect to {1}: {2}'.format(self.get_instance_name(), self.host, e)) + self._connection_attempts = self._connection_errorlog + self._lock.release() + return + else: + if self.plc.get_connected(): + self.connected = True + self.logger.info('{0}: connected to {1}'.format(self.get_instance_name(), self.host)) + self._connection_attempts = 0 + self._lock.release() + else: + self.logger.error('{0}: could not connect to {1}: {2}'.format(self.get_instance_name(), self.host, e)) + + # called once at startup after all items are loaded + def run(self): + self.scheduler_add('update', self._update_loop, prio=5, cycle=self._cycle, offset=2) + self.alive = True + + + # close files and data connections + def stop(self): + self.alive = False + self.close() + + def _update_loop(self): + if self._rw_lock.locked(): + self.logger.warning('_update_loop locked!!') + return + + #self.logger.debug('_update_loop acquire') + self._rw_lock.acquire(timeout=60) + try: + + if len(self.writes) > 0: # beim Schreiben sofort schreiben + self._write_cycle() + + self._read_cycle() + + + finally: + self._rw_lock.release() + + #self.logger.debug('_update_loop release') + + + def _write_cycle(self): + + if not self.connected: + return + #self.logger.debug("{0}: _write_cycle() connected:{1}".format(self.get_instance_name(), self.connected)) + try: + remove = [] # Liste der bereits geschriebenen Items + for k, v in self.writes.items(): # zu schreibend Items I1,Q1,M1, AI1, AQ1, AM1, VM850, VM850.2, VMW0 + #self.logger.debug('{0}: write_cycle() {1} : {2} '.format(self.get_instance_name(), k, v)) + addr = k + typ = v['typ'] # z.B. I Q M AI AQ AM VM VMW + value = v['value'] + write_res = -1 + if typ in ['I', 'Q', 'M', 'NI', 'NQ']: # I1 Q1 M1 + if value is True: + #self.logger.debug("{0}: set {1} : {2} : {3} ".format(self.get_instance_name(), k, v, value)) + write_res = self.set_vm_bit(v['VMaddr'], v['VMbit']) # Setzen + else: + #self.logger.debug("{0}: clear {1} : {2} : {3} ".format(self.get_instance_name(), k, v, value)) + write_res = self.clear_vm_bit(v['VMaddr'], v['VMbit']) # Löschen + + elif typ in ['AI', 'AQ', 'AM', 'NAI', 'NAQ', 'VMW']: # AI1 AQ1 AM1 VMW + write_res = self.write_vm_word(v['VMaddr'], value) + + elif typ == 'VM': # VM0 VM10.6 + if 'VMbit' in v: # VM10.6 + if value is True: + write_res = self.set_vm_bit(v['VMaddr'], v['VMbit']) + else: + write_res = self.clear_vm_bit(v['VMaddr'], v['VMbit']) + else: # VM0 + write_res = self.write_vm_byte(v['VMaddr'], value) + else: + raise LOGO('{0}:invalid typ: {1}'.format(self.get_instance_name(), typ)) + + if write_res is not 0: + raise LOGO('{0}:LOGO: write failed: {1} {2} '.format(self.get_instance_name(), typ, value)) + self.close() + else: + self.logger.debug("{0}: write {1} : {2} : {3} ".format(self.get_instance_name(), k, value, v)) + #if not 'last_write' in self.stat_writes[addr]: + + if 'write_dt' in self.stat_writes[addr]: + self.stat_writes[addr]['last_write_dt'] = self.stat_writes[addr]['write_dt'] + + if 'value' in self.stat_writes[addr]: + self.stat_writes[addr]['last_value'] = self.stat_writes[addr]['value'] + + self.stat_writes[addr]['write_dt'] = self.shtime.now() + self.stat_writes[addr]['value'] = value + + remove.append(k) # nach dem Übertragen aus der Liste write entfernen + + except Exception as e: + self.logger.error('{0}: write_cycle(){1} write error {2} '.format(self.get_instance_name(), k, e)) + + return + + for k in remove: # nach dem Übertragen aus der Liste writes entfernen - damit das Item nur 1x übertragen wird + del self.writes[k] + + def _read_cycle(self): + if not self.connected: + return + + + try: + # lesen der VM + #self.logger.debug("{0}: _read_cycle() try to read addr:{1} len:{2}".format(self.get_instance_name(), self._vm, self._vm_len)) + resVM = self.plc.db_read(1, self._vm, self._vm_len) + if not len(resVM) == self._vm_len: + self.logger.error('{0}: read_cycle() failed ro read VM-Buffer (db_read) len:{1}'.format(self.get_instance_name(), len(resVM))) + self.close() + return + + # lesen der I Q M AI AQ AM + #self.logger.debug("{0}: _read_cycle() try to read addr:{1} len:{2}".format(self.get_instance_name(), self._vmIO, self._vmIO_len)) + resVMIO = self.plc.db_read(1, self._vmIO, self._vmIO_len) + if not len(resVMIO) == self._vmIO_len: + self.logger.error('{0}: read_cycle() failed ro read VM_IO-Buffer (db_read) len:{1}'.format(self.get_instance_name(), len(resVMIO))) + self.close() + return + + # prüfe Buffer auf Änderung + for k, v in self.reads.items(): + #self.logger.debug('{0}: read_cycle() k:{1} v:{2} '.format(self.get_instance_name(), k, v)) + new_value = 0 + item = v['item'] + + if v['DataType'] == 'byte': + new_value = resVM[v['VMaddr'] - self._vm] # VM byte z.B. VM0 + elif v['DataType'] == 'word': + #self.logger.debug('{0}: read_cycle() h{1} : l{2} '.format(self.get_instance_name(), resVM[v['VMaddr']-self._vm], resVM[v['VMaddr']+1-self._vm])) + if v['typ'] == 'VMW': # VMW word z.B. VMW0 + h = resVM[v['VMaddr'] - self._vm] + l = resVM[v['VMaddr'] + 1 - self._vm] + else: # AI AQ AM word z.B, AM1 + h = resVMIO[v['VMaddr'] - self._vmIO] + l = resVMIO[v['VMaddr'] + 1 - self._vmIO] + new_value = l + (h << 8) + elif v['DataType'] == 'bit': + if v['typ'] == 'VM': # VM bit z.B.VM10.6 + new_byte = resVM[v['VMaddr'] - self._vm] + else: # I Q M bit z.B. M1 + new_byte = resVMIO[v['VMaddr'] - self._vmIO] + new_value = self.get_bit(new_byte, v['VMbit']) + else: + raise LOGO('{0}:{1} invalid DataType in reads: {2}'.format(self.get_instance_name(), k, v['DataType'])) + + if 'old' in v: # Variable wurde schon einmal gelesen + if v['old'] != new_value: # Variable hat sich geändert + self.logger.debug("{0}: read_cycle():{1} newV:{2} oldV:{3} item:{4} ".format(self.get_instance_name(), k, new_value, v['old'], v['item'])) + item(new_value) # aktualisiere das Item + v.update({'old': new_value}) # speichere den aktuellen Zustand + if 'read_dt' in v: + v['last_read_dt'] = v['read_dt'] + + if 'value' in v: + v['last_value'] = v['value'] + + v['read_dt'] = self.shtime.now() + v['value'] = new_value + + #else: # Variable hat sich nicht geändert + #self.logger.debug("{0}: read:{1} newV:{2} = oldV:{3} item:{4} ".format(self.get_instance_name(), k, new_value, v['old'], v['item'])) + else: # Variable wurde noch nie gelesen + self.logger.debug('{0}: read_cycle() first read:{1} value:{2} item:{3}'.format(self.get_instance_name(), k, new_value, v['item'])) + item(new_value) # aktualisiere das Item zum ersten mal + v.update({'old': new_value}) # speichere den aktuellen Zustand + v['read_dt'] = self.shtime.now() + v['value'] = new_value + + except Exception as e: + self.logger.error('{0}: read_cycle(){1} read error {2} '.format(self.get_instance_name(), k, e)) + return + + return + + def close(self): + self.connected = False + try: + self.disconnect() + self.logger.info('{0}: disconnected {1}'.format(self.get_instance_name(), self.host)) + except: + pass + + def disconnect(self): + self.plc.disconnect() + self.plc.destroy() + + # called for each item during startup, items.yaml contains the "attibute: value" entries + def parse_item(self, item): + + if self.has_iattr(item.conf, 'logo_read'): # if 'logo_read' in item.conf: + addr = self.get_iattr_value(item.conf, 'logo_read') #for addr in logo_read: + self.logger.debug('{0}: parse_item {1} {2}'.format(self.get_instance_name(), item, addr)) + addressInfo = self.getAddressInfo(addr) + if addressInfo is not False: + addressInfo.update({'value': item()}) # Wert des Items hinzufügen + addressInfo.update({'item': item}) # Item hinzufügen + self.reads.update({addr: addressInfo}) # zu lesende Items + + #logo_read = item.conf['logo_read'] + #if isinstance(logo_read, str): + # logo_read = [logo_read, ] + #for addr in self.get_iattr_value(item.conf, 'logo_read') #for addr in logo_read: + # self.logger.debug('{0}: parse_item {1} {2}'.format(self.get_instance_name(), item, addr)) + # addressInfo = self.getAddressInfo(addr) + # if addressInfo is not False: + # addressInfo.update({'value': item()}) # Wert des Items hinzufügen + # addressInfo.update({'item': item}) # Item hinzufügen + # self.reads.update({addr: addressInfo}) # zu lesende Items + + + if self.has_iattr(item.conf, 'logo_write'): # if 'logo_write' in item.conf: + addr = self.get_iattr_value(item.conf, 'logo_write') #for addr in logo_read: + self.logger.debug('{0}: parse_item {1} {2}'.format(self.get_instance_name(), item, addr)) + addressInfo = self.getAddressInfo(addr) + if addressInfo is not False: + addressInfo.update({'value': item()}) # Wert des Items hinzufügen + addressInfo.update({'item': item}) # Item hinzufügen + self.stat_writes.update({addr: addressInfo}) # zu schreibende Items - Statistik + return self.update_item + # if isinstance(item.conf['logo_write'], str): + # item.conf['logo_write'] = [item.conf['logo_write'], ] + + + def parse_logic(self, logic): + pass + #if 'xxx' in logic.conf: + # self.function(logic['name']) + + # called each time an item changes. + def update_item(self, item, caller=None, source=None, dest=None): + if self.has_iattr(item.conf, 'logo_write'): # if 'logo_write' in item.conf: + if caller != 'snap7logo': + addr = self.get_iattr_value(item.conf, 'logo_write') # for addr in item.conf['logo_write']: + self.logger.debug('{0}: update_item() item:{1} addr:{2}'.format(self.get_instance_name(), item, addr)) + addressInfo = self.getAddressInfo(addr) + if addressInfo is not False: + + + + addressInfo.update({'value': item()}) # Wert des Items hinzufügen + addressInfo.update({'item': item}) + self.writes.update({addr: addressInfo}) # zu schreibende Items + if self._rw_lock.locked(): + self.logger.warning('update_item locked!!') + return + + #self.logger.debug('update_item acquire') + self._rw_lock.acquire(timeout=60) + + #self.logger.debug('update_item _write_cycle()') + self._write_cycle() + self._read_cycle() + + #self.logger.debug('update_item release') + self._rw_lock.release() + + + + def getAddressInfo(self, value): # I1,Q1,M1, AI1, AQ1, AM1, VM850, VM850.2, VMW0 + try: + indexDigit = 0 + for c in value: # indexDigit: ermittle Index der ersten Zahl + if c.isdigit(): + break + else: + indexDigit += 1 + indexComma = value.find('.') # ermittle ob ein Komma vorhanden ist (z.B. VM10.6) + #self.logger.debug('{0}: getAddressInfo() value:{1} iC:{2} iD:{3}'.format(self.get_instance_name(), value, indexComma, indexDigit)) + if (len(value) < 2): + raise LOGO('{0}:invalid address {1} indexDigit < 1'.format(self.get_instance_name(), value)) + if indexDigit < 1: + raise LOGO('{0}:invalid address {1} indexDigit < 1'.format(self.get_instance_name(), value)) + typ = value[0:indexDigit] # I Q M AI AQ AM VM VMW + if indexComma == -1: # kein Komma (z.B. M1) + address = int(value[indexDigit:len(value)]) + else: # Komma vorhanden (z.B. VM10.6) + address = int(value[indexDigit:indexComma]) + bitNr = int(value[indexComma + 1:len(value)]) + if (bitNr < 0) or (bitNr > 8): + raise LOGO('{0}:invalid address {1} bitNr invalid'.format(self.get_instance_name(), value)) + + #self.logger.debug('{0}: getAddressInfo() typ:{1} address:{2}'.format(self.get_instance_name(), typ, address)) + + if typ == 'VMW': + VMaddr = int(self.tableVM_IO['VM']['VMaddr']) # Startaddresse + else: + VMaddr = int(self.tableVM_IO[typ]['VMaddr']) # Startaddresse + + if typ in ['I', 'Q', 'M', 'NI', 'NQ']: # I1 Q1 M1 + MaxBits = int(self.tableVM_IO[typ]['bits']) # Anzahl bits + if address > MaxBits: + raise LOGO('{0}:Address out of range. {1}1-{1}{2}'.format(self.get_instance_name(), typ, MaxBits)) + q, r = divmod(address - 1, 8) + VMaddr = VMaddr + q + bitNr = r + return {'VMaddr': VMaddr, 'VMbit': bitNr, 'typ': typ, 'DataType': 'bit'} + + elif typ in ['AI', 'AQ', 'AM', 'NAI', 'NAQ']: # AI1 AQ1 AM1 + MaxWords = int(self.tableVM_IO[typ]['words']) # Anzahl words + if address > MaxWords: + raise LOGO('{0}:Address out of range. {1}1-{1}{2}'.format(self.get_instance_name(), typ, MaxWords)) + VMaddr = VMaddr + ((address - 1) * 2) + return {'VMaddr': VMaddr, 'typ': typ, 'DataType': 'word'} + + elif typ == 'VMW': # VMW0 + #typ = 'VM' + MaxBytes = int(self.tableVM_IO['VM']['bytes']) # Anzahl words + if address > MaxBytes: + raise LOGO('{0}:Address out of range. {0}0-{1}{2}'.format(self.get_instance_name(), typ, MaxBytes)) + VMaddr = VMaddr + address + return {'VMaddr': VMaddr, 'typ': typ, 'DataType': 'word'} + + elif (typ == 'VM') and (indexComma == -1): # VM0 + MaxBytes = int(self.tableVM_IO[typ]['bytes']) # Anzahl bytes + if address > MaxBytes: + raise LOGO('{0}:Address out of range. {0}0-{1}{2}'.format(self.get_instance_name(), typ, MaxBytes)) + VMaddr = VMaddr + address + return {'VMaddr': VMaddr, 'typ': typ, 'DataType': 'byte'} + + elif (typ == 'VM') and (indexComma > 2): # VM10.6 + MaxBytes = int(self.tableVM_IO[typ]['bytes']) # Anzahl bytes + if address > MaxBytes: + raise LOGO('{0}:Address out of range. {0}0-{1}{2}'.format(self.get_instance_name(), typ, MaxBytes)) + VMaddr = VMaddr + address + return {'VMaddr': VMaddr, 'VMbit': bitNr, 'typ': typ, 'DataType': 'bit'} + else: + raise LOGO('{0}:invalid typ: {1}'.format(self.get_instance_name(), typ)) + + except Exception as e: + self.logger.error('{0}: getAddressInfo() {1} : {2} '.format(self.get_instance_name(), value, e)) + return False + + def get_bit(self, byteval, idx): + return ((byteval & (1 << idx)) != 0) + + #******************************** WRITE IN BYTE FORMAT **************************************** + #VM + def write_vm_byte(self, vm, value): + writeBuffer = bytearray(struct.pack(">h", value)) + #self.logger.debug('write_vm_byte() vm:{0} value:{1} buffer:{2}'.format(vm, value, writeBuffer)) + return self.plc.db_write(1, vm, writeBuffer) + #******************************** WRITE IN WORD FORMAT ******************************* + #VM WORD + def write_vm_word(self, vm, value): + writeBuffer = bytearray(value.to_bytes(2,byteorder='big')) + #self.logger.debug('write_vm_word() vm:{0} value:{1} buffer:{2}'.format(vm, value, writeBuffer)) + return self.plc.db_write(1, vm, writeBuffer) + + #******************************** WRITE IN BIT FORMAT ***************************************** + #VM + def set_vm_bit(self, vm, position): + vm_address = 'V' + str(vm) + '.' + str(position) + self.logger.debug('set_vm_bit() vm:{0} position:{1} vm_address:{2}'.format(vm, position, vm_address)) + return self.plc.write(vm_address, 1) + + def clear_vm_bit(self, vm, position): + vm_address = 'V' + str(vm) + '.' + str(position) + self.logger.debug('set_vm_bit() vm:{0} position:{1} vm_address:{2}'.format(vm, position, vm_address)) + return self.plc.write(vm_address, 0) + + def init_webinterface(self): + """ + Initialize the web interface for this plugin + + This method is only needed if the plugin is implementing a web interface + """ + try: + self.mod_http = Modules.get_instance().get_module('http') # try/except to handle running in a core version that does not support modules + except: + self.mod_http = None + if self.mod_http == None: + self.logger.error("Plugin '{}': Not initializing the web interface".format(self.get_shortname())) + return False + + import sys + if not "SmartPluginWebIf" in list(sys.modules['lib.model.smartplugin'].__dict__): + self.logger.warning("Plugin '{}': Web interface needs SmartHomeNG v1.5 and up. Not initializing the web interface".format(self.get_shortname())) + return False + + # set application configuration for cherrypy + webif_dir = self.path_join(self.get_plugin_dir(), 'webif') + config = { + '/': { + 'tools.staticdir.root': webif_dir, + }, + '/static': { + 'tools.staticdir.on': True, + 'tools.staticdir.dir': 'static' + } + } + + # Register the web interface as a cherrypy app + self.mod_http.register_webif(WebInterface(webif_dir, self), + self.get_shortname(), + config, + self.get_classname(), self.get_instance_name(), + description='') + + return True + +# ------------------------------------------ +# Webinterface of the plugin +# ------------------------------------------ +import cherrypy +from jinja2 import Environment, FileSystemLoader + +class WebInterface(SmartPluginWebIf): + + def __init__(self, webif_dir, plugin): + """ + Initialization of instance of class WebInterface + + :param webif_dir: directory where the webinterface of the plugin resides + :param plugin: instance of the plugin + :type webif_dir: str + :type plugin: object + """ + self.logger = logging.getLogger(__name__) + self.webif_dir = webif_dir + self.plugin = plugin + self.tplenv = self.init_template_environment() + + self.items = Items.get_instance() + + @cherrypy.expose + def index(self, reload=None): + """ + Build index.html for cherrypy + + Render the template and return the html file to be delivered to the browser + + :return: contents of the template after beeing rendered + """ + tmpl = self.tplenv.get_template('index.html') + return tmpl.render(plugin_shortname=self.plugin.get_shortname(), plugin_version=self.plugin.get_version(), plugin_info=self.plugin.get_info(), + interface=None, + p=self.plugin, + reads=sorted(self.plugin.reads, key=lambda k: str.lower(k)), + writes=sorted(self.plugin.stat_writes, key=lambda k: str.lower(k)), + ) + + @cherrypy.expose + def triggerAction(self, path, value): + if path is None: + self.plugin.logger.error( + "Plugin '{}': Path parameter is missing when setting action item value!".format(self.get_shortname())) + return + if value is None: + self.plugin.logger.error( + "Plugin '{}': Value parameter is missing when setting action item value!".format(self.get_shortname())) + return + item = self.plugin.items.return_item(path) + item(int(value), caller=self.plugin.get_shortname(), source='triggerAction()') + return diff --git a/snap7_logo/plugin.yaml b/snap7_logo/plugin.yaml new file mode 100644 index 000000000..07c314cee --- /dev/null +++ b/snap7_logo/plugin.yaml @@ -0,0 +1,25 @@ +# Metadata for the Smart-Plugin +plugin: + # Global plugin attributes + type: interface # plugin type (gateway, interface, protocol, system, web) + description: + de: 'Ansteuerung einer Siemens LOGO PLC' + en: '' + maintainer: 'ivande' +# tester: # Who tests this plugin? +# keywords: iot xyz +# documentation: https://github.com/smarthomeNG/smarthome/wiki/CLI-Plugin # url of documentation (wiki) page +# support: https://knx-user-forum.de/forum/supportforen/smarthome-py + + version: 1.5.2 # Plugin version + sh_minversion: 1.5 # minimum shNG version to use this plugin +# sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) + multi_instance: True # plugin supports multi instance + classname: snap7_logo # class containing the plugin + +parameters: + # Definition of parameters to be configured in etc/plugin.yaml + +item_attributes: + # Definition of item attributes defined by this plugin + diff --git a/snap7_logo/requirements.txt b/snap7_logo/requirements.txt new file mode 100644 index 000000000..e28eaf147 --- /dev/null +++ b/snap7_logo/requirements.txt @@ -0,0 +1 @@ +python-snap7>=0.10 \ No newline at end of file diff --git a/snap7_logo/webif/static/img/lamp_green.png b/snap7_logo/webif/static/img/lamp_green.png new file mode 100644 index 0000000000000000000000000000000000000000..fb130568b7d788da9a89b16c97f60d30798bf0ad GIT binary patch literal 3757 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
R{%{9rqkUD4trSXje#Fdm*WO@m@$<<~e$ux0 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 BR8s%| literal 0 HcmV?d00001 diff --git a/snap7_logo/webif/templates/index.html b/snap7_logo/webif/templates/index.html new file mode 100644 index 000000000..08adeeaf8 --- /dev/null +++ b/snap7_logo/webif/templates/index.html @@ -0,0 +1,129 @@ +{% extends "base_plugin.html" %} + +{% set logo_frame = false %} +{% set use_bodytabs = false %} +{% set tabcount = 2 %} + +{% block headtable %} + + + + + + + + + + + + + + + + + + + + + + +
+ {% if p.connected %} + {{ _('mit LOGO verbunden') }} + {% else %} + {{ _('mit LOGO nicht verbunden') }} + {% endif %} + {{ _('Verbunden') }} + {{ _('Host') }}{{ p.host }}
{{ _('') }}{{ _('Read - cycleTime') }}{{ p._cycle }}
{{ _('') }}{{ _('tsap_server') }}{{ p.tsap_server }}{{ _('tsap_client') }}{{ p.tsap_client }}
+{% endblock %} + +{% set tab1title = "" ~ p.get_shortname() ~ " reads (" ~ reads|length ~ ")" %} +{% block bodytab1 %} + + + + + + + + + + + + + + + + + {% for item in reads %} + + + + + + + + {% if p.reads[item].read_dt %} + + {% else %} + + {% endif %} + {% if p.reads[item].last_read_dt %} + + {% else %} + + {% endif %} + + + + {% endfor %} + +
{{ _('LOGO') }} {{ _('Value') }} {{ _('Item') }} {{ _('DataType') }}{{ _('VMaddr') }} {{ _('VMbit') }} {{ _('last_read') }} {{ _('prev_read') }} {{ _('prev_value') }}
{{ item }}{{ p.reads[item].old }}{{ p.reads[item].item }}{{ p.reads[item].DataType }}{{ p.reads[item].VMaddr }}{{ p.reads[item].VMbit }}{{ p.reads[item].read_dt.strftime('%d.%m.%Y %H:%M:%S %Z') }}{{ p.reads[item].last_read_dt.strftime('%d.%m.%Y %H:%M:%S %Z') }}{{ p.reads[item].last_value }}
+{% endblock bodytab1 %} + +{% set tab2title = "" ~ p.get_shortname() ~ " writes (" ~ writes|length ~ ")" %} +{% block bodytab2 %} + + + + + + + + + + + + + + + + + {% for item in writes %} + + + + + + + + {% if p.stat_writes[item].write_dt %} + + {% else %} + + {% endif %} + {% if p.stat_writes[item].last_write_dt %} + + {% else %} + + {% endif %} + + + + {% endfor %} + +
{{ _('LOGO') }} {{ _('Value') }} {{ _('Item') }} {{ _('DataType') }}{{ _('VMaddr') }} {{ _('VMbit') }} {{ _('last_write') }} {{ _('prev_write') }} {{ _('prev_value') }}
{{ item }}{{ p.stat_writes[item].value }}{{ p.stat_writes[item].item }}{{ p.stat_writes[item].DataType }}{{ p.stat_writes[item].VMaddr }}{{ p.stat_writes[item].VMbit }}{{ p.stat_writes[item].write_dt.strftime('%d.%m.%Y %H:%M:%S %Z') }}{{ p.stat_writes[item].last_write_dt.strftime('%d.%m.%Y %H:%M:%S %Z') }}{{ p.stat_writes[item].last_value }}
+{% endblock bodytab2 %} + + + From 3b04dbfdb54ca53d07276a83e6dbe798347fc1a3 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Fri, 19 Jul 2019 23:43:10 +0200 Subject: [PATCH 165/200] fix scheduler name for UZSU items with name attribute --- uzsu/__init__.py | 21 ++++++++++++--------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/uzsu/__init__.py b/uzsu/__init__.py index a6c808a42..1b9327191 100755 --- a/uzsu/__init__.py +++ b/uzsu/__init__.py @@ -152,10 +152,10 @@ def stop(self): self.logger.debug("stop method called") for item in self._items: try: - self.scheduler_remove('uzsu_{}'.format(item)) - self.logger.debug('Removing scheduler for item {}'.format(item)) + self.scheduler_remove('uzsu_{}'.format(item.property.path)) + self.logger.debug('Removing scheduler for item {}'.format(item.property.path)) except Exception as err: - self.logger.debug('Scheduler for item {} not removed. Problem: {}'.format(item, err)) + self.logger.debug('Scheduler for item {} not removed. Problem: {}'.format(item.property.path, err)) self.alive = False def _update_all_suns(self, caller=None): @@ -233,9 +233,12 @@ def _add_type(self, item): _uzsuitem = None self.logger.warning("Item to be set by uzsu '{}' does not exist. Error: {}".format(_itemforuzsu, err)) try: - _itemtype = _uzsuitem.type() + _itemtype = _uzsuitem.property.type except Exception as err: - _itemtype = 'foo' if _uzsuitem is not None else None + try: + _itemtype = _uzsuitem.type() + except Exception: + _itemtype = 'foo' if _uzsuitem is not None else None if _itemtype is None: self.logger.warning("Item to be set by uzsu '{}' does not exist. Error: {}".format(_itemforuzsu, err)) else: @@ -447,12 +450,12 @@ def _schedule(self, item, caller=None): """ This function schedules an item: First the item is removed from the scheduler. If the item is active then the list is searched for the nearest next execution time. - No matter it active or not the calculation for the execution time is triggered. + No matter if active or not the calculation for the execution time is triggered. :param item: item to be updated towards the plugin :param caller: if given it represents the callers name """ - self.scheduler_remove('uzsu_{}'.format(item)) + self.scheduler_remove('uzsu_{}'.format(item.property.path)) self.logger.debug('Schedule Item {}, Trigger: {}, Changed by: {}'.format( item, caller, item.changed_by())) _next = None @@ -577,10 +580,10 @@ def _schedule(self, item, caller=None): item(self._items[item], 'UZSU Plugin', 'reset_interpolation') self.logger.debug("will add scheduler named uzsu_{} with datetime {} and tzinfo {}" - " and value {}".format(item, _next, _next.tzinfo, _value)) + " and value {}".format(item.property.path, _next, _next.tzinfo, _value)) self._planned.update({item: {'value': _value, 'next': _next.strftime('%Y-%m-%d %H:%M')}}) self._update_count['done'] = self._update_count.get('done') + 1 - self.scheduler_add('uzsu_{}'.format(item), self._set, value={'item': item, 'value': _value}, next=_next) + self.scheduler_add('uzsu_{}'.format(item.property.path), self._set, value={'item': item, 'value': _value}, next=_next) if self._update_count.get('done') == self._update_count.get('todo'): self.scheduler_trigger('uzsu_sunupdate', by='UZSU Plugin') self._update_count = {'done': 0, 'todo': 0} From 2cc144d3a9bc87602e3dcb8572a9d5b67283e621 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sat, 20 Jul 2019 12:59:43 +0200 Subject: [PATCH 166/200] Improve handle/log if only age condition given. --- stateengine/StateEngineCondition.py | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/stateengine/StateEngineCondition.py b/stateengine/StateEngineCondition.py index 1c0bc7402..81ebcaacd 100755 --- a/stateengine/StateEngineCondition.py +++ b/stateengine/StateEngineCondition.py @@ -273,7 +273,7 @@ def __check_value(self): self._log_debug("not OK -> not matching") return False - else: + elif not self.__min.is_empty() and not self.__max.is_empty(): min_get_value = self.__min.get() max_get_value = self.__max.get() min_value = [min_get_value] if not isinstance(min_get_value, list) else min_get_value @@ -331,6 +331,10 @@ def __check_value(self): else: self._log_debug("given limits ok -> matching") return True + else: + self._log_warning("Neither value nor min/max given. This might result in unexpected evalutions.") + self._log_increase_indent() + return True except Exception as ex: self._log_warning("Problem checking value {}", ex) From eae2afae7d141bb0c461feb0a713034e594b2b8a Mon Sep 17 00:00:00 2001 From: ivande Date: Sun, 21 Jul 2019 11:35:48 +0200 Subject: [PATCH 167/200] reconnect after disconnection or connection-error --- snap7_logo/__init__.py | 56 ++++++++++++++++++++++++------------------ 1 file changed, 32 insertions(+), 24 deletions(-) diff --git a/snap7_logo/__init__.py b/snap7_logo/__init__.py index 46f1c2774..5a18c3f27 100644 --- a/snap7_logo/__init__.py +++ b/snap7_logo/__init__.py @@ -135,11 +135,16 @@ def stop(self): self.close() def _update_loop(self): + #self.logger.debug('_update_loop') + if not self.connected: + #self.logger.error('_update_loop: logo not connected!!') + return + if self._rw_lock.locked(): - self.logger.warning('_update_loop locked!!') + self.logger.warning('_rw_lock locked!! (_update_loop)') return - #self.logger.debug('_update_loop acquire') + self.logger.debug('_rw_lock acquire (_update_loop)') self._rw_lock.acquire(timeout=60) try: @@ -148,18 +153,14 @@ def _update_loop(self): self._read_cycle() - finally: + self.logger.debug('_rw_lock release (_update_loop)') self._rw_lock.release() - - #self.logger.debug('_update_loop release') - def _write_cycle(self): - if not self.connected: return - #self.logger.debug("{0}: _write_cycle() connected:{1}".format(self.get_instance_name(), self.connected)) + try: remove = [] # Liste der bereits geschriebenen Items for k, v in self.writes.items(): # zu schreibend Items I1,Q1,M1, AI1, AQ1, AM1, VM850, VM850.2, VMW0 @@ -217,13 +218,15 @@ def _write_cycle(self): del self.writes[k] def _read_cycle(self): + #self.logger.debug("_read_cycle() get_connected:{0} int:{1}".format(self.plc.get_connected() ,self.plc.get_connected_int())) if not self.connected: return - try: # lesen der VM #self.logger.debug("{0}: _read_cycle() try to read addr:{1} len:{2}".format(self.get_instance_name(), self._vm, self._vm_len)) + k = self._vm # für except - Fehlermeldung + resVM = self.plc.db_read(1, self._vm, self._vm_len) if not len(resVM) == self._vm_len: self.logger.error('{0}: read_cycle() failed ro read VM-Buffer (db_read) len:{1}'.format(self.get_instance_name(), len(resVM))) @@ -237,7 +240,7 @@ def _read_cycle(self): self.logger.error('{0}: read_cycle() failed ro read VM_IO-Buffer (db_read) len:{1}'.format(self.get_instance_name(), len(resVMIO))) self.close() return - + # prüfe Buffer auf Änderung for k, v in self.reads.items(): #self.logger.debug('{0}: read_cycle() k:{1} v:{2} '.format(self.get_instance_name(), k, v)) @@ -289,6 +292,14 @@ def _read_cycle(self): except Exception as e: self.logger.error('{0}: read_cycle(){1} read error {2} '.format(self.get_instance_name(), k, e)) + if 'Connection timed out' in str(e): + self.logger.error(': read_cycle() Connection timed out!! ') + self.connected = False + self._sh.connections.monitor(self) # damit connect ausgeführt wird + if 'Other Socket error' in str(e): + self.logger.error(': read_cycle() Connection error: Other Socket error!! ') + self.connected = False + self._sh.connections.monitor(self) # damit connect ausgeführt wird return return @@ -355,27 +366,24 @@ def update_item(self, item, caller=None, source=None, dest=None): self.logger.debug('{0}: update_item() item:{1} addr:{2}'.format(self.get_instance_name(), item, addr)) addressInfo = self.getAddressInfo(addr) if addressInfo is not False: - - - addressInfo.update({'value': item()}) # Wert des Items hinzufügen addressInfo.update({'item': item}) self.writes.update({addr: addressInfo}) # zu schreibende Items + if self._rw_lock.locked(): - self.logger.warning('update_item locked!!') + self.logger.warning('_rw_lock locked!! (update_item)') return - #self.logger.debug('update_item acquire') + self.logger.debug('_rw_lock acquire (update_item)') self._rw_lock.acquire(timeout=60) - - #self.logger.debug('update_item _write_cycle()') - self._write_cycle() - self._read_cycle() - - #self.logger.debug('update_item release') - self._rw_lock.release() - - + try: + + self._write_cycle() + self._read_cycle() + + finally: + self.logger.debug('_rw_lock release (update_item)') + self._rw_lock.release() def getAddressInfo(self, value): # I1,Q1,M1, AI1, AQ1, AM1, VM850, VM850.2, VMW0 try: From 71a7d3b95dd535011e489228a960f49f82c7246f Mon Sep 17 00:00:00 2001 From: onkelandy Date: Mon, 22 Jul 2019 11:42:49 +0200 Subject: [PATCH 168/200] Implement "mindelta" in documentation --- stateengine/user_doc/user_doc3.rst | 3 +++ stateengine/user_doc/user_doc6.rst | 11 ++++++++++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/stateengine/user_doc/user_doc3.rst b/stateengine/user_doc/user_doc3.rst index 4ca0615fb..38bf251fd 100755 --- a/stateengine/user_doc/user_doc3.rst +++ b/stateengine/user_doc/user_doc3.rst @@ -38,6 +38,9 @@ setzen, kann auch die Angabe ``se_eval_`` genutzt werden. In diesem Fall wird ei Funktion anstelle des Itemnamen angegeben. Dies ist sowohl für Bedingungsabfragen, als auch für das Setzen von "dynamischen" Items möglich. +An dieser Stelle ist es auch möglich, über ``se_mindelta_`` zu definieren, um welchen Wert +sich ein Item mindestens geändert haben muss, um neu gesetzt zu werden. Siehe auch :ref:`Aktionen`. + .. rubric:: Beispiel se_item :name: beispielregelwerk diff --git a/stateengine/user_doc/user_doc6.rst b/stateengine/user_doc/user_doc6.rst index 5e9e2e5be..52dcbc4a5 100755 --- a/stateengine/user_doc/user_doc6.rst +++ b/stateengine/user_doc/user_doc6.rst @@ -14,13 +14,21 @@ alle Parameter einer Aktion in einem Attribut definiert. Der Aktionsname ``se_ac bezieht sich dabei auf das Item, das über ``se_item_`` unter dem Regelwerk-Item definiert und benannt wurde. Die Herangehensweise ähnelt also stark der Deklaration von Bedingungen. +Zusätzlich zu ``se_item_`` lässt sich über den Eintrag +``se_mindelta_`` definieren, um welchen Wert +sich ein Item mindestens geändert haben muss, um neu gesetzt zu werden. Im unten +stehenden Beispiel wird der Lamellenwert abhängig vom Sonnenstand berechnet. Ohne mindelta +würden sich die Lamellen ständig um wenige Grad(bruchteile) ändern. Wird jedoch mindelta +beispielsweise auf den Wert 10 gesetzt, findet eine Änderung erst statt, wenn sich der +errechnete Wert um mindestens 10 Grad vom aktuellen Lamellenwert unterscheidet. + .. rubric:: Beispiel zu Aktionen :name: beispielzuaktionenkombiniert Das folgende Beispiel führt je nach Zustand folgende Aktionen aus: - Daemmerung: Höhe des Raffstores: 100(%), Lamellendrehung: 25(%) -- Nachfuehren: Höhe des Raffstores: 100(%), Lamellendrehung: je nach Sonnenausrichtung +- Nachfuehren: Höhe des Raffstores: 100(%), Lamellendrehung: je nach Sonnenausrichtung, aber erst, wenn eine Mindeständerung von 10 Grad vorhanden ist. - Sonder: Ausführen der Logic myLogic mit dem Wert 42 und einer Verzögerung von 10 Sekunden. .. code-block:: yaml @@ -32,6 +40,7 @@ Das folgende Beispiel führt je nach Zustand folgende Aktionen aus: rules: se_item_height: raffstore1.hoehe # Definition des zu ändernden Höhe-Items se_item_lamella: raffstore1.lamelle # Definition des zu ändernden Lamellen-Items + se_mindelta_lamella: 10 # Mindeständerung von 10 Grad, sonst werden die Lamellen nicht aktualisiert. Daemmerung: <...> se_action_height: From f7fa05275ff901b4eb7d860dcbf4c8fb4d7581e7 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Mon, 22 Jul 2019 20:04:02 +0200 Subject: [PATCH 169/200] conditions: try to change type of value if it doesn't fit the item type --- stateengine/StateEngineCondition.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/stateengine/StateEngineCondition.py b/stateengine/StateEngineCondition.py index 81ebcaacd..016e3adde 100755 --- a/stateengine/StateEngineCondition.py +++ b/stateengine/StateEngineCondition.py @@ -220,6 +220,21 @@ def __cast_all(self, cast_func): # Check if value conditions match def __check_value(self): + def __convert(value, current): + _oldvalue = value + if isinstance(current, bool): + value = StateEngineTools.cast_bool(value) + elif isinstance(current, (int, float)): + value = StateEngineTools.cast_num(value) + elif isinstance(current, list): + value = StateEngineTools.cast_list(value) + else: + value = str(value) + current = str(current) + self._log_warning("Value {} was not same type as item value {} and got converted to {}.", + _oldvalue, current, type(value)) + return value, current + current = self.__get_current() try: if not self.__value.is_empty(): @@ -234,8 +249,7 @@ def __check_value(self): for element in value: if type(element) != type(current): - element = str(element) - current = str(current) + element, current = __convert(element, current) if self.__negate: if current == element: self._log_debug("{0} found but negated -> not matching", element) @@ -255,8 +269,7 @@ def __check_value(self): else: # If current and value have different types, convert both to string if type(value) != type(current): - value = str(value) - current = str(current) + value, current = __convert(value, current) text = "Condition '{0}': value={1} negate={2} current={3}" self._log_debug(text, self.__name, value, self.__negate, current) self._log_increase_indent() From 09bacae89bfd754939accac1099c905b5aab2eed Mon Sep 17 00:00:00 2001 From: onkelandy Date: Mon, 22 Jul 2019 20:15:56 +0200 Subject: [PATCH 170/200] Re-fix min/max/value check --- stateengine/StateEngineCondition.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/stateengine/StateEngineCondition.py b/stateengine/StateEngineCondition.py index 016e3adde..092e511c4 100755 --- a/stateengine/StateEngineCondition.py +++ b/stateengine/StateEngineCondition.py @@ -237,6 +237,7 @@ def __convert(value, current): current = self.__get_current() try: + cond_min_max = self.__min.is_empty() and self.__max.is_empty() if not self.__value.is_empty(): # 'value' is given. We ignore 'min' and 'max' and check only for the given value value = self.__value.get() @@ -286,7 +287,7 @@ def __convert(value, current): self._log_debug("not OK -> not matching") return False - elif not self.__min.is_empty() and not self.__max.is_empty(): + elif not cond_min_max: min_get_value = self.__min.get() max_get_value = self.__max.get() min_value = [min_get_value] if not isinstance(min_get_value, list) else min_get_value @@ -345,7 +346,8 @@ def __convert(value, current): self._log_debug("given limits ok -> matching") return True else: - self._log_warning("Neither value nor min/max given. This might result in unexpected evalutions.") + self._log_warning("Neither value nor min/max given. This might result in unexpected evalutions. Min {}, max {}, value {}", + self.__min.get(), self.__max.get(), self.__value.get()) self._log_increase_indent() return True From 8187d883646f692326edf6c9144c4601251681a5 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Mon, 22 Jul 2019 20:57:52 +0200 Subject: [PATCH 171/200] Improve logging indents --- stateengine/StateEngineCondition.py | 15 ++++++++++----- stateengine/StateEngineValue.py | 4 ++++ 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/stateengine/StateEngineCondition.py b/stateengine/StateEngineCondition.py index 092e511c4..f4ee25178 100755 --- a/stateengine/StateEngineCondition.py +++ b/stateengine/StateEngineCondition.py @@ -171,12 +171,17 @@ def complete(self, item_state): def check(self): # Ignore if no current value can be determined (should not happen as we check this earlier, but to be sure ...) if self.__item is None and self.__eval is None: - self._log_info("condition '{0}': No item or eval found! Considering condition as matching!", self.__name) + self._log_info("Condition '{0}': No item or eval found! Considering condition as matching!", self.__name) return True + self._log_debug("Condition '{0}': Checking all relevant stuff", self.__name) + self._log_increase_indent() if not self.__check_value(): + self._log_decrease_indent() return False if not self.__check_age(): + self._log_decrease_indent() return False + self._log_decrease_indent() return True # Write condition to logger @@ -231,8 +236,8 @@ def __convert(value, current): else: value = str(value) current = str(current) - self._log_warning("Value {} was not same type as item value {} and got converted to {}.", - _oldvalue, current, type(value)) + self._log_info("Value {} was type {} and therefore not the same type as item value {}. It got converted to {}.", + _oldvalue, type(_oldvalue), current, type(value)) return value, current current = self.__get_current() @@ -249,7 +254,7 @@ def __convert(value, current): self._log_increase_indent() for element in value: - if type(element) != type(current): + if type(element) != type(current) and current is not None: element, current = __convert(element, current) if self.__negate: if current == element: @@ -269,7 +274,7 @@ def __convert(value, current): else: # If current and value have different types, convert both to string - if type(value) != type(current): + if type(value) != type(current) and current is not None: value, current = __convert(value, current) text = "Condition '{0}': value={1} negate={2} current={3}" self._log_debug(text, self.__name, value, self.__negate, current) diff --git a/stateengine/StateEngineValue.py b/stateengine/StateEngineValue.py index d1b0db11e..4c9774d7d 100755 --- a/stateengine/StateEngineValue.py +++ b/stateengine/StateEngineValue.py @@ -364,13 +364,16 @@ def __get_eval(self): # noinspection PyUnusedLocal stateengine_eval = se_eval = StateEngineEval.SeEval(self._abitem) self._log_debug("Checking eval: {0}.", self.__eval) + self._log_increase_indent() try: _newvalue = eval(self.__eval) if 'eval:{}'.format(self.__eval) in self.__listorder: self.__listorder[self.__listorder.index('eval:{}'.format(self.__eval))] = _newvalue values = _newvalue + self._log_decrease_indent() except Exception as ex: self._log_info("Problem evaluating '{0}': {1}.", StateEngineTools.get_eval_name(self.__eval), ex) + self._log_decrease_indent() return None else: if isinstance(self.__eval, list): @@ -407,6 +410,7 @@ def __get_eval(self): values.append(self.__do_cast(value)) self._log_decrease_indent() else: + self._log_debug("Checking eval: {0}.", val) try: self._log_increase_indent() _newvalue = self.__eval() From 91c4c3eeab967cf40039ca72b3e544135991c411 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Mon, 22 Jul 2019 22:49:28 +0200 Subject: [PATCH 172/200] perform leave actions directly after leaving a state --- stateengine/README.md | 8 +++++- stateengine/StateEngineItem.py | 43 +++++++++++++++++++++++++-------- stateengine/StateEngineState.py | 5 ++++ stateengine/__init__.py | 2 +- stateengine/plugin.yaml | 2 +- 5 files changed, 47 insertions(+), 13 deletions(-) diff --git a/stateengine/README.md b/stateengine/README.md index 47f9a8eac..48b377cd2 100755 --- a/stateengine/README.md +++ b/stateengine/README.md @@ -13,7 +13,13 @@ Copy stateengine.example.html from the sv_widgets folder to your smartvisu/dropi http://URL/index.php?page=widgets/stateengine.example ## Changelog -### v1.6 +### v1.6.1 +* Some problem fixes +* Log improvements +* Docu improvements +* Leave actions are now immediately triggered as soon as current state gets left + +### v1.6.0 * Get relative items at startup for all se_item_* attributes * Check for source_details in manual_exclude/include functions * Improve logging and some code parts, better problem handling diff --git a/stateengine/StateEngineItem.py b/stateengine/StateEngineItem.py index b13699816..7b989c8d9 100755 --- a/stateengine/StateEngineItem.py +++ b/stateengine/StateEngineItem.py @@ -65,8 +65,7 @@ def __init__(self, smarthome, item): self.__item = item try: self.__id = self.__item.property.path - except Exception as err: - self._log_info("Problem initializing ID of item {}. {}", self.__item, err) + except Exception: self.__id = item self.__name = str(self.__item) # initialize logging @@ -211,37 +210,61 @@ def update_state(self, item, caller=None, source=None, dest=None): # find new state new_state = None + _leaveactions_run = False for state in self.__states: - if self.__update_check_can_enter(state): + result = self.__update_check_can_enter(state) + # New state is different from last state + if result is False and last_state == state: + self.__logger.info("Leaving {0} ('{1}')", last_state.id, last_state.name) + last_state.run_leave(self.__repeat_actions.get()) + _leaveactions_run = True + if result is True: new_state = state break + _last_conditionset_id = self.__lastconditionset_get_id() + _last_conditionset_name = self.__lastconditionset_get_name() # no new state -> stay if new_state is None: if last_state is None: self.__logger.info("No matching state found, no previous state available. Doing nothing.") else: - text = "No matching state found, staying at {0} ('{1}')" - self.__logger.info(text, last_state.id, last_state.name) + if _last_conditionset_id in ['', None]: + text = "No matching state found, staying at {0} ('{1}')" + self.__logger.info(text, last_state.id, last_state.name) + else: + text = "No matching state found, staying at {0} ('{1}') based on conditionset {2} ('{3}')" + self.__logger.info(text, last_state.id, last_state.name, _last_conditionset_id, _last_conditionset_name) last_state.run_stay(self.__repeat_actions.get()) self.__update_in_progress = False return # get data for new state if last_state is not None and new_state.id == last_state.id: - self.__logger.info("Staying at {0} ('{1}')", new_state.id, new_state.name) + if _last_conditionset_id in ['', None]: + self.__logger.info("Staying at {0} ('{1}')", new_state.id, new_state.name) + else: + self.__logger.info("Staying at {0} ('{1}') based on conditionset {2} ('{3}')", + new_state.id, new_state.name, _last_conditionset_id, _last_conditionset_name) # New state is last state if self.__laststate_internal_name != new_state.name: self.__laststate_set(new_state) new_state.run_stay(self.__repeat_actions.get()) else: - # New state is different from last state - if last_state is not None: + if last_state is not None and _leaveactions_run is True: + self.__logger.info("Left {0} ('{1}')", last_state.id, last_state.name) + if last_state.leaveactions.count() > 0: + self.__logger.info("Maybe some actions were performed directly after leave - see log above.") + elif last_state is not None: self.__logger.info("Leaving {0} ('{1}')", last_state.id, last_state.name) last_state.run_leave(self.__repeat_actions.get()) - - self.__logger.info("Entering {0} ('{1}')", new_state.id, new_state.name) + _leaveactions_run = True + if _last_conditionset_id in ['', None]: + self.__logger.info("Entering {0} ('{1}')", new_state.id, new_state.name) + else: + self.__logger.info("Entering {0} ('{1}') based on conditionset {2} ('{3}')", + new_state.id, new_state.name, _last_conditionset_id, _last_conditionset_name) self.__laststate_set(new_state) new_state.run_enter(self.__repeat_actions.get()) diff --git a/stateengine/StateEngineState.py b/stateengine/StateEngineState.py index 28acb03b1..ac370940f 100755 --- a/stateengine/StateEngineState.py +++ b/stateengine/StateEngineState.py @@ -36,6 +36,11 @@ def id(self): def name(self): return self.__name + # Return leave actions + @property + def leaveactions(self): + return self.__actions_leave + # Return text of state @property def text(self): diff --git a/stateengine/__init__.py b/stateengine/__init__.py index df618510b..399472e37 100755 --- a/stateengine/__init__.py +++ b/stateengine/__init__.py @@ -33,7 +33,7 @@ class StateEngine(SmartPlugin): - PLUGIN_VERSION = '1.6.0' + PLUGIN_VERSION = '1.6.1' # Constructor # noinspection PyUnusedLocal,PyMissingConstructor diff --git a/stateengine/plugin.yaml b/stateengine/plugin.yaml index 19a2cc237..de31a3415 100755 --- a/stateengine/plugin.yaml +++ b/stateengine/plugin.yaml @@ -26,7 +26,7 @@ plugin: documentation: https://www.smarthomeng.de/user/plugins/stateengine/user_doc.html support: https://knx-user-forum.de/forum/supportforen/smarthome-py/1303071-stateengine-plugin-support - version: 1.6.0 + version: 1.6.1 sh_minversion: 1.6 multi_instance: False classname: StateEngine From 30d6efe70b02a53a9a995b341b3354ac95ebac61 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Tue, 23 Jul 2019 01:46:58 +0200 Subject: [PATCH 173/200] on_leave actions now also consider condition set entries correctly --- stateengine/README.md | 2 +- stateengine/StateEngineAction.py | 2 +- stateengine/StateEngineConditionSets.py | 2 +- stateengine/StateEngineDefaults.py | 3 ++ stateengine/StateEngineItem.py | 16 +++++--- stateengine/StateEngineState.py | 5 +++ stateengine/__init__.py | 1 + stateengine/plugin.yaml | 51 ++++++++++++++++++++----- 8 files changed, 64 insertions(+), 18 deletions(-) diff --git a/stateengine/README.md b/stateengine/README.md index 48b377cd2..7b2ba5104 100755 --- a/stateengine/README.md +++ b/stateengine/README.md @@ -17,7 +17,7 @@ http://URL/index.php?page=widgets/stateengine.example * Some problem fixes * Log improvements * Docu improvements -* Leave actions are now immediately triggered as soon as current state gets left +* Leave actions can now immediately triggered as soon as current state gets left (parameter: instant_leaveactions) ### v1.6.0 * Get relative items at startup for all se_item_* attributes diff --git a/stateengine/StateEngineAction.py b/stateengine/StateEngineAction.py index 34cd9e2c3..984f5cfec 100755 --- a/stateengine/StateEngineAction.py +++ b/stateengine/StateEngineAction.py @@ -632,7 +632,7 @@ def _execute(self, actionname: str, namevar: str = "", repeat_text: str = ""): elif self.__special == "retrigger": # noinspection PyCallingNonCallable self.__value(False, caller=self._caller) - self.__value(True, caller='{} Retrigger'.format(self._caller)) + self.__value(True, caller=self._caller, source="retrigger") else: self._log_decrease_indent() raise ValueError("{0}: Unknown special value '{1}'!".format(actionname, self.__special)) diff --git a/stateengine/StateEngineConditionSets.py b/stateengine/StateEngineConditionSets.py index ed27d473d..2bbe8f345 100755 --- a/stateengine/StateEngineConditionSets.py +++ b/stateengine/StateEngineConditionSets.py @@ -22,6 +22,7 @@ from . import StateEngineTools from collections import OrderedDict + # Class representing a list of condition sets class SeConditionSets(StateEngineTools.SeItemChild): @@ -65,7 +66,6 @@ def write_to_logger(self): def one_conditionset_matching(self): if self.count() == 0: self._log_debug("No condition sets defined -> matching") - self._abitem.lastconditionset_set('', '') return True for name in self.__condition_sets: if self.__condition_sets[name].all_conditions_matching(): diff --git a/stateengine/StateEngineDefaults.py b/stateengine/StateEngineDefaults.py index df1c7ff23..c5704645a 100755 --- a/stateengine/StateEngineDefaults.py +++ b/stateengine/StateEngineDefaults.py @@ -25,9 +25,12 @@ suspend_time = 3600 +instant_leaveaction = False + plugin_identification = "StateEngine Plugin" def write_to_log(logger): logger.info("StateEngine default startup delay = {0}".format(startup_delay)) logger.info("StateEngine default suspension time = {0}".format(suspend_time)) + logger.info("StateEngine default instant_leaveaction = {0}".format(instant_leaveaction)) diff --git a/stateengine/StateEngineItem.py b/stateengine/StateEngineItem.py index 7b989c8d9..b99b92a8d 100755 --- a/stateengine/StateEngineItem.py +++ b/stateengine/StateEngineItem.py @@ -207,6 +207,8 @@ def update_state(self, item, caller=None, source=None, dest=None): _last_conditionset_name = self.__lastconditionset_get_name() if _last_conditionset_id not in ['', None]: self.__logger.info("Last Conditionset: {0} ('{1}')", _last_conditionset_id, _last_conditionset_name) + _original_conditionset_id = _last_conditionset_id + _original_conditionset_name = _last_conditionset_name # find new state new_state = None @@ -214,7 +216,7 @@ def update_state(self, item, caller=None, source=None, dest=None): for state in self.__states: result = self.__update_check_can_enter(state) # New state is different from last state - if result is False and last_state == state: + if result is False and last_state == state and StateEngineDefaults.instant_leaveaction is True: self.__logger.info("Leaving {0} ('{1}')", last_state.id, last_state.name) last_state.run_leave(self.__repeat_actions.get()) _leaveactions_run = True @@ -222,8 +224,6 @@ def update_state(self, item, caller=None, source=None, dest=None): new_state = state break - _last_conditionset_id = self.__lastconditionset_get_id() - _last_conditionset_name = self.__lastconditionset_get_name() # no new state -> stay if new_state is None: if last_state is None: @@ -238,7 +238,8 @@ def update_state(self, item, caller=None, source=None, dest=None): last_state.run_stay(self.__repeat_actions.get()) self.__update_in_progress = False return - + _last_conditionset_id = self.__lastconditionset_get_id() + _last_conditionset_name = self.__lastconditionset_get_name() # get data for new state if last_state is not None and new_state.id == last_state.id: if _last_conditionset_id in ['', None]: @@ -257,9 +258,14 @@ def update_state(self, item, caller=None, source=None, dest=None): if last_state.leaveactions.count() > 0: self.__logger.info("Maybe some actions were performed directly after leave - see log above.") elif last_state is not None: - self.__logger.info("Leaving {0} ('{1}')", last_state.id, last_state.name) + self.lastconditionset_set(_original_conditionset_id, _original_conditionset_name) + self.__logger.info("Leaving {0} ('{1}'). Condition set was: {2}", last_state.id, last_state.name, _original_conditionset_id) last_state.run_leave(self.__repeat_actions.get()) _leaveactions_run = True + if new_state.conditions.count() == 0: + self.lastconditionset_set('', '') + else: + self.lastconditionset_set(_last_conditionset_id, _last_conditionset_name) if _last_conditionset_id in ['', None]: self.__logger.info("Entering {0} ('{1}')", new_state.id, new_state.name) else: diff --git a/stateengine/StateEngineState.py b/stateengine/StateEngineState.py index ac370940f..2aaad71d0 100755 --- a/stateengine/StateEngineState.py +++ b/stateengine/StateEngineState.py @@ -46,6 +46,11 @@ def leaveactions(self): def text(self): return self.__text.get(self.__name) + # Return conditions + @property + def conditions(self): + return self.__conditions + # Constructor # abitem: parent SeItem instance # item_state: item containing configuration of state diff --git a/stateengine/__init__.py b/stateengine/__init__.py index 399472e37..2a5cc08b1 100755 --- a/stateengine/__init__.py +++ b/stateengine/__init__.py @@ -53,6 +53,7 @@ def __init__(self, sh): StateEngineDefaults.startup_delay = self.get_parameter_value("startup_delay_default") StateEngineDefaults.suspend_time = self.get_parameter_value("suspend_time_default") + StateEngineDefaults.instant_leaveaction = self.get_parameter_value("instant_leaveaction") StateEngineDefaults.write_to_log(self.logger) StateEngineCurrent.init(self.get_sh()) diff --git a/stateengine/plugin.yaml b/stateengine/plugin.yaml index de31a3415..e113a4dd6 100755 --- a/stateengine/plugin.yaml +++ b/stateengine/plugin.yaml @@ -179,6 +179,14 @@ parameters: Everything gets deleted from the given directory, not just log files! ' + instant_leaveaction: + type: bool + default: False + description: + de: 'Ist dieser Parameter auf True gesetzt, werden "on leave" Aktionen sofort ausgeführt, wenn der aktuelle Zustand nicht mehr eingenommen wird. Standardmäßig werden die Aktionen erst direkt vor dem Eintreten in einen neuen Zustand getriggert.' + en: 'If this parameter is set to True the "on leave" actions are run immediately after not entering the current state + again. By default the actions are triggered directly before entering a new state.' + item_attributes: # Definition of item attributes defined by this plugin type: @@ -238,14 +246,11 @@ item_attributes: description_long: de: '**Id des Items, in dem der Name des aktuellen Zustands abgelegt wird:**\n In das hier verknüpfte Item wird der Name des aktuellen Zustands - abgelegt. Das Item kann für Displayzwecke verwendet werden. Wenn - das Item ``se_laststate_item_name`` nicht angegeben ist, steht - der Name des aktuellen Zustands nicht zur Verfügung. + abgelegt. Das Item kann für Displayzwecke und Bedingungen verwendet werden. ' en: '**Id of the item that saves the name of the current state:**\n The item defined here saves the name of the current state for - visualization purposes. If ``se_laststate_item_name`` is not defined - you cannot access the name of the current state. + visualization purposes and conditions. ' se_laststate_item_id: @@ -258,14 +263,40 @@ item_attributes: In das hier verknüpfte Item wird die Id des aktuellen Zustands abgelegt. Das Item kann mit dem Attribut ``cache: yes`` versehen werden, dann bleibt der vorherige Zustand bei einem - Neustart von smarthomeNG erhalten. Wenn das Item nicht angegeben ist, - wird der aktuelle Zustand nur im Plugin gespeichert und geht mit - einem Neustart von smarthomeNG verloren. + Neustart von smarthomeNG erhalten. ' en: '**Id of the item that saves the id of the current state:**\n In combination with the attribute ``cache: yes`` the defined item - can be used to load the last state after the plugin start. Otherwise - it does not know the last valid state before a system restart. + can be used to load the last state after the plugin start. + ' + se_lastconditionset_item_name: + type: str + description: + de: 'Name des Items, in dem der Name des zuletzt genutzten Zustandsets abgelegt wird' + en: 'Name of the item that saves the name of the last used condition set' + description_long: + de: '**Name des Items, in dem der Name des aktuellen Zustandsets abgelegt wird:**\n + In das hier verknüpfte Item wird der Name des zuletzt aktiven Zustandsets + abgelegt. Das Item kann für Displayzwecke, Aktionen und Bedingungen genutzt werden. + ' + en: '**Name of the item that saves the name of the last condition set:**\n + The item defined here saves the name of the last active condition set. + It can be used for visualization, actions and conditions. + ' + + se_lastconditionset_item_id: + type: str + description: + de: 'ID des Items, in dem der Name des zuletzt genutzten Zustandsets abgelegt wird' + en: 'ID of the item that saves the name of the last used condition set' + description_long: + de: '**ID des Items, in dem der Name des aktuellen Zustandsets abgelegt wird:**\n + In das hier verknüpfte Item wird der Name des zuletzt aktiven Zustandsets + abgelegt. Das Item kann für Displayzwecke, Aktionen und Bedingungen genutzt werden. + ' + en: '**ID of the item that saves the name of the last condition set:**\n + The item defined here saves the name of the last active condition set. + It can be used for visualization, actions and conditions. ' se_repeat_actions: From 0d71eafb7acd7ebbe2773a0219b0ea2b764beaef Mon Sep 17 00:00:00 2001 From: onkelandy Date: Tue, 23 Jul 2019 02:35:03 +0200 Subject: [PATCH 174/200] remove "?" from init commands, allow commands without player_id --- squeezebox/README.md | 6 ++++ squeezebox/__init__.py | 34 +++++++++--------- squeezebox/plugin.yaml | 79 +++++++++++++++++++++++++---------------- squeezebox/user_doc.rst | 7 ++-- 4 files changed, 74 insertions(+), 52 deletions(-) diff --git a/squeezebox/README.md b/squeezebox/README.md index 4dd682c25..97dd2610c 100755 --- a/squeezebox/README.md +++ b/squeezebox/README.md @@ -1,5 +1,11 @@ # Squeezebox +## New in version 1.3.2 + +* Remove the automatic '?' addition to init commands +* Update struct templates +* Allow commands without playerid (for server queries, etc.) + ## New in version 1.3.1 * Parse the plugin parameters in Smart Plugin style diff --git a/squeezebox/__init__.py b/squeezebox/__init__.py index d9a39e6e3..b175b5683 100755 --- a/squeezebox/__init__.py +++ b/squeezebox/__init__.py @@ -30,7 +30,7 @@ class Squeezebox(SmartPlugin,lib.connection.Client): ALLOW_MULTIINSTANCE = False - PLUGIN_VERSION = "1.3.1" + PLUGIN_VERSION = "1.3.2" def __init__(self, smarthome): if '.'.join(VERSION.split('.', 2)[:2]) <= '1.5': @@ -67,7 +67,7 @@ def _resolv_full_cmd(self, item, attr): if (grandgrandparent_item is not None) and self.has_iattr(grandgrandparent_item.conf, 'squeezebox_playerid') and self._check_mac(self.get_iattr_value(grandgrandparent_item.conf, 'squeezebox_playerid')): item.conf[attr] = item.conf[attr].replace('', self.get_iattr_value(grandgrandparent_item.conf, 'squeezebox_playerid')) else: - self.logger.warning("squeezebox: could not resolve playerid for {0} from parent item {1}, neither from grandparent {2} or grandgrandparent {3}".format(item, parent_item, grandparent_item, grandgrandparent_item)) + self.logger.warning("could not resolve playerid for {0} from parent item {1}, neither from grandparent {2} or grandgrandparent {3}".format(item, parent_item, grandparent_item, grandgrandparent_item)) return None return item.conf[attr] @@ -78,7 +78,7 @@ def parse_item(self, item): if (cmd is None): return None - self.logger.debug("squeezebox: {0} receives updates by \"{1}\"".format(item, cmd)) + self.logger.debug("{0} receives updates by \"{1}\"".format(item, cmd)) if not cmd in self._val: self._val[cmd] = {'items': [item], 'logics': []} else: @@ -91,14 +91,14 @@ def parse_item(self, item): return None url = 'http://{}:{}/music/current/cover.jpg?player={}'.format(self._host, self._web_port, playerid) item(url, 'LMS', 'parse') - self.logger.debug("squeezebox: album art item {0} is set to \"{1}\"".format(item, url)) + self.logger.debug("album art item {0} is set to \"{1}\"".format(item, url)) if self.has_iattr(item.conf, 'squeezebox_init'): cmd = self._resolv_full_cmd(item, 'squeezebox_init') if (cmd is None): return None - self.logger.debug("squeezebox: {0} is initialized by \"{1}\"".format(item, cmd)) + self.logger.debug("{0} is initialized by \"{1}\"".format(item, cmd)) if not cmd in self._val: self._val[cmd] = {'items': [item], 'logics': []} else: @@ -112,7 +112,7 @@ def parse_item(self, item): cmd = self._resolv_full_cmd(item, 'squeezebox_send') if (cmd is None): return None - self.logger.debug("squeezebox: {0} is sent to \"{1}\"".format(item, cmd)) + self.logger.debug("{0} is sent to \"{1}\"".format(item, cmd)) return self.update_item else: return None @@ -121,7 +121,7 @@ def parse_logic(self, logic): if self.has_iattr(logic.conf, 'squeezebox_playerid'): playerid = self.get_iattr_value(logic.conf, 'squeezebox_playerid') if not self._check_mac(playerid): - self.logger.warning("squeezebox: invalid playerid for {0}".format(logic.name)) + self.logger.warning("invalid playerid for {0}".format(logic.name)) return None else: playerid = 'playerid_not_set' @@ -132,9 +132,9 @@ def parse_logic(self, logic): for cmd in cmds: cmd = cmd.replace('', playerid) if not self._check_mac(cmd.split(maxsplit=1)[0]): - self.logger.warning("squeezebox: no valid playerid in \"{}\"".format(cmd)) + self.logger.warning("no valid playerid in \"{}\"".format(cmd)) continue - self.logger.debug("squeezebox: {} will be triggered by \"{}\"".format(logic.name, cmd)) + self.logger.debug("{} will be triggered by \"{}\"".format(logic.name, cmd)) if not cmd in self._val: self._val[cmd] = {'items': [], 'logics': [logic]} else: @@ -149,7 +149,7 @@ def update_item(self, item, caller=None, source=None, dest=None): if caller != 'LMS': cmd = self._resolv_full_cmd(item, 'squeezebox_send').split() if not self._check_mac(cmd[0]): - return + self.logger.debug("Command {0} does not include player_id. Is that on purpose?".format(cmd)) value = item() if isinstance(value, bool): # convert to get '0'/'1' instead of 'True'/'False' @@ -176,21 +176,21 @@ def _send(self, cmd): repl = (('%FC', '%C3%BC'), ('%F6', '%C3%B6'), ('%E4', '%C3%A4'), ('%DC', '%C3%9C'), ('%D6', '%C3%96'), ('%C4', '%C3%84')) for r in repl: cmd = cmd.replace(*r) - self.logger.debug("squeezebox: Sending request: {0}".format(cmd)) + self.logger.debug("Sending request: {0}".format(cmd)) self.send(bytes(cmd + '\r\n', 'utf-8')) def found_terminator(self, response): data = [urllib.parse.unquote(data_str) for data_str in response.decode().split()] - self.logger.debug("squeezebox: Got: {0}".format(data)) + self.logger.debug("Got: {0}".format(data)) try: if (data[0].lower() == 'listen'): value = int(data[1]) if (value == 1): - self.logger.info("squeezebox: Listen-mode enabled") + self.logger.info("Listen-mode enabled") else: - self.logger.info("squeezebox: Listen-mode disabled") + self.logger.info("Listen-mode disabled") if self._check_mac(data[0]): if (data[1] == 'time' and (data[2].startswith('+') or data[2].startswith('-'))): @@ -289,9 +289,8 @@ def found_terminator(self, response): return self._update_items_with_data(data) except Exception as e: - self.logger.error( - "squeezebox: exception while parsing \'{0}\'".format(data)) - self.logger.error("squeezebox: exception: {}".format(e)) + self.logger.error("exception while parsing \'{0}\'".format(data)) + self.logger.error("exception: {}".format(e)) def _update_items_with_data(self, data): cmd = ' '.join(data_str for data_str in data[:-1]) @@ -311,7 +310,6 @@ def handle_connect(self): if self.connected: self.logger.debug('squeezebox: init read') for cmd in self._init_cmds: - cmd = '{} ?'.format(cmd) if '?' not in cmd else cmd self._send(cmd) def run(self): diff --git a/squeezebox/plugin.yaml b/squeezebox/plugin.yaml index f02d0ef34..5c20e32a7 100644 --- a/squeezebox/plugin.yaml +++ b/squeezebox/plugin.yaml @@ -31,7 +31,7 @@ plugin: state: ready support: https://knx-user-forum.de/forum/supportforen/smarthome-py/28692-√-neues-plugin-logitech-squeezebox-anregungen - version: 1.3.1 # Plugin version + version: 1.3.2 # Plugin version sh_minversion: 1.3 # minimum shNG version to use this plugin # sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) multi_instance: False # plugin supports multi instance @@ -187,7 +187,7 @@ item_structs: enforce_updates: True squeezebox_send: info total genres ? squeezebox_recv: info total genres - squeezebox_init: info total genres + squeezebox_init: info total genres ? totalduration: type: num @@ -195,7 +195,7 @@ item_structs: enforce_updates: True squeezebox_send: info total duration ? squeezebox_recv: info total duration - squeezebox_init: info total duration + squeezebox_init: info total duration ? totalartists: type: num @@ -203,7 +203,7 @@ item_structs: enforce_updates: True squeezebox_send: info total artists ? squeezebox_recv: info total artists - squeezebox_init: info total artists + squeezebox_init: info total artists ? totalalbums: type: num @@ -211,7 +211,7 @@ item_structs: enforce_updates: True squeezebox_send: info total albums ? squeezebox_recv: info total albums - squeezebox_init: info total albums + squeezebox_init: info total albums ? totalsongs: type: num @@ -219,20 +219,20 @@ item_structs: enforce_updates: True squeezebox_send: info total songs ? squeezebox_recv: info total songs - squeezebox_init: info total songs + squeezebox_init: info total songs ? rescan: type: str visu_acl: rw squeezebox_send: rescan {} squeezebox_recv: rescan - squeezebox_init: rescan query: type: bool visu_acl: rw enforce_updates: True squeezebox_send: rescan ? + squeezebox_init: rescan ? progress: type: str @@ -260,13 +260,29 @@ item_structs: visu_acl: ro squeezebox_send: player count ? squeezebox_recv: player count - squeezebox_init: player count query: type: bool visu_acl: rw enforce_updates: True squeezebox_send: player count ? + squeezebox_init: player count ? + + favoritescount: + type: num + visu_acl: ro + + result: + type: str + squeezebox_recv: favorites items + on_update: .. = value.split(":")[1] + + query: + type: bool + visu_acl: rw + enforce_updates: True + squeezebox_send: favorites items + squeezebox_init: favorites items player: name: Vorlage-Struktur für Squeezebox Player @@ -276,46 +292,47 @@ item_structs: visu_acl: rw squeezebox_send: alarms ? squeezebox_recv: alarms - squeezebox_init: alarms + squeezebox_init: alarms ? alarm: type: str visu_acl: rw squeezebox_send: alarm {} squeezebox_recv: alarm + squeezebox_init: alarm ? syncgroups: type: num visu_acl: ro squeezebox_send: syncgroups ? squeezebox_recv: syncgroups - squeezebox_init: syncgroups query: type: bool visu_acl: rw enforce_updates: True squeezebox_send: syncgroups ? + squeezebox_init: syncgroups ? signalstrength: type: num visu_acl: ro squeezebox_send: signalstrength ? squeezebox_recv: signalstrength - squeezebox_init: signalstrength query: type: bool visu_acl: rw enforce_updates: True squeezebox_send: signalstrength ? + squeezebox_init: signalstrength ? player_name: type: str visu_acl: rw squeezebox_send: name {} squeezebox_recv: name - squeezebox_init: name + squeezebox_init: name ? connected: type: bool @@ -323,21 +340,20 @@ item_structs: enforce_updates: True squeezebox_send: connected ? squeezebox_recv: connected - squeezebox_init: connected + squeezebox_init: connected ? sleep: type: num visu_acl: rw squeezebox_send: sleep {} squeezebox_recv: sleep - squeezebox_init: sleep + squeezebox_init: sleep ? sync: type: str visu_acl: rw enforce_updates: True squeezebox_send: sync {} - squeezebox_init: sync squeezebox_recv: sync query: @@ -345,6 +361,7 @@ item_structs: visu_acl: rw enforce_updates: True squeezebox_send: sync ? + squeezebox_init: sync ? unsync: type: bool @@ -357,7 +374,7 @@ item_structs: visu_acl: rw squeezebox_send: power {} squeezebox_recv: prefset server power - squeezebox_init: power + squeezebox_init: power ? button: type: bool @@ -399,19 +416,19 @@ item_structs: type: str visu_acl: ro squeezebox_recv: genre - squeezebox_init: genre + squeezebox_init: genre ? artist: type: str visu_acl: ro squeezebox_recv: artist - squeezebox_init: artist + squeezebox_init: artist ? album: type: str visu_acl: ro squeezebox_recv: album - squeezebox_init: album + squeezebox_init: album ? currentalbumarturl: type: str @@ -424,25 +441,25 @@ item_structs: type: str visu_acl: ro squeezebox_recv: title - squeezebox_init: title + squeezebox_init: title ? current_title: type: str visu_acl: ro squeezebox_recv: playlist newsong - squeezebox_init: current_title + squeezebox_init: current_title ? path: type: str visu_acl: ro squeezebox_recv: path - squeezebox_init: path + squeezebox_init: path ? duration: type: num visu_acl: ro squeezebox_recv: duration - squeezebox_init: duration + squeezebox_init: duration ? controls: name: Vorlage-Struktur für Squeezebox Playercontrols @@ -452,7 +469,6 @@ item_structs: visu_acl: rw squeezebox_send: mode {} squeezebox_recv: mode - squeezebox_init: mode remark: the mode gets automatically updated when using play, stop or pause and the other way around query: @@ -460,6 +476,7 @@ item_structs: visu_acl: rw enforce_updates: True squeezebox_send: mode ? + squeezebox_init: mode ? mute: type: bool @@ -467,14 +484,14 @@ item_structs: visu_acl: rw squeezebox_send: mixer muting {} squeezebox_recv: prefset server mute - squeezebox_init: mixer muting + squeezebox_init: mixer muting ? volume: type: num visu_acl: rw squeezebox_send: mixer volume {} squeezebox_recv: prefset server volume - squeezebox_init: mixer volume + squeezebox_init: mixer volume ? fading: type: num @@ -518,7 +535,7 @@ item_structs: type: num visu_acl: rw squeezebox_send: playlist repeat {} - squeezebox_init: playlist repeat + squeezebox_init: playlist repeat ? squeezebox_recv: playlist repeat remark: Sets the repeat song, playlist, none values correctly on_change: @@ -548,7 +565,7 @@ item_structs: type: num visu_acl: rw squeezebox_send: playlist shuffle {} - squeezebox_init: playlist shuffle + squeezebox_init: playlist shuffle ? squeezebox_recv: playlist shuffle remark: Sets the shuffle song, album, none values correctly on_change: @@ -600,13 +617,13 @@ item_structs: visu_acl: rw enforce_updates: True squeezebox_recv: time - squeezebox_init: time squeezebox_send: time {} query: type: bool visu_acl: rw squeezebox_send: time ? + squeezebox_init: time ? cycle: 100 enforce_updates: True remark: Queries current song time every 10 seconds and updates time item @@ -647,7 +664,6 @@ item_structs: visu_acl: rw enforce_updates: True squeezebox_send: playlist index {} - squeezebox_init: playlist index squeezebox_recv: playlist index query: @@ -655,13 +671,13 @@ item_structs: visu_acl: rw enforce_updates: True squeezebox_send: playlist index ? + squeezebox_init: playlist index ? playlist_name: type: str visu_acl: rw enforce_updates: True squeezebox_send: playlist name {} - squeezebox_init: playlist name squeezebox_recv: playlist name query: @@ -669,6 +685,7 @@ item_structs: visu_acl: rw enforce_updates: True squeezebox_send: playlist name ? + squeezebox_init: playlist name ? save: type: str diff --git a/squeezebox/user_doc.rst b/squeezebox/user_doc.rst index 30ed18adb..ebe4a6b46 100755 --- a/squeezebox/user_doc.rst +++ b/squeezebox/user_doc.rst @@ -2,7 +2,7 @@ .. index:: squeezebox squeezebox -######## +########## Konfiguration ============= @@ -24,11 +24,12 @@ Konfiguration Kommandos ========= -Die Kommandos sind der technischen Logitech Dokumentation zum "Command Line Interface" zu entnehmen. Folgende Platzhalter können genutzt werden: +Die Kommandos sind der technischen Logitech Dokumentation zum **Command Line Interface** zu entnehmen. Folgende Platzhalter können genutzt werden: - : Wird durch die im Parent-Item gesetzte Player-ID ersetzt - {}: Der Wert des Items wird in diesen Platzhalter geschrieben (sollte nicht verwendet werden, wenn ein fixer oder kein Wert nötig ist). -Sämtliche Kommandos sollten manuell über die Telnet-Schnittstelle auf Port 9090 getestet werden. Für Abfragen muss hierbei ein "?" am Ende des Befehls stehen, z.B. " name ?. Dieses Fragezeichen kann bei squeezebox_init Befehl weggelassen werden, da es vom Plugin hinzugefügt wird. +Sämtliche Kommandos sollten manuell über die Telnet-Schnittstelle auf Port 9090 getestet werden. +Für Abfragen muss hierbei ein "?" am Ende des Befehls stehen, z.B. " name ?. Struct Vorlagen From 6574ae17c387304d9b9f952e38d525290422360a Mon Sep 17 00:00:00 2001 From: onkelandy Date: Wed, 24 Jul 2019 22:16:00 +0200 Subject: [PATCH 175/200] fix log for condition_set if no condition_sets given --- stateengine/StateEngineItem.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/stateengine/StateEngineItem.py b/stateengine/StateEngineItem.py index b99b92a8d..547709126 100755 --- a/stateengine/StateEngineItem.py +++ b/stateengine/StateEngineItem.py @@ -264,6 +264,8 @@ def update_state(self, item, caller=None, source=None, dest=None): _leaveactions_run = True if new_state.conditions.count() == 0: self.lastconditionset_set('', '') + _last_conditionset_id = '' + _last_conditionset_name = '' else: self.lastconditionset_set(_last_conditionset_id, _last_conditionset_name) if _last_conditionset_id in ['', None]: From b5e1767c8318547258c11073c2c8cbe460d48f8b Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sat, 27 Jul 2019 17:27:06 +0200 Subject: [PATCH 176/200] allow sh..() and sh..property.X in eval: --- stateengine/StateEngineValue.py | 24 +++++++--- stateengine/user_doc/user_doc10.rst | 72 +++++++++++++++-------------- stateengine/user_doc/user_doc3.rst | 4 ++ stateengine/user_doc/user_doc5.rst | 4 +- stateengine/user_doc/user_doc8.rst | 6 +-- stateengine/user_doc/user_doc9.rst | 4 +- 6 files changed, 67 insertions(+), 47 deletions(-) diff --git a/stateengine/StateEngineValue.py b/stateengine/StateEngineValue.py index 4c9774d7d..b26084e0d 100755 --- a/stateengine/StateEngineValue.py +++ b/stateengine/StateEngineValue.py @@ -20,7 +20,7 @@ ######################################################################### from . import StateEngineTools from . import StateEngineEval -import datetime +import re # Class representing a value for a condition (either value or via item/eval) class SeValue(StateEngineTools.SeItemChild): @@ -338,19 +338,31 @@ def __do_cast(self, value): return None return value - def __parse_relative(self, evalstr, begintag, endtag): + def __parse_relative(self, evalstr, begintag, endtags): if evalstr.find(begintag+'.') == -1: return evalstr - pref = '' rest = evalstr + endtags = [endtags] if isinstance(endtags, str) else endtags + while (rest.find(begintag+'.') != -1): pref += rest[:rest.find(begintag+'.')] rest = rest[rest.find(begintag+'.')+len(begintag):] + endtag = '' + previousposition = 1000 + for end in endtags: + position = rest.find(end) + if position < previousposition and not position == -1: + endtag = end + previousposition = position rel = rest[:rest.find(endtag)] rest = rest[rest.find(endtag)+len(endtag):] - pref += "se_eval.get_relative_itemvalue('{}')".format(rel) - + if 'property' in endtag: + rest1 = re.split('( |\+|\-|\*|\/)', rest, 1) + rest = ''.join(rest1[1:]) + pref += "se_eval.get_relative_itemproperty('{}', '{}')".format(rel, rest1[0]) + elif '()' in endtag: + pref += "se_eval.get_relative_itemvalue('{}')".format(rel) pref += rest return pref @@ -359,7 +371,7 @@ def __get_eval(self): # noinspection PyUnusedLocal sh = self._sh if isinstance(self.__eval, str): - self.__eval = self.__parse_relative(self.__eval, 'sh.', '()') + self.__eval = self.__parse_relative(self.__eval, 'sh.', ['()', '.property.']) if "stateengine_eval" in self.__eval or "se_eval" in self.__eval: # noinspection PyUnusedLocal stateengine_eval = se_eval = StateEngineEval.SeEval(self._abitem) diff --git a/stateengine/user_doc/user_doc10.rst b/stateengine/user_doc/user_doc10.rst index c443053fb..cb99c7bbd 100755 --- a/stateengine/user_doc/user_doc10.rst +++ b/stateengine/user_doc/user_doc10.rst @@ -56,39 +56,6 @@ Vorgabewerte 0 für ``min`` und 255 für ``max``. Das zurückgelieferte Item kann nun genutzt werden, um in einem eval Ausdruck gesetzt oder abgefragt zu werden. -**Item-Id relativ zum Regelwerk-Item ermitteln** -*Eine Item-Id relativ zur Item-Id des Regelwerk-Items wird ermittelt.* - -.. code-block:: yaml - - se_eval.get_relative_itemid(subitem_id) - se_eval.get_relative_itemid('..suspend') - -Statt dieser Funktion kann se_eval.get_relative_itemproperty('..suspend', 'path') -verwendet werden. - -**Item-Wert relativ zum Regelwerk-Item ermitteln** -*Der Wert eines Items relativ zur Item-Id des Regelwerk-Items wird ermittelt.* - -.. code-block:: yaml - - se_eval.get_relative_itemvalue(subitem_id) - se_eval.get_relative_itemvalue('..suspend') - -Statt dieser Funktion kann se_eval.get_relative_itemproperty('..suspend', 'value') -verwendet werden. - -**Item-Property relativ zum Regelwerk-Item ermitteln** -*Eine Property eines Items relativ zur Item-Id des Regelwerk-Items wird ermittelt.* - -.. code-block:: yaml - - se_eval.get_relative_itemproperty(subitem_id, property) - se_eval.get_relative_itemproperty('..suspend', 'last_change_age') - -Welche Werte für ``property`` genutzt werden können, ist hier nachzulesen: -`Item Properties `_). - **Wert eines Item-Attributs ermitteln** *Der Wert eines Attributs wird ermittelt.* @@ -123,6 +90,43 @@ Werts in diesem Item wird die bereits abgelaufene Suspend-Zeit bestimmt. Dies könnte auch über ein relatives Item angegeben werden, wobei dieses unbedingt in Anführungszeichen gesetzt werden muss, z.B. ``'..suspend'`` +**Item-Id relativ zum Regelwerk-Item ermitteln** +*Eine Item-Id relativ zur Item-Id des Regelwerk-Items wird ermittelt.* + +.. code-block:: yaml + + se_eval.get_relative_itemid(subitem_id) + se_eval.get_relative_itemid('..suspend') + +Statt dieser Funktion kann se_eval.get_relative_itemproperty('..suspend', 'path') +verwendet werden. Alternativ ist es auch möglich, die aus SmarthomeNG bekannte Syntax +``sh...suspend.property.path`` zu verwenden. Insofern hat diese Funktion nur wenig Relevanz. + +**Item-Wert relativ zum Regelwerk-Item ermitteln** +*Der Wert eines Items relativ zur Item-Id des Regelwerk-Items wird ermittelt.* + +.. code-block:: yaml + + se_eval.get_relative_itemvalue(subitem_id) + se_eval.get_relative_itemvalue('..suspend') + +Statt dieser Funktion kann se_eval.get_relative_itemproperty('..suspend', 'value') +verwendet werden. Alternativ ist es auch möglich, die aus SmarthomeNG bekannte Syntax +``sh...suspend.property.value`` oder ``sh...suspend()`` zu verwenden. +Insofern hat diese Funktion nur wenig Relevanz. + +**Item-Property relativ zum Regelwerk-Item ermitteln** +*Eine Property eines Items relativ zur Item-Id des Regelwerk-Items wird ermittelt.* + +.. code-block:: yaml + + se_eval.get_relative_itemproperty(subitem_id, property) + se_eval.get_relative_itemproperty('..suspend', 'last_change_age') + +Welche Werte für ``property`` genutzt werden können, ist hier nachzulesen: +`Item Properties `_). +Prinzipiell ist auch diese Funktion nicht zwingend zu verwenden, da sie ebenfalls +durch bekannt Syntax ersetzt werden kann: ``sh...suspend.property.last_change_age`` .. rubric:: Variablen :name: speziellevariablen @@ -141,7 +145,7 @@ Bedarf aber auch für andere Zwecke, welche auch immer, genutzt werden. **current.action_name:** *Der Name der Aktion, in der auf die Variable zugegriffen wird* -Der Name der aktuellen Aktion, also der Teil hinter ``se_action_`` kann für +Der Name der aktuellen Aktion, also der Teil hinter ``se_action_`` kann für das Setzen oder Eruieren von Werten herangezogen werden. Dies macht insbesondere dann Sinn, wenn auf Setting-Items in der Aktion Bezug genommen wird. Durch diese Variable ist es so je nach Setup möglich, ein Template für sämtliche diff --git a/stateengine/user_doc/user_doc3.rst b/stateengine/user_doc/user_doc3.rst index 38bf251fd..04f6d2098 100755 --- a/stateengine/user_doc/user_doc3.rst +++ b/stateengine/user_doc/user_doc3.rst @@ -75,6 +75,10 @@ und Aktionen folgen auf den nächsten Seiten. .. rubric:: Beispiel se_eval :name: beispielregelwerkeval +se_eval ist für Sonderfälle und etwas komplexere Konfiurationen sinnvoll, kann aber +im ersten Durchlauf ignoriert werden. Es wird daher empfohlen, als Beginner +dieses Beispiel einfach zu überspringen ;) + Im Beispiel wird durch ``se_eval_brightness`` das Item für den Check von Bedingungen bekannt gemacht. Aufgrund der angegebenen Funktion wird das Item abhängig vom aktuellen Zustandsnamen eruiert. Da Zustand_Eins den Namen "sueden" diff --git a/stateengine/user_doc/user_doc5.rst b/stateengine/user_doc/user_doc5.rst index 32a6f1bbc..840c5b1ba 100755 --- a/stateengine/user_doc/user_doc5.rst +++ b/stateengine/user_doc/user_doc5.rst @@ -71,7 +71,7 @@ des StateEngine Items eingesetzt werden kann. Der Name einer Bedingung setzt sich aus folgenden drei Teilen zusammen, die jeweils mit einem Unterstrich "_" getrennt werden: -- ``se``: eindeutiger Prefix, um dem Plugin zugeordnet zu werden +- ``se_``: eindeutiger Prefix, um dem Plugin zugeordnet zu werden - ````: siehe unten. Beispiel: min = der Wert des muss mindestens dem beim Attribut angegebenen Wert entsprechen. - ````: Hier wird entweder das im Regelwerk-Item mittels ``se_item_`` deklarierte Item oder eine besondere Bedingung (siehe unten) referenziert. @@ -87,7 +87,7 @@ auf höchster Ebene des StateEngine Items (also z.B. rules) deklariert werden. .. code-block:: yaml rules: - se_template_test: eval:se_eval.get_relative_itemvalue('..settings.max_bright') - 20 + se_template_test: eval:sh...settings.max_bright' - 20 se_item_specialitem: meinitem.specialitem # declare an existing item here state_one: diff --git a/stateengine/user_doc/user_doc8.rst b/stateengine/user_doc/user_doc8.rst index c58a2a7a2..bab2bf98e 100755 --- a/stateengine/user_doc/user_doc8.rst +++ b/stateengine/user_doc/user_doc8.rst @@ -6,7 +6,7 @@ Beispiel Die wichtigsten Elemente und Funktionen des Plugins sind soweit vorgestellt. Zusätzliche Features werden abschließend unter -:ref:`Advanced` zusammengefasst. +:ref:`Advanced` und den folgenden Kapiteln zusammengefasst. Zusammenfassend soll in diesem Beispiel die Automatisierung eines Raffstores gezeigt werden. Es werden Funktionen genutzt, die erst im Advanced-Teil @@ -633,10 +633,10 @@ weshalb diese Vorgehensweise erst ab 1.5.1 empfohlen wird. on_enter_or_stay: se_action_sollwert: - 'function: set' - - "to: eval:sh.return_item(se_eval.get_relative_itemid('..settings.{}.sollwert'.format(se_eval.get_relative_itemvalue('..state_name').lower())))()" + - "to: eval:se_eval.get_relative_itemvalue('..settings.{}.sollwert'.format(se_eval.get_relative_itemvalue('..state_name').lower()))" se_action_prio: - 'function: set' - - "to: eval:sh.return_item(se_eval.get_relative_itemid('..settings.{}.prio'.format(se_eval.get_relative_itemvalue('..state_name').lower())))()" + - "to: eval:se_eval.get_relative_itemvalue('..settings.{}.prio'.format(se_eval.get_relative_itemvalue('..state_name').lower()))" Außerdem werden pro Aktortyp entsprechende Setting Items angelegt. Je nach Bedarf kann dann auf diese zurückgegriffen werden. diff --git a/stateengine/user_doc/user_doc9.rst b/stateengine/user_doc/user_doc9.rst index a9239392f..3dea6d570 100755 --- a/stateengine/user_doc/user_doc9.rst +++ b/stateengine/user_doc/user_doc9.rst @@ -182,7 +182,7 @@ beim nächsten Durchlauf eventuell durch andere Zustände überschrieben. se_item_retrigger: ..rules se_item_suspend_end: ..suspend_end se_item_suspend_active: ..settings.suspend_active - se_suspend_time: eval:se_eval.get_relative_itemvalue('..settings.suspendduration') * 60 + se_suspend_time: eval:sh...settings.suspendduration * 60 eval_trigger: - ..manuell @@ -216,7 +216,7 @@ beim nächsten Durchlauf eventuell durch andere Zustände überschrieben. - 'to: ' enter_manuell: - se_value_trigger_source: eval:se_eval.get_relative_itemid('..manuell') + se_value_trigger_source: eval:sh...manuell.property.path se_value_suspend_active: True enter_stay: From 10b126b8229764a96dcb8936782c733e625f0486 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sat, 27 Jul 2019 17:33:40 +0200 Subject: [PATCH 177/200] Update README.md --- stateengine/README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/stateengine/README.md b/stateengine/README.md index 7b2ba5104..cf02eaccb 100755 --- a/stateengine/README.md +++ b/stateengine/README.md @@ -17,7 +17,8 @@ http://URL/index.php?page=widgets/stateengine.example * Some problem fixes * Log improvements * Docu improvements -* Leave actions can now immediately triggered as soon as current state gets left (parameter: instant_leaveactions) +* Leave actions can now be immediately triggered as soon as current state gets left (parameter: instant_leaveactions) +* Standard shng evals with relative items can now be used (e.g. sh...() + sh...test.property.last_change_age) ### v1.6.0 * Get relative items at startup for all se_item_* attributes From 766b4b5d9a7a4028d08aefe1d7c4701f18dc6611 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 28 Jul 2019 22:32:51 +0200 Subject: [PATCH 178/200] fix suspend state --- stateengine/StateEngineAction.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stateengine/StateEngineAction.py b/stateengine/StateEngineAction.py index 984f5cfec..3e7a6bc10 100755 --- a/stateengine/StateEngineAction.py +++ b/stateengine/StateEngineAction.py @@ -669,7 +669,7 @@ def retrigger_get_value(self, value): return se_item def suspend_execute(self): - suspend_item = self.__value[0] + suspend_item = self._abitem.return_item(self.__value[0]) if self._abitem.get_update_trigger_source() == self.__value[1]: # triggered by manual-item: Update suspend item if suspend_item(): From efbd01696e421826ef63bfd74e53df75e3ec88a2 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sun, 28 Jul 2019 23:17:42 +0200 Subject: [PATCH 179/200] fix se_name --- stateengine/StateEngineState.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/stateengine/StateEngineState.py b/stateengine/StateEngineState.py index 2aaad71d0..8e83fa025 100755 --- a/stateengine/StateEngineState.py +++ b/stateengine/StateEngineState.py @@ -195,11 +195,11 @@ def __fill(self, item_state, recursion_depth): # if an item name is given, or if we do not have a name after returning from all recursions, # use item name as state name - if str(item_state) != item_state.property.path or (self.__name == "" and recursion_depth == 0): - self.__name = str(item_state).split('.')[-1] - self.__text.set(self.__name) if "se_name" in item_state.conf: self.__text.set_from_attr(item_state, "se_name", self.__text.get(None)) + elif str(item_state) != item_state.property.path or (self.__name == "" and recursion_depth == 0): + self.__name = str(item_state).split('.')[-1] + self.__text.set(self.__name) elif self.__text.is_empty() and recursion_depth == 0: self.__text.set("value:" + self.__name) From 93a4aac18a14b456512ae2f6b9b5993ac88786d3 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Mon, 29 Jul 2019 18:12:31 +0200 Subject: [PATCH 180/200] re-fix suspend item --- stateengine/StateEngineAction.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/stateengine/StateEngineAction.py b/stateengine/StateEngineAction.py index 3e7a6bc10..984f5cfec 100755 --- a/stateengine/StateEngineAction.py +++ b/stateengine/StateEngineAction.py @@ -669,7 +669,7 @@ def retrigger_get_value(self, value): return se_item def suspend_execute(self): - suspend_item = self._abitem.return_item(self.__value[0]) + suspend_item = self.__value[0] if self._abitem.get_update_trigger_source() == self.__value[1]: # triggered by manual-item: Update suspend item if suspend_item(): From f1cef687f5332b96d491c2b2a4b2a76dcf1197c9 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Mon, 29 Jul 2019 22:31:31 +0200 Subject: [PATCH 181/200] re-re-fix suspend item, improve code --- stateengine/StateEngineAction.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/stateengine/StateEngineAction.py b/stateengine/StateEngineAction.py index 984f5cfec..cc2b97e19 100755 --- a/stateengine/StateEngineAction.py +++ b/stateengine/StateEngineAction.py @@ -669,10 +669,10 @@ def retrigger_get_value(self, value): return se_item def suspend_execute(self): - suspend_item = self.__value[0] + suspend_item = self._abitem.return_item(self.__value[0]) if self._abitem.get_update_trigger_source() == self.__value[1]: # triggered by manual-item: Update suspend item - if suspend_item(): + if suspend_item.property.value: self._log_debug("Set '{0}' to '{1}' (Force)", suspend_item.property.path, False) suspend_item(False) self._log_debug("Set '{0}' to '{1}'.", suspend_item.property.path, True) @@ -682,7 +682,7 @@ def suspend_execute(self): # determine remaining suspend time and write to variable item.suspend_remaining suspend_time = self._abitem.get_variable("item.suspend_time") - suspend_over = suspend_item.age() + suspend_over = suspend_item.property.last_change_age suspend_remaining = int(suspend_time - suspend_over + 0.5) # adding 0.5 causes round up ... self._abitem.set_variable("item.suspend_remaining", suspend_remaining) self._log_debug("Updated variable 'item.suspend_remaining' to {0}", suspend_remaining) From 11b32173e4eb0e5d83937582b0e377ed55f4e8f0 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Tue, 30 Jul 2019 10:36:22 +0200 Subject: [PATCH 182/200] Allow item instead of string in suspend declaration and others --- stateengine/StateEngineItem.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/stateengine/StateEngineItem.py b/stateengine/StateEngineItem.py index 547709126..d2d28dc3c 100755 --- a/stateengine/StateEngineItem.py +++ b/stateengine/StateEngineItem.py @@ -590,6 +590,9 @@ def __startup_delay_callback(self, item, caller=None, source=None, dest=None): # - item_id = "..threedots" will return item "my.threedots" # - item_id = "..threedots.further.down" will return item "my.threedots.further.down" def return_item(self, item_id: str): + if not isinstance(item_id, str): + self.__logger.info("'{0}' should be defined as string. Check your item config! Everything might run smoothely, nevertheless.".format(item_id)) + return item_id if not item_id.startswith("."): item = self.items.return_item(item_id) if item is None: From 13329b2886698f97679a4f00ba8204c0b829d9c8 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Wed, 31 Jul 2019 21:48:09 +0200 Subject: [PATCH 183/200] Warn if se_item or se_eval is wrong --- stateengine/StateEngineCondition.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/stateengine/StateEngineCondition.py b/stateengine/StateEngineCondition.py index f4ee25178..20854dc2c 100755 --- a/stateengine/StateEngineCondition.py +++ b/stateengine/StateEngineCondition.py @@ -56,8 +56,14 @@ def __repr__(self): # value: Value for function def set(self, func, value): if func == "se_item": + if ":" in value: + self._log_warning("Your item configuration '{0}' is wrong! Define a plain (relative) item!", value) + _, _, value = value.partition(":") self.__item = self._abitem.return_item(value) elif func == "se_eval": + if ":" in value: + self._log_warning("Your eval configuration '{0}' is wrong! Define a plain eval term!", value) + _, _, value = value.partition(":") self.__eval = value if func == "se_value": self.__value.set(value, self.__name) From 099e59ce72516f718ac9214367d4f2d4528ae377 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Fri, 2 Aug 2019 18:19:08 +0200 Subject: [PATCH 184/200] improved documentation --- stateengine/user_doc/user_doc5.rst | 8 ++++---- stateengine/user_doc/user_doc6.rst | 6 ++++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/stateengine/user_doc/user_doc5.rst b/stateengine/user_doc/user_doc5.rst index 840c5b1ba..f993d003e 100755 --- a/stateengine/user_doc/user_doc5.rst +++ b/stateengine/user_doc/user_doc5.rst @@ -58,11 +58,11 @@ Die folgenden Regeln kommen zur Anwendung: Der zu vergleichende Wert einer Bedingung kann auf folgende Arten definiert werden: -- statischer Wert (also z.B. 500 Lux) -- Item (beispielsweise ein Item namens settings.helligkeitsschwellwert) -- Eval-Funktion (siehe auch `eval Ausdrücke `_) +- statischer Wert (also z.B. 500 Lux). Wird angegegeben mit ``value:500``, wobei das value: auch weggelassen werden kann. +- Item (beispielsweise ein Item namens settings.helligkeitsschwellwert). Wird angegeben mit ``item:settings.helligkeitsschwellwert`` +- Eval-Funktion (siehe auch `eval Ausdrücke `_). Wird angegeben mit ``eval:1*2*se_eval.get_relative_itemvalue('..bla')`` - Template: eine Vorlage, z.B. eine eval Funktion, die immer wieder innerhalb -des StateEngine Items eingesetzt werden kann. +des StateEngine Items eingesetzt werden kann. Angegeben durch ``template:`` .. rubric:: Name der Bedingung diff --git a/stateengine/user_doc/user_doc6.rst b/stateengine/user_doc/user_doc6.rst index 52dcbc4a5..390211f6e 100755 --- a/stateengine/user_doc/user_doc6.rst +++ b/stateengine/user_doc/user_doc6.rst @@ -113,6 +113,12 @@ Wert eines Items oder als Ergebnis der Ausführung einer Funktion festgelegt werden. Wichtig ist, dass bei z.B. ``to: item:`` nach dem item: kein Leerzeichen eingesetzt werden darf! +Wie bei den Bedingungen sind die entsprechenden Prefixe value, item, eval zu nutzen: +- statischer Wert, beispielsweise ``value:500``, wobei das value: auch weggelassen werden kann. +- Item, z.B. ``item:settings.helligkeitsschwellwert`` +- Eval-Funktion wie ``eval:1*2*se_eval.get_relative_itemvalue('..bla')`` +- Template: eine Vorlage, z.B. ``template:`` + Über den optionalen Parameter ``force: True`` kann eine Item-Aktualisierung erzwungen werden, auch wenn sich der Wert nicht ändert. Damit erfolgt auf jeden Fall eine From f065a04022dcfaeeec67660335d92f7e93b2de56 Mon Sep 17 00:00:00 2001 From: Bernd Meiners Date: Sat, 3 Aug 2019 12:17:44 +0200 Subject: [PATCH 185/200] report a failure while initializing telegram plugin with invalid token --- telegram/__init__.py | 47 ++++++++++++++++++++++++-------------------- 1 file changed, 26 insertions(+), 21 deletions(-) diff --git a/telegram/__init__.py b/telegram/__init__.py index 3c0b762e0..a69f83ff9 100644 --- a/telegram/__init__.py +++ b/telegram/__init__.py @@ -103,28 +103,33 @@ def __init__(self, sh, *args, **kwargs): # the Updater class continuously fetches new updates from telegram and passes them on to the Dispatcher class. - self._updater = Updater(token=self._token) - self._bot = self._updater.bot + try: + self._updater = Updater(token=self._token) + self._bot = self._updater.bot - self.logger.info("Telegram bot is listening: {0}".format(self._bot.getMe())) - - # Dispatcher that handles the updates and dispatches them to the handlers. - dispatcher = self._updater.dispatcher - dispatcher.add_error_handler(self.eHandler) - dispatcher.add_handler(CommandHandler('time', self.cHandler_time)) - dispatcher.add_handler(CommandHandler('help', self.cHandler_help)) - dispatcher.add_handler(CommandHandler('hide', self.cHandler_hide)) - dispatcher.add_handler(CommandHandler('list', self.cHandler_list)) - dispatcher.add_handler(CommandHandler('info', self.cHandler_info)) - dispatcher.add_handler(CommandHandler('start', self.cHandler_start)) - dispatcher.add_handler(CommandHandler('lo', self.cHandler_lo)) - dispatcher.add_handler(CommandHandler('tr', self.cHandler_tr, pass_args=True)) - - dispatcher.add_handler( MessageHandler(Filters.text, self.mHandler)) - self.init_webinterface() - - self.logger.debug("init done") - self._init_complete = True + self.logger.info("Telegram bot is listening: {0}".format(self._bot.getMe())) + except TelegramError as e: + # catch Unauthorized errors due to an invalid token + self.logger.error("Unable to start up Telegram conversation. Maybe an invalid token? {}".format(e)) + else: + + # Dispatcher that handles the updates and dispatches them to the handlers. + dispatcher = self._updater.dispatcher + dispatcher.add_error_handler(self.eHandler) + dispatcher.add_handler(CommandHandler('time', self.cHandler_time)) + dispatcher.add_handler(CommandHandler('help', self.cHandler_help)) + dispatcher.add_handler(CommandHandler('hide', self.cHandler_hide)) + dispatcher.add_handler(CommandHandler('list', self.cHandler_list)) + dispatcher.add_handler(CommandHandler('info', self.cHandler_info)) + dispatcher.add_handler(CommandHandler('start', self.cHandler_start)) + dispatcher.add_handler(CommandHandler('lo', self.cHandler_lo)) + dispatcher.add_handler(CommandHandler('tr', self.cHandler_tr, pass_args=True)) + + dispatcher.add_handler( MessageHandler(Filters.text, self.mHandler)) + self.init_webinterface() + + self.logger.debug("init done") + self._init_complete = True def __call__(self, msg, chat_id=None): """ From c6f5b9c15d6435410da07ef6e053f6e986fdd396 Mon Sep 17 00:00:00 2001 From: bmxp Date: Sat, 3 Aug 2019 18:31:27 +0200 Subject: [PATCH 186/200] telegram plugin: updated version number --- telegram/__init__.py | 2 +- telegram/plugin.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/telegram/__init__.py b/telegram/__init__.py index a69f83ff9..603a760ab 100644 --- a/telegram/__init__.py +++ b/telegram/__init__.py @@ -65,7 +65,7 @@ class Telegram(SmartPlugin): - PLUGIN_VERSION = "1.6.0" + PLUGIN_VERSION = "1.6.1" _items = [] # Storage Array for all items using telegram attributes ITEM_ATTR_MESSAGE _items_info = {} # dict used whith the info-command: key = attribute_value, val= item_list ITEM_ATTR_INFO diff --git a/telegram/plugin.yaml b/telegram/plugin.yaml index 85c9c96cd..eeb77443b 100644 --- a/telegram/plugin.yaml +++ b/telegram/plugin.yaml @@ -12,7 +12,7 @@ plugin: documentation: http://smarthomeng.de/user/plugins/telegram/user_doc.html # support: https://knx-user-forum.de/forum/supportforen/smarthome-py - version: 1.6.0 # Plugin version + version: 1.6.1 # Plugin version sh_minversion: 1.3 # minimum shNG version to use this plugin # sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) multi_instance: True # plugin supports multi instance From 239ef9a965d14d6c65c2e2deeb4ee0f795b28433 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Sat, 3 Aug 2019 21:54:03 +0200 Subject: [PATCH 187/200] Update StateEngineValue.py improve logging --- stateengine/StateEngineValue.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stateengine/StateEngineValue.py b/stateengine/StateEngineValue.py index b26084e0d..0f60ca329 100755 --- a/stateengine/StateEngineValue.py +++ b/stateengine/StateEngineValue.py @@ -314,11 +314,11 @@ def __do_cast(self, value): else: try: _newvalue = self.__cast_func(value) - except Exception: + except Exception as ex: if any(x in value for x in ['sh.', '_eval', '(']): raise ValueError("You most likely forgot to prefix your expression with 'eval:'") else: - raise ValueError("Not possible to cast") + raise ValueError("Not possible to cast: {}".format(ex)) if value in self.__listorder: self.__listorder[self.__listorder.index(value)] = _newvalue value = _newvalue From 02e3308654a2ac6e4b99eacce317cb300dc4523d Mon Sep 17 00:00:00 2001 From: onkelandy Date: Mon, 5 Aug 2019 02:14:29 +0200 Subject: [PATCH 188/200] Webinterface including fancy vis!! --- stateengine/README.md | 4 + stateengine/StateEngineAction.py | 119 +++++++++- stateengine/StateEngineActions.py | 21 +- stateengine/StateEngineCondition.py | 15 +- stateengine/StateEngineConditionSet.py | 9 +- stateengine/StateEngineConditionSets.py | 9 + stateengine/StateEngineItem.py | 44 +++- stateengine/StateEngineState.py | 35 ++- stateengine/StateEngineValue.py | 14 +- stateengine/StateEngineWebif.py | 302 ++++++++++++++++++++++++ stateengine/__init__.py | 52 +++- stateengine/plugin.yaml | 16 +- stateengine/requirements.txt | 1 + stateengine/webif/static/img/vis.png | Bin 0 -> 16454 bytes stateengine/webif/templates/index.html | 48 ++-- stateengine/webif/templates/visu.html | 19 ++ 16 files changed, 670 insertions(+), 38 deletions(-) create mode 100755 stateengine/StateEngineWebif.py create mode 100644 stateengine/requirements.txt create mode 100644 stateengine/webif/static/img/vis.png create mode 100755 stateengine/webif/templates/visu.html diff --git a/stateengine/README.md b/stateengine/README.md index cf02eaccb..edec584b9 100755 --- a/stateengine/README.md +++ b/stateengine/README.md @@ -13,6 +13,10 @@ Copy stateengine.example.html from the sv_widgets folder to your smartvisu/dropi http://URL/index.php?page=widgets/stateengine.example ## Changelog +### v1.6.2 +* Further fixes and improvements +* Webinterface including StateEngine visualization + ### v1.6.1 * Some problem fixes * Log improvements diff --git a/stateengine/StateEngineAction.py b/stateengine/StateEngineAction.py index cc2b97e19..d159d4fc6 100755 --- a/stateengine/StateEngineAction.py +++ b/stateengine/StateEngineAction.py @@ -59,7 +59,7 @@ def __init__(self, abitem, name: str): self._name = name self.__delay = StateEngineValue.SeValue(self._abitem, "delay") self.__repeat = None - self.__conditionset = StateEngineValue.SeValue(self._abitem, "conditionset", True, "str") + self.conditionset = StateEngineValue.SeValue(self._abitem, "conditionset", True, "str") self.__mode = StateEngineValue.SeValue(self._abitem, "mode", True, "str") self.__order = StateEngineValue.SeValue(self._abitem, "order", False, "num") self._scheduler_name = None @@ -79,7 +79,7 @@ def update_order(self, value): self.__order.set(value) def update_conditionsets(self, value): - self.__conditionset.set(value) + self.conditionset.set(value) def update_modes(self, value): self.__mode.set(value) @@ -93,8 +93,8 @@ def write_to_logger(self): self.__delay.write_to_logger() if self.__repeat is not None: self.__repeat.write_to_logger() - if self.__conditionset is not None: - self.__conditionset.write_to_logger() + if self.conditionset is not None: + self.conditionset.write_to_logger() if self.__mode is not None: self.__mode.write_to_logger() self.__order.write_to_logger() @@ -102,10 +102,11 @@ def write_to_logger(self): # Execute action (considering delay, etc) # is_repeat: Inidicate if this is a repeated action without changing the state # item_allow_repeat: Is repeating actions generally allowed for the item? - def execute(self, is_repeat: bool, allow_item_repeat: bool): + # state: state item that triggered the action + def execute(self, is_repeat: bool, allow_item_repeat: bool, state: str): if not self._can_execute(): return - condition_to_meet = None if self.__conditionset.is_empty() else self.__conditionset.get() + condition_to_meet = None if self.conditionset.is_empty() else self.conditionset.get() condition_met = True if condition_to_meet is None else False condition_to_meet = condition_to_meet if isinstance(condition_to_meet, list) else [condition_to_meet] current_condition = self._abitem.get_lastconditionset_id() @@ -124,16 +125,30 @@ def execute(self, is_repeat: bool, allow_item_repeat: bool): return if is_repeat: + _key1 = ['{}'.format(state.id), 'actions_stay', '{}'.format(self._name), 'repeat'] + _key2 = ['{}'.format(state.id), 'actions_enter_or_stay', '{}'.format(self._name), 'repeat'] if self.__repeat is None: if allow_item_repeat: repeat_text = " Repeat allowed by item configuration." + result = self._abitem.update_webif(_key1, True) + if result is False: + self._abitem.update_webif(_key2, True) else: self._log_info("Action '{0}': Repeat denied by item configuration.", self._name) + result = self._abitem.update_webif(_key1, False) + if result is False: + self._abitem.update_webif(_key2, False) return elif self.__repeat.get(): repeat_text = " Repeat allowed by action configuration." + result = self._abitem.update_webif(_key1, True) + if result is False: + self._abitem.update_webif(_key2, True) else: self._log_info("Action '{0}': Repeat denied by action configuration.", self._name) + result = self._abitem.update_webif(_key1, False) + if result is False: + self._abitem.update_webif(_key2, False) return else: repeat_text = "" @@ -153,18 +168,41 @@ def execute(self, is_repeat: bool, allow_item_repeat: bool): delay = 0 if self.__delay.is_empty() else self.__delay.get() actionname = "Action '{0}'".format(self._name) if delay == 0 else "Delay Timer '{0}'".format( self._scheduler_name) - + _delay_info = '0' if delay == 0: self._execute(actionname, self._name, repeat_text) elif delay is None: self._log_warning("Action'{0}: Ignored because of errors while determining the delay!", self._name) + _delay_info = 'Error' elif delay < 0: self._log_warning("Action'{0}: Ignored because of delay is negative!", self._name) + _delay_info = 'Error' else: self._log_info("Action '{0}: Add {1} second timer '{2}' for delayed execution. {3}", self._name, delay, self._scheduler_name, repeat_text) next_run = self.shtime.now() + datetime.timedelta(seconds=delay) + _delay_info = delay self._sh.scheduler.add(self._scheduler_name, self._execute, value={'actionname': actionname, 'namevar': self._name}, next=next_run) + try: + _key = ['{}'.format(state.id), 'actions_stay', '{}'.format(self._name), 'delay'] + self._abitem.update_webif(_key, str(_delay_info)) + except Exception: + pass + try: + _key = ['{}'.format(state.id), 'actions_enter', '{}'.format(self._name), 'delay'] + self._abitem.update_webif(_key, str(_delay_info)) + except Exception: + pass + try: + _key = ['{}'.format(state.id), 'actions_enter_or_stay', '{}'.format(self._name), 'delay'] + self._abitem.update_webif(_key, str(_delay_info)) + except Exception: + pass + try: + _key = ['{}'.format(state.id), 'actions_leave', '{}'.format(self._name), 'delay'] + self._abitem.update_webif(_key, str(_delay_info)) + except Exception: + pass # set the action based on a set_(action_name) attribute # value: Value of the set_(action_name) attribute @@ -180,6 +218,9 @@ def complete(self, item_state): def _can_execute(self): return True + def get(self): + return True + # Really execute the action (needs to be implemented in derived classes) def _execute(self, actionname: str, repeat_text: str = ""): raise NotImplementedError("Class {} doesn't implement _execute()".format(self.__class__.__name__)) @@ -300,6 +341,13 @@ def _execute_set_add_remove(self, actionname, repeat_text, item, value): # noinspection PyCallingNonCallable item(value, caller=self._caller, source=self._parent) + def get(self): + try: + item = str(self.__item.property.path) + except Exception: + item = str(self.__item) + return {'function': str(self.__function), 'item': item, 'value': str(self.__value.get()), 'conditionset': str(self.conditionset.get())} + # Class representing a single "se_setbyattr" action class SeActionSetByattr(SeActionBase): @@ -337,6 +385,9 @@ def _execute(self, actionname: str, namevar: str = "", repeat_text: str = ""): self._log_info("\t{0} = {1}", item.property.path, item.conf[self.__byattr]) item(item.conf[self.__byattr], caller=self._caller, source=self._parent) + def get(self): + return {'function': str(self.__function), 'byattr': str(self.__byattr), 'conditionset': str(self.conditionset.get())} + # Class representing a single "se_trigger" action class SeActionTrigger(SeActionBase): @@ -379,6 +430,9 @@ def _execute(self, actionname: str, namevar: str = "", repeat_text: str = ""): add_logics = 'logics.{}'.format(self.__logic) if not self.__logic.startswith('logics.') else self.__logic self._sh.trigger(add_logics, by=self._caller, source=self._name, value=self.__value) + def get(self): + return {'function': str(self.__function), 'logic': str(self.__logic), 'value': str(self.__value.get()), 'conditionset': str(self.conditionset.get())} + # Class representing a single "se_run" action class SeActionRun(SeActionBase): @@ -441,6 +495,9 @@ def _execute(self, actionname: str, namevar: str = "", repeat_text: str = ""): text = "{0}: Problem calling '{0}': {1}." self._log_error(text.format(actionname, StateEngineTools.get_eval_name(self.__eval), ex)) + def get(self): + return {'function': str(self.__function), 'eval': str(self.__eval), 'conditionset': str(self.conditionset.get())} + # Class representing a single "se_force" action class SeActionForceItem(SeActionBase): @@ -577,6 +634,13 @@ def _execute(self, actionname: str, namevar: str = "", repeat_text: str = ""): # noinspection PyCallingNonCallable self.__item(value, caller=self._caller, source=self._parent) + def get(self): + try: + item = str(self.__item.property.path) + except Exception: + item = str(self.__item) + return {'function': str(self.__function), 'item': item, 'value': str(self.__value.get()), 'conditionset': str(self.conditionset.get())} + # Class representing a single "se_special" action class SeActionSpecial(SeActionBase): @@ -687,6 +751,19 @@ def suspend_execute(self): self._abitem.set_variable("item.suspend_remaining", suspend_remaining) self._log_debug("Updated variable 'item.suspend_remaining' to {0}", suspend_remaining) + def get(self): + try: + value_result = self.__value.property.path + except Exception: + value_result = self.__value + if isinstance(value_result, list): + for i, val in enumerate(value_result): + try: + value_result[i] = val.property.path + except Exception: + pass + return {'function': str(self.__function), 'special': str(self.__special), 'value': str(value_result), 'conditionset': str(self.conditionset.get())} + # Class representing a single "se_add" action class SeActionAddItem(SeActionSetItem): @@ -709,6 +786,13 @@ def _execute_set_add_remove(self, actionname, repeat_text, item, value): # noinspection PyCallingNonCallable item(value, caller=self._caller, source=self._parent) + def get(self): + try: + item = str(self.__item.property.path) + except Exception: + item = str(self.__item) + return {'function': str(self.__function), 'item': item, 'value': str(self.__value.get()), 'conditionset': str(self.conditionset.get())} + # Class representing a single "se_remove" action class SeActionRemoveFirstItem(SeActionSetItem): @@ -735,6 +819,13 @@ def _execute_set_add_remove(self, actionname, repeat_text, item, value): self._log_warning("{0}: Remove first entry '{1}' from '{2}' failed: {3}", actionname, value, item.property.path, ex) item(currentvalue, caller=self._caller, source=self._parent) + def get(self): + try: + item = str(self.__item.property.path) + except Exception: + item = str(self.__item) + return {'function': str(self.__function), 'item': item, 'value': str(self.__value.get()), 'conditionset': str(self.conditionset.get())} + # Class representing a single "se_remove" action class SeActionRemoveLastItem(SeActionSetItem): @@ -763,6 +854,13 @@ def _execute_set_add_remove(self, actionname, repeat_text, item, value): self._log_warning("{0}: Remove last entry '{1}' from '{2}' failed: {3}", actionname, value, item.property.path, ex) item(currentvalue, caller=self._caller, source=self._parent) + def get(self): + try: + item = str(self.__item.property.path) + except Exception: + item = str(self.__item) + return {'function': str(self.__function), 'item': item, 'value': str(self.__value.get()), 'conditionset': str(self.conditionset.get())} + # Class representing a single "se_removeall" action class SeActionRemoveAllItem(SeActionSetItem): @@ -789,3 +887,10 @@ def _execute_set_add_remove(self, actionname, repeat_text, item, value): self._log_warning("{0}: Remove all '{1}' from '{2}' failed: {3}", actionname, value, item.property.path, ex) item(currentvalue, caller=self._caller, source=self._parent) + + def get(self): + try: + item = str(self.__item.property.path) + except Exception: + item = str(self.__item) + return {'function': str(self.__function), 'item': item, 'value': str(self.__value.get()), 'conditionset': str(self.conditionset.get())} diff --git a/stateengine/StateEngineActions.py b/stateengine/StateEngineActions.py index a07744d05..b79bec5a8 100755 --- a/stateengine/StateEngineActions.py +++ b/stateengine/StateEngineActions.py @@ -25,6 +25,13 @@ # Class representing a list of actions class SeActions(StateEngineTools.SeItemChild): + @property + def dict_actions(self): + result = {} + for name in self.__actions: + result.update({name: self.__actions[name].get()}) + return result + # Initialize the set of actions # abitem: parent SeItem instance def __init__(self, abitem): @@ -311,8 +318,9 @@ def complete(self, item_state): # Execute all actions # is_repeat: Inidicate if this is a repeated action without changing the state # item_allow_repeat: Is repeating actions generally allowed for the item? + # state: state item triggering the action # additional_actions: SeActions-Instance containing actions which should be executed, too - def execute(self, is_repeat: bool, allow_item_repeat: bool, additional_actions=None): + def execute(self, is_repeat: bool, allow_item_repeat: bool, state: str, additional_actions=None): actions = [] for name in self.__actions: actions.append((self.__actions[name].get_order(), self.__actions[name])) @@ -320,7 +328,16 @@ def execute(self, is_repeat: bool, allow_item_repeat: bool, additional_actions=N for name in additional_actions.__actions: actions.append((additional_actions.__actions[name].get_order(), additional_actions.__actions[name])) for order, action in sorted(actions, key=lambda x: x[0]): - action.execute(is_repeat, allow_item_repeat) + action.execute(is_repeat, allow_item_repeat, state) + + def get(self): + actions = [] + for name in self.__actions: + actions.append((self.__actions[name].get_order(), {name: self.__actions[name].func})) + finalactions = [] + for order, action in sorted(actions, key=lambda x: x[0]): + finalactions.append(action) + return finalactions # log all actions def write_to_logger(self): diff --git a/stateengine/StateEngineCondition.py b/stateengine/StateEngineCondition.py index 20854dc2c..08db5e395 100755 --- a/stateengine/StateEngineCondition.py +++ b/stateengine/StateEngineCondition.py @@ -22,6 +22,7 @@ from . import StateEngineCurrent from . import StateEngineValue from . import StateEngineEval +from collections import OrderedDict # Class representing a single condition @@ -49,7 +50,7 @@ def __init__(self, abitem, name: str): self.__error = None def __repr__(self): - return "SeCondition item: {}, name {}, eval {}, value {}.".format(self.__item, self.__name, self.__eval, self.__value) + return "'item': {}, 'eval': {}, 'value': {}".format(self.__item, self.__eval, self.__value) # set a certain function to a given value # func: Function to set ('item', 'eval', 'value', 'min', 'max', 'negate', 'agemin', 'agemax' or 'agenegate') @@ -82,6 +83,18 @@ def set(self, func, value): elif func != "se_item" and func != "se_eval": self._log_warning("Function '{0}' is no valid function! Please check item attribute.", func) + def get(self): + eval_result = str(self.__eval) + if 'SeItem' in eval_result: + eval_result = eval_result.split('SeItem.')[1].split(' ')[0] + if 'SeCurrent' in eval_result: + eval_result = eval_result.split('SeCurrent.')[1].split(' ')[0] + value_result = str(self.__value.get_for_webif()) + result = {'item': str(self.__item), 'eval': eval_result, 'value': value_result, 'min': str(self.__min), + 'max': str(self.__max), 'agemin': str(self.__agemin), 'agemax': str(self.__agemax), + 'negate': str(self.__negate), 'agenegate': str(self.__agenegate)} + return result + # Complete condition (do some checks, cast value, min and max based on item or eval data types) # item_state: item to read from # abitem_object: Related SeItem instance for later determination of current age and current delay diff --git a/stateengine/StateEngineConditionSet.py b/stateengine/StateEngineConditionSet.py index 13e070cd5..fa728f386 100755 --- a/stateengine/StateEngineConditionSet.py +++ b/stateengine/StateEngineConditionSet.py @@ -37,6 +37,13 @@ def id(self): def conditions(self): return self.__conditions + @property + def dict_conditions(self): + result = {} + for name in self.__conditions: + result.update({name: self.__conditions[name].get()}) + return result + # Initialize the condition set # abitem: parent SeItem instance # name: Name of condition set @@ -47,7 +54,7 @@ def __init__(self, abitem, name, id): self.__conditions = {} def __repr__(self): - return "SeConditionSet for condition name {}: {}.".format(self.__name, self.__conditions) + return "{}".format(self.__conditions) # Update condition set # item: item containing settings for condition set diff --git a/stateengine/StateEngineConditionSets.py b/stateengine/StateEngineConditionSets.py index 2bbe8f345..c7f2bea12 100755 --- a/stateengine/StateEngineConditionSets.py +++ b/stateengine/StateEngineConditionSets.py @@ -32,10 +32,19 @@ def __init__(self, abitem): super().__init__(abitem) self.__condition_sets = OrderedDict() + def __repr__(self): + return "{}".format(self.get()) + # Return number of condition sets in list def count(self): return len(self.__condition_sets) + def get(self): + result = OrderedDict() + for name in self.__condition_sets: + result.update({name: self.__condition_sets[name].dict_conditions}) + return result + # Add/update a condition set # name: Name of condition set # item: item containing settings for condition set diff --git a/stateengine/StateEngineItem.py b/stateengine/StateEngineItem.py index d2d28dc3c..e3645b904 100755 --- a/stateengine/StateEngineItem.py +++ b/stateengine/StateEngineItem.py @@ -19,6 +19,7 @@ # along with this plugin. If not, see . ######################################################################### import datetime +from collections import OrderedDict from . import StateEngineTools from .StateEngineLogger import SeLogger from . import StateEngineState @@ -45,6 +46,10 @@ def variables(self): def templates(self): return self.__templates + @property + def webif_infos(self): + return self.__webif_infos + # return instance of smarthome.py class @property def sh(self): @@ -55,6 +60,22 @@ def sh(self): def logger(self): return self.__logger + @property + def laststate(self): + return self.__laststate_item_id.property.value + + @property + def lastconditionset(self): + return self.__lastconditionset_item_id.property.value + + @property + def laststate_name(self): + return self.__laststate_item_name.property.value + + @property + def lastconditionset_name(self): + return self.__lastconditionset_item_name.property.value + # Constructor # smarthome: instance of smarthome.py # item: item to use @@ -95,6 +116,7 @@ def __init__(self, smarthome, item): self.__states = [] self.__templates = {} + self.__webif_infos = OrderedDict() self.__repeat_actions = StateEngineValue.SeValue(self, "Repeat actions if state is not changed", False, "bool") self.__repeat_actions.set_from_attr(self.__item, "se_repeat_actions", True) @@ -156,6 +178,26 @@ def updatetemplates(self, template, value): else: self.__templates[template] = value + def update_webif(self, key, value): + def _nested_set(dic, keys, val): + for nestedkey in keys[:-1]: + dic = dic.setdefault(nestedkey, {}) + dic[keys[-1]] = val + def _nested_test(dic, keys): + for nestedkey in keys[:-2]: + dic = dic.setdefault(nestedkey, {}) + return dic[keys[-2]] + if isinstance(key, list): + try: + _nested_test(self.__webif_infos, key) + _nested_set(self.__webif_infos, key, value) + return True + except Exception: + return False + else: + self.__webif_infos[key] = value + return True + # Find the state, matching the current conditions and perform the actions of this state # caller: Caller that triggered the update # noinspection PyCallingNonCallable,PyUnusedLocal @@ -475,7 +517,7 @@ def __write_to_log(self): # log states for state in self.__states: state.write_to_log() - + state.write_webif() # endregion # region Methods for CLI commands ********************************************************************************** diff --git a/stateengine/StateEngineState.py b/stateengine/StateEngineState.py index 8e83fa025..ade4c0b2b 100755 --- a/stateengine/StateEngineState.py +++ b/stateengine/StateEngineState.py @@ -20,8 +20,10 @@ ######################################################################### from . import StateEngineTools from . import StateEngineConditionSets +from . import StateEngineCondition from . import StateEngineActions from . import StateEngineValue +from collections import OrderedDict # Class representing an object state, consisting of name, conditions to be met and configured actions for state @@ -124,25 +126,52 @@ def write_to_log(self): self._log_decrease_indent() self._log_decrease_indent() + def write_webif(self): + self._abitem.update_webif(self.id, {'name': self.name, 'conditionsets': self.__conditions.get(), + 'actions_enter': self.__actions_enter.dict_actions, + 'actions_enter_or_stay': self.__actions_enter_or_stay.dict_actions, + 'actions_stay': self.__actions_stay.dict_actions, + 'actions_leave': self.__actions_leave.dict_actions, + 'leave': False, 'enter': False, 'stay': False}) + #self._log_debug('WebIF Info: {}', self._abitem.webif_infos) + # run actions when entering the state # item_allow_repeat: Is repeating actions generally allowed for the item? def run_enter(self, allow_item_repeat: bool): self._log_increase_indent() - self.__actions_enter.execute(False, allow_item_repeat, self.__actions_enter_or_stay) + _key_leave = ['{}'.format(self.id), 'leave'] + _key_stay = ['{}'.format(self.id), 'stay'] + _key_enter = ['{}'.format(self.id), 'enter'] + self._abitem.update_webif(_key_leave, False) + self._abitem.update_webif(_key_stay, False) + self._abitem.update_webif(_key_enter, True) + self.__actions_enter.execute(False, allow_item_repeat, self, self.__actions_enter_or_stay) self._log_decrease_indent() # run actions when staying at the state # item_allow_repeat: Is repeating actions generally allowed for the item? def run_stay(self, allow_item_repeat: bool): self._log_increase_indent() - self.__actions_stay.execute(True, allow_item_repeat, self.__actions_enter_or_stay) + _key_leave = ['{}'.format(self.id), 'leave'] + _key_stay = ['{}'.format(self.id), 'stay'] + _key_enter = ['{}'.format(self.id), 'enter'] + self._abitem.update_webif(_key_leave, False) + self._abitem.update_webif(_key_stay, True) + self._abitem.update_webif(_key_enter, False) + self.__actions_stay.execute(True, allow_item_repeat, self, self.__actions_enter_or_stay) self._log_decrease_indent() # run actions when leaving the state # item_allow_repeat: Is repeating actions generally allowed for the item? def run_leave(self, allow_item_repeat: bool): self._log_increase_indent() - self.__actions_leave.execute(False, allow_item_repeat) + _key_leave = ['{}'.format(self.id), 'leave'] + _key_stay = ['{}'.format(self.id), 'stay'] + _key_enter = ['{}'.format(self.id), 'enter'] + self._abitem.update_webif(_key_leave, True) + self._abitem.update_webif(_key_stay, False) + self._abitem.update_webif(_key_enter, False) + self.__actions_leave.execute(False, allow_item_repeat, self) self._log_decrease_indent() # Read configuration from item and populate data in class diff --git a/stateengine/StateEngineValue.py b/stateengine/StateEngineValue.py index 0f60ca329..36c753dac 100755 --- a/stateengine/StateEngineValue.py +++ b/stateengine/StateEngineValue.py @@ -53,7 +53,7 @@ def __init__(self, abitem, name, allow_value_list=False, value_type=None): self.__cast_func = None def __repr__(self): - return "SeValue item {}, function {}, value {}.".format(self._abitem, self.__name, self.get()) + return "{}".format(self.get()) # Indicate of object is empty (neither value nor item nor eval set) def is_empty(self): @@ -156,7 +156,6 @@ def set(self, value, name=""): else: source = "value" field_value = value - if isinstance(source, list): for i, s in enumerate(source): if isinstance(field_value[i], list) and not self.__allow_value_list: @@ -240,6 +239,11 @@ def get(self, default=None): else: return returnvalues + def get_for_webif(self): + returnvalues = self.get() + returnvalues = self.__varname if returnvalues == '' else returnvalues + return returnvalues + def get_type(self): if self.__value is not None: return "value" @@ -374,7 +378,8 @@ def __get_eval(self): self.__eval = self.__parse_relative(self.__eval, 'sh.', ['()', '.property.']) if "stateengine_eval" in self.__eval or "se_eval" in self.__eval: # noinspection PyUnusedLocal - stateengine_eval = se_eval = StateEngineEval.SeEval(self._abitem) + stateengine_eval = StateEngineEval.SeEval(self._abitem) + se_eval = StateEngineEval.SeEval(self._abitem) self._log_debug("Checking eval: {0}.", self.__eval) self._log_increase_indent() try: @@ -400,7 +405,8 @@ def __get_eval(self): if isinstance(val, str): if "stateengine_eval" in val or "se_eval" in val: # noinspection PyUnusedLocal - stateengine_eval = se_eval = StateEngineEval.SeEval(self._abitem) + stateengine_eval = StateEngineEval.SeEval(self._abitem) + se_eval = StateEngineEval.SeEval(self._abitem) try: _newvalue = eval(val) if 'eval:{}'.format(val) in self.__listorder: diff --git a/stateengine/StateEngineWebif.py b/stateengine/StateEngineWebif.py new file mode 100755 index 000000000..88c2ce5f4 --- /dev/null +++ b/stateengine/StateEngineWebif.py @@ -0,0 +1,302 @@ +#!/usr/bin/env python3 +# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab +######################################################################### +# Copyright 2014- Thomas Ernst offline@gmx.net +######################################################################### +# Finite state machine plugin for SmartHomeNG +# +# This plugin is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This plugin is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this plugin. If not, see . +######################################################################### + +import re +from collections import OrderedDict +from . import StateEngineTools +try: + import pydotplus + REQUIRED_PACKAGE_IMPORTED = True +except Exception: + REQUIRED_PACKAGE_IMPORTED = False + + +# Class representing a value for a condition (either value or via item/eval) +class WebInterface(StateEngineTools.SeItemChild): + # Constructor + # abitem: parent SeItem instance + def __init__(self, smarthome, abitem): + super().__init__(abitem) + + if not REQUIRED_PACKAGE_IMPORTED: + self._log_warning("Unable to import Python package 'pydotplus'. Visualizing SE items will not work.") + return 'None' + + self.__states = abitem.webif_infos + self.__name = abitem.id + self.__active_conditionset = abitem.lastconditionset_name + self.__active_state = abitem.laststate + + self.__graph = pydotplus.Dot('StateEngine', graph_type='digraph', splines='false', overlap='scale', compound='false') + self.__nodes = {} + self.__scalefactor = 0.1 + self.__textlimit = 45 + self.__conditionset_count = 0 + + def __repr__(self): + return "WebInterface item: {}, id {}.".format(self.__states, self.__name) if REQUIRED_PACKAGE_IMPORTED else "None" + + def _actionlabel(self, state, type, conditionset, format='table'): + actionlabel = '<' if format == 'table' else '<' + originaltype = type + types = [type] if type == 'actions_leave' else ['actions_enter_or_stay', type] + for type in types: + for action in self.__states[state].get(type): + condition_to_meet = self.__states[state][type][action].get('conditionset') + condition_met = True if condition_to_meet == 'None' else False + condition_to_meet = condition_to_meet if isinstance(condition_to_meet, list) else [condition_to_meet] + _repeat = self.__states[state][type][action].get('repeat') + + for cond in condition_to_meet: + cond = re.compile(cond) + matching = cond.match(conditionset) + condition_met = True if matching else condition_met + fontcolor = "lightgray" if not condition_met or (_repeat is False and originaltype == 'actions_stay') else "black" + additionaltext = " ({} not met)".format(condition_to_meet) if not condition_met\ + else " (no repeat)" if _repeat is False and originaltype == 'actions_stay' else "" + action1 = self.__states[state][type][action].get('function') + if action1 == 'set': + action2 = self.__states[state][type][action].get('item') + action3 = 'to {}'.format(self.__states[state][type][action].get('value')) + elif action1 == 'special': + action2 = self.__states[state][type][action].get('special') + action3 = self.__states[state][type][action].get('value') + else: + action2 = '' + action3 = '' + if format == 'table': + actionlabel += ''.format(fontcolor, action1, action2, action3) + else: + actionlabel += '{} {} {}{}
'.format(fontcolor, action1, action2, action3, additionaltext) + actionlabel += '
{}{}{}
>' if format == 'table' else '>' + #self._log_debug('actionlabel: {}', actionlabel) + return actionlabel + + def _conditionlabel(self, state, conditionset): + condition_tooltip = '' + conditionlist = '<' + + for k, condition in enumerate(self.__states[state]['conditionsets'].get(conditionset)): + condition_dict = self.__states[state]['conditionsets'][conditionset].get(condition) + item_none = condition_dict.get('item') == 'None' + eval_none = condition_dict.get('eval') == 'None' + value_none = condition_dict.get('value') == 'None' + min_none = condition_dict.get('min') == 'None' + max_none = condition_dict.get('max') == 'None' + agemin_none = condition_dict.get('agemin') == 'None' + agemax_none = condition_dict.get('agemax') == 'None' + + for compare in condition_dict: + cond1 = not condition_dict.get(compare) == 'None' + cond2 = not compare == 'item' + cond3 = not compare == 'eval' + cond4 = not compare == 'negate' + cond5 = not compare == 'agenegate' + if cond1 and cond2 and cond3 and cond4 and cond5: + conditionlist += '' + comparison = ">=" if not min_none and compare == "min" else "<=" if not max_none and compare == "max"\ + else "older" if not agemin_none and compare == "agemin"\ + else "younger" if not agemax_none and compare == "agemax"\ + else "!=" if (not value_none and compare == "value" + and condition_dict.get('negate') == 'True') else "==" + conditionlist += '' + conditionlist += '
' + textlength = len(str(condition_dict.get('item'))) + condition_tooltip += '{} '.format(condition_dict.get('item')) if textlength > self.__textlimit else '' + info = str(condition_dict.get('item'))[:self.__textlimit] + '..  ' * (textlength > self.__textlimit) + conditionlist += '{}'.format(info) if not item_none else '' + textlength = len(str(condition_dict.get('eval'))) + condition_tooltip += '{} '.format(condition_dict.get('eval')) if textlength > self.__textlimit else '' + info = str(condition_dict.get('eval'))[:self.__textlimit] + '..  ' * (textlength > self.__textlimit) + conditionlist += '{}'.format(info) if not eval_none and item_none else '' + conditionlist += '{}'.format(comparison) + conditionlist += '"{}"'.format(info) if not item_none and not eval_none else '' + textlength = len(str(condition_dict.get(compare))) + condition_tooltip += '{} '.format(condition_dict.get(compare)) if textlength > self.__textlimit else '' + info = str(condition_dict.get(compare))[:self.__textlimit] + '..  ' * (len(str(condition_dict.get(compare))) > self.__textlimit) + conditionlist += '{}'.format(info) if not condition_dict.get(compare) == 'None' and ( + (eval_none and not item_none) or (not eval_none and item_none)) else '' + conditionlist += ' (negate)' if condition_dict.get('negate') == 'True' and "age" not in compare and not compare == "value" else '' + conditionlist += ' (negate)' if condition_dict.get('agenegate') == 'True' and "age" in compare else '' + conditionlist += '
>' + return conditionlist, condition_tooltip + + def _add_actioncondition(self, state, conditionset, type, new_y, cond1, cond2): + if self.__conditionset_count > 0: + cond3 = conditionset == self.__active_conditionset and state == self.__active_state + color = "gray" if (cond1 and cond2) or (type == 'actions_enter' and self.__states[state].get('enter') is False and cond3)\ + else "green" if cond3 else "red" + try: + self.__nodes['{}_{}_state_actions_enter'.format(state, conditionset)].obj_dict['attributes']['color'] = color + except Exception: + pass + label = 'first enter' if type == 'actions_enter' else 'staying at state' + #self._log_debug('adding enterstate for {}', type) + position = '{},{}!'.format(0.85, new_y) + self.__nodes['{}_{}_state_{}'.format(state, conditionset, type)] = pydotplus.Node('{}_{}_state_{}'.format(state, conditionset, type), style="filled", fillcolor=color, shape="diamond", label=label, pos=position) + self.__graph.add_node(self.__nodes['{}_{}_state_{}'.format(state, conditionset, type)]) + if self.__nodes.get('{}_{}_state_actions_enter_edge'.format(state, conditionset)) is None: + self.__nodes['{}_{}_state_{}_edge'.format(state, conditionset, type)] = pydotplus.Edge(self.__nodes['{}_{}'.format(state, conditionset)], self.__nodes['{}_{}_state_{}'.format(state, conditionset, type)], style='bold', color='blue', taillabel=" True") + self.__graph.add_edge(self.__nodes['{}_{}_state_{}_edge'.format(state, conditionset, type)]) + else: + self.__graph.add_edge(pydotplus.Edge(self.__nodes['{}_{}_state_actions_enter'.format(state, conditionset)], self.__nodes['{}_{}_state_actions_stay'.format(state, conditionset)], style='bold', color='blue', label="False ")) + self.__graph.add_edge(pydotplus.Edge(self.__nodes['{}_{}_state_{}'.format(state, conditionset, type)], self.__nodes['{}_{}_{}'.format(state, conditionset, type)], style='bold', color='blue', taillabel=" True")) + else: + self.__graph.add_edge(pydotplus.Edge(self.__nodes['{}_{}'.format(state, conditionset)], self.__nodes['{}_{}_{}'.format(state, conditionset, type)], style='bold', color='blue', taillabel=" True")) + + def drawgraph(self, filename): + new_y = 2 + previous_state = '' + previous_conditionset = '' + #self._log_debug('STATES {}', self.__states) + for i, state in enumerate(self.__states): + #self._log_debug('Adding state for webif {}', self.__states[state]) + if isinstance(self.__states[state], (OrderedDict, dict)): + conditionsets = self.__states[state].get('conditionsets') + self.__conditionset_count = len(self.__states[state].get('conditionsets')) + color = "green" if state == self.__active_state else "gray" if i > list(self.__states.keys()).index(self.__active_state) else "red" + + new_y -= 1 * self.__scalefactor + position = '{},{}!'.format(0, new_y) + if not i == 0: + condition_node = 'leave' if self.__nodes.get('{}_leave'.format(previous_state)) else list(self.__states[previous_state]['conditionsets'].keys())[-1] + lastnode = self.__nodes['{}_{}'.format(previous_state, condition_node)] + self.__nodes['{}_above'.format(state)] = pydotplus.Node('{}_above'.format(state), pos=position, shape="square", width="0", label="") + self.__graph.add_node(self.__nodes['{}_above'.format(state)]) + position = '{},{}!'.format(0.7, new_y) + self.__nodes['{}_above_right'.format(state)] = pydotplus.Node('{}_above_right'.format(state), pos=position, shape="square", width="0", label="") + self.__graph.add_node(self.__nodes['{}_above_right'.format(state)]) + self.__graph.add_edge(pydotplus.Edge(self.__nodes['{}_above'.format(state)], self.__nodes['{}_above_right'.format(state)], style='bold', color='blue', label="", dir="none")) + self.__graph.add_edge(pydotplus.Edge(self.__nodes['{}_above_right'.format(state)], lastnode, style='bold', color='blue', label="False ", dir="none")) + self.__graph.add_edge(pydotplus.Edge(state, self.__nodes['{}_above'.format(state)], style='bold', color='blue', label="", dir="back")) + new_y -= 1 * self.__scalefactor + position = '{},{}!'.format(0, new_y) + #self._log_debug('state: {} {}',state, position) + self.__nodes[state] = pydotplus.Node(state, pos=position, pin=True, notranslate=True, style="filled", fillcolor=color, shape="ellipse", + label='<
{}
{}
>'.format(state, self.__states[state]['name'])) + position = '{},{}!'.format(0.7, new_y) + self.__nodes['{}_right'.format(state)] = pydotplus.Node('{}_right'.format(state), pos=position, shape="square", width="0", label="") + self.__graph.add_node(self.__nodes[state]) + self.__graph.add_node(self.__nodes['{}_right'.format(state)]) + conditionset_positions = [] + actionlist_enter = '' + actionlist_stay = '' + actionlist_leave = '' + condition_tooltip = '' + for j, conditionset in enumerate(self.__states[state]['conditionsets']): + if len(self.__states[state].get('actions_enter')) > 0 or len(self.__states[state].get('actions_enter_or_stay')) > 0: + actionlist_enter = self._actionlabel(state, 'actions_enter', conditionset, 'list') + + if len(self.__states[state].get('actions_stay')) > 0 or len(self.__states[state].get('actions_enter_or_stay')) > 0: + actionlist_stay = self._actionlabel(state, 'actions_stay', conditionset, 'list') + + if len(self.__states[state].get('actions_leave')) > 0: + actionlist_leave = self._actionlabel(state, 'actions_leave', conditionset, 'list') + + new_y -= 1 * self.__scalefactor if j == 0 else 2 * self.__scalefactor + position = '{},{}!'.format(0.7, new_y) + conditionset_positions.append(new_y) + #self._log_debug('conditionset: {} {}, previous {}', conditionset, position, previous_conditionset) + + conditionlist, condition_tooltip = self._conditionlabel(state, conditionset) + try: + cond1 = i > list(self.__states.keys()).index(self.__active_state) + except Exception: + cond1 = True + #self._log_debug('i {}, index of active state {}', i, list(self.__states.keys()).index(self.__active_state)) + try: + cond2 = j > list(self.__states[state]['conditionsets'].keys()).index(self.__active_conditionset) or cond1 + except Exception: + cond2 = True + color = "green" if conditionset == self.__active_conditionset and state == self.__active_state else "gray" if cond1 and cond2 else "red" + + self.__nodes['{}_{}'.format(state, conditionset)] = pydotplus.Node( + '{}_{}'.format(state, conditionset), style="filled", fillcolor=color, shape="diamond", label=conditionset, pos=position) + #self._log_debug('Node {} drawn'.format(self.__nodes['{}_{}', state, conditionset)]) + position = '{},{}!'.format(0.4, new_y) + self.__nodes['{}_{}_conditions'.format(state, conditionset)] = pydotplus.Node( + '{}_{}_conditions'.format(state, conditionset), style="filled", fillcolor=color, shape="rect", + label=conditionlist, pos=position, tooltip=condition_tooltip) + + self.__graph.add_node(self.__nodes['{}_{}'.format(state, conditionset)]) + self.__graph.add_node(self.__nodes['{}_{}_conditions'.format(state, conditionset)]) + + new_x = 1.1 + if not actionlist_enter == '': + position = '{},{}!'.format(new_x, new_y) + #self._log_debug('action enter: {}', position) + self.__nodes['{}_{}_actions_enter'.format(state, conditionset)] = pydotplus.Node('{}_{}_actions_enter'.format(state, conditionset), style="filled", fillcolor=color, shape="rectangle", label=actionlist_enter, pos=position) + self.__graph.add_node(self.__nodes['{}_{}_actions_enter'.format(state, conditionset)]) + self._add_actioncondition(state, conditionset, 'actions_enter', new_y, cond1, cond2) + cond1 = self.__nodes.get('{}_{}_actions_enter'.format(state, conditionset)) is None + + if not actionlist_stay == '': + new_y -= 0.05 if not actionlist_enter == '' else 0 + position = '{},{}!'.format(new_x, new_y) + #self._log_debug('action stay: {}', position) + self.__nodes['{}_{}_actions_stay'.format(state, conditionset)] = pydotplus.Node('{}_{}_actions_stay'.format(state, conditionset), style="filled", fillcolor=color, shape="rectangle", label=actionlist_stay, pos=position) + self.__graph.add_node(self.__nodes['{}_{}_actions_stay'.format(state, conditionset)]) + self._add_actioncondition(state, conditionset, 'actions_stay', new_y, cond1, cond2) + + position = '{},{}!'.format(1.1, new_y) + cond2 = self.__nodes.get('{}_{}_actions_stay'.format(state, conditionset)) is None + cond3 = self.__nodes.get('{}_{}_actions_leave'.format(state, conditionset)) is None + if cond1 and cond2 and cond3: + self.__nodes['{}_{}_right'.format(state, conditionset)] = pydotplus.Node('{}_{}_right'.format(state, conditionset), shape="circle", width="0.7", pos=position, label="", fillcolor="black", style="filled", tooltip="No Action") + self.__graph.add_node(self.__nodes['{}_{}_right'.format(state, conditionset)]) + self.__graph.add_edge(pydotplus.Edge(self.__nodes['{}_{}'.format(state, conditionset)], self.__nodes['{}_{}_right'.format(state, conditionset)], style='bold', color='blue', taillabel=" True")) + + if j == 0: + self.__graph.add_edge(pydotplus.Edge(self.__nodes[state], self.__nodes['{}_right'.format(state)], style='bold', color='blue', dir='none', edgetooltip='check first conditionset')) + self.__graph.add_edge(pydotplus.Edge(self.__nodes['{}_right'.format(state)], self.__nodes['{}_{}'.format(state, conditionset)], style='bold', color='blue', tooltip='check first conditionset')) + #self._log_debug('Drew line from state') + else: + self.__graph.add_edge(pydotplus.Edge(previous_conditionset, self.__nodes['{}_{}'.format(state, conditionset)], style='bold', color='blue', tooltip='check next conditionset')) + previous_conditionset = self.__nodes['{}_{}'.format(state, conditionset)] + + if len(self.__states[state].get('actions_leave')) > 0: + new_y -= 1 * self.__scalefactor if j == 0 else 2 * self.__scalefactor + position = '{},{}!'.format(0.7, new_y) + #self._log_debug('leaveconditions {}', position) + try: + cond1 = j > list(self.__states[state]['conditionsets'].keys()).index(self.__active_conditionset) + except Exception: + cond1 = True + try: + cond2 = i > list(self.__states.keys()).index(self.__active_state) + except Exception: + cond2 = True + cond3 = True if self.__states[state].get('leave') is True else False + color = "green" if cond3 else "gray" if cond1 and cond2 else "red" + self.__nodes['{}_leave'.format(state)] = pydotplus.Node('{}_leave'.format(state), style="filled", fillcolor=color, shape="diamond", label='leave', pos=position) + self.__graph.add_node(self.__nodes['{}_leave'.format(state)]) + self.__graph.add_edge(pydotplus.Edge(previous_conditionset, self.__nodes['{}_leave'.format(state)], style='bold', color='blue')) + + position = '{},{}!'.format(new_x, new_y) + #self._log_debug('action leave: {}', position) + self.__nodes['{}_actions_leave'.format(state)] = pydotplus.Node('{}_actions_leave'.format(state), style="filled", fillcolor=color, shape="rectangle", label=actionlist_leave, pos=position, align="left") + self.__graph.add_node(self.__nodes['{}_actions_leave'.format(state)]) + self.__graph.add_edge(pydotplus.Edge(self.__nodes['{}_leave'.format(state)], self.__nodes['{}_actions_leave'.format(state)], style='bold', color='blue', taillabel=" True")) + + previous_state = state + + result = self.__graph.write_svg(filename, prog='fdp') + return result diff --git a/stateengine/__init__.py b/stateengine/__init__.py index 2a5cc08b1..f06d388ed 100755 --- a/stateengine/__init__.py +++ b/stateengine/__init__.py @@ -25,6 +25,7 @@ from . import StateEngineTools from . import StateEngineCliCommands from . import StateEngineFunctions +from . import StateEngineWebif import logging import os from lib.model.smartplugin import * @@ -33,7 +34,7 @@ class StateEngine(SmartPlugin): - PLUGIN_VERSION = '1.6.1' + PLUGIN_VERSION = '1.6.2' # Constructor # noinspection PyUnusedLocal,PyMissingConstructor @@ -42,7 +43,8 @@ def __init__(self, sh): if '.'.join(VERSION.split('.', 2)[:2]) <= '1.5': self.logger = logging.getLogger(__name__) self.items = Items.get_instance() - self.__items = {} + self.__items = self.abitems = {} + self.__sh = sh self.alive = False self.__cli = None self.init_webinterface() @@ -113,7 +115,7 @@ def run(self): self.logger.info("StateEngine deactivated because no items have been found.") self.__cli = StateEngineCliCommands.SeCliCommands(self.get_sh(), self.__items, self.logger) - + #self.logger.info("Items: {}".format(self.__items)) self.alive = True self.get_sh().stateengine_plugin_functions.ab_alive = True @@ -147,6 +149,40 @@ def not_changed_by(self, caller, source, changed_by): return False return True + def get_items(self): + """ + Getting a sorted item list with active SE + + :return: sorted itemlist + """ + sortedlist = sorted([k for k in self.__items.keys()]) + + finallist = [] + for i in sortedlist: + finallist.append(self.__items[i]) + return finallist + + def get_graph(self, abitem, type='link'): + if isinstance(abitem, str): + abitem = self.__items[abitem] + webif = StateEngineWebif.WebInterface(self.__sh, abitem) + vis_file = self.path_join(self.get_plugin_dir(), 'webif/static/img/visualisations/{}.svg'.format(abitem)) + #self.logger.debug("Getting graph: {}, {}".format(abitem, webif)) + try: + if type == 'link': + return '
'.format(abitem) + else: + webif.drawgraph(vis_file) + return '\ + '.format(abitem) + except Exception as ex: + self.logger.error("Problem getting graph for {}. Error: {}".format(abitem, ex)) + return '' + def init_webinterface(self): """" Initialize the web interface for this plugin @@ -214,7 +250,7 @@ def __init__(self, webif_dir, plugin): @cherrypy.expose - def index(self, action=None, item_id=None, item_path=None, reload=None, page='index'): + def index(self, action=None, item_id=None, item_path=None, reload=None, abitem=None, page='index'): """ Build index.html for cherrypy @@ -225,6 +261,14 @@ def index(self, action=None, item_id=None, item_path=None, reload=None, page='in item = self.plugin.items.return_item(item_path) tmpl = self.tplenv.get_template('{}.html'.format(page)) + + if action == "get_graph" and abitem is not None: + if isinstance(abitem, str): + abitem = self.plugin.abitems[abitem] + self.plugin.get_graph(abitem, 'graph') + tmpl = self.tplenv.get_template('visu.html') + return tmpl.render(p=self.plugin, item=abitem, + language=self.plugin._sh.get_defaultlanguage(), now=self.plugin.shtime.now()) # add values to be passed to the Jinja2 template eg: tmpl.render(p=self.plugin, interface=interface, ...) return tmpl.render(p=self.plugin, language=self.plugin._sh.get_defaultlanguage(), now=self.plugin.shtime.now()) diff --git a/stateengine/plugin.yaml b/stateengine/plugin.yaml index e113a4dd6..1589f11c3 100755 --- a/stateengine/plugin.yaml +++ b/stateengine/plugin.yaml @@ -20,13 +20,27 @@ plugin: work with typical events to define which state is evaluated next but with hierarchical states. ' + requirements: + de: 'pydotplus python Modul, graphviz' + en: 'pydotplus python module, graphviz' + requirements_long: + de: 'Das Plugin benötigt die folgende Software, um die State Engine im Webinterface visuell darzustellen:\n + \n + - graphviz: ``sudo apt install graphviz``\n + - Python Modul pydotplus: ``pip3 install pydotplus``\n + ' + en: 'This plugin needs the following software to be installed to visualize the State Engine in the web interface:\n + \n + - graphviz: ``sudo apt install graphviz``\n + - Python Modul pydotplus: ``pip3 install pydotplus``\n + ' maintainer: i-am-offline, onkelandy tester: '?' state: ready documentation: https://www.smarthomeng.de/user/plugins/stateengine/user_doc.html support: https://knx-user-forum.de/forum/supportforen/smarthome-py/1303071-stateengine-plugin-support - version: 1.6.1 + version: 1.6.2 sh_minversion: 1.6 multi_instance: False classname: StateEngine diff --git a/stateengine/requirements.txt b/stateengine/requirements.txt new file mode 100644 index 000000000..029a16821 --- /dev/null +++ b/stateengine/requirements.txt @@ -0,0 +1 @@ +pydotplus diff --git a/stateengine/webif/static/img/vis.png b/stateengine/webif/static/img/vis.png new file mode 100644 index 0000000000000000000000000000000000000000..0027d24139741c6a40b1ed1448921163901c54bd GIT binary patch literal 16454 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 literal 0 HcmV?d00001 diff --git a/stateengine/webif/templates/index.html b/stateengine/webif/templates/index.html index 009bd8eaf..36af2672b 100755 --- a/stateengine/webif/templates/index.html +++ b/stateengine/webif/templates/index.html @@ -11,13 +11,19 @@ }; } + {% endblock scripts %} {% set logo_frame = false %} {% set item_count = p.__items|length %} -{% set tab1title = "_('Dokumentation')" %} -{% set tab2title = "Items" %} +{% set tab1title = "Items" %} +{% set tab2title = "" ~ _('Visualisierung') ~ "" %} {% set tabcount = 1 %} {% block headtable %} @@ -49,22 +55,36 @@ {% endblock headtable %} - {% block bodytab1 %} -
-
-

stateengine Plugin für smarthomeNG

- -

Warnung

- -

Wichtig: - Es ist nicht empfehlenswert das stateengine Plugin für sicherheitsrelevante Zustände, wie zum Beispiel das Hochfahren von Jalousien bei zu viel Wind, zu verwenden. Sicherheitsrelevante Funktionen müssen so einfach wie möglich aufgebaut sein. Es wird daher dringend dazu geraten, solche Funktionen unabhängig von smarthomeNG und dem stateengine Plugin zu realisieren. Für das Hochfahren von Jalousien bei Windalarm beispielsweise sollte die Sperrfunktionalität verwendet werden, über die alle aktuellen Jalousieaktoren verfügen!

- -

Doku

-

Die Dokumentation findet sich auf der SmarthomeNG Webseite. +

+
+ {{ _('Die folgenden Items verfügen über ein StateEngine Item') }}. + {{ _('Klick auf die entsprechende Zeile öffnet die Visualisierung!') }}
+ + + + + + + + + + {% for item in p.get_items() %} + + + + + + + + {% endfor %} +
{{ _('SE Item') }}{{ _('Zustände') }}{{ _('aktueller Zustand') }}{{ _('aktuelles Bedingungsset') }}
{{ item }}{% for cond in item.webif_infos.keys() %}{% if not p.items.return_item(cond) == None %} + {% if loop.index > 1%},{% endif %} + {{ p.items.return_item(cond)._name }}{% endif %}{% endfor %}{{ item.laststate_name }}{{ item.lastconditionset_name }}
+ {% endblock bodytab1 %} diff --git a/stateengine/webif/templates/visu.html b/stateengine/webif/templates/visu.html new file mode 100755 index 000000000..ce646ebb4 --- /dev/null +++ b/stateengine/webif/templates/visu.html @@ -0,0 +1,19 @@ +{% extends "base_plugin.html" %} +{% block buttons %} +{{ super() }} + +{% endblock buttons %} +{% set logo_frame = false %} +{% set tabcount = 1 %} +{% block bodytab1 %} + +
+
+ {{ _('Detailvisualisierung') }} - {{ item }} + + {{ _('Klicken für volle Größe') }} + {{ p.get_graph(item, 'graph') }} + +
+
+{% endblock bodytab1 %} From 183a9828edc4ef16a571d7037274344b4e524f5e Mon Sep 17 00:00:00 2001 From: onkelandy Date: Mon, 5 Aug 2019 13:06:43 +0200 Subject: [PATCH 189/200] Plugin stateengine: improve visu --- stateengine/StateEngineAction.py | 14 +++--- stateengine/StateEngineItem.py | 8 ++++ stateengine/StateEngineState.py | 10 ++-- stateengine/StateEngineWebif.py | 64 +++++++++++++++++--------- stateengine/user_doc/user_doc1.rst | 16 +++++++ stateengine/webif/templates/index.html | 2 +- 6 files changed, 79 insertions(+), 35 deletions(-) diff --git a/stateengine/StateEngineAction.py b/stateengine/StateEngineAction.py index d159d4fc6..7de53da67 100755 --- a/stateengine/StateEngineAction.py +++ b/stateengine/StateEngineAction.py @@ -168,15 +168,15 @@ def execute(self, is_repeat: bool, allow_item_repeat: bool, state: str): delay = 0 if self.__delay.is_empty() else self.__delay.get() actionname = "Action '{0}'".format(self._name) if delay == 0 else "Delay Timer '{0}'".format( self._scheduler_name) - _delay_info = '0' + _delay_info = 0 if delay == 0: self._execute(actionname, self._name, repeat_text) elif delay is None: self._log_warning("Action'{0}: Ignored because of errors while determining the delay!", self._name) - _delay_info = 'Error' + _delay_info = -1 elif delay < 0: self._log_warning("Action'{0}: Ignored because of delay is negative!", self._name) - _delay_info = 'Error' + _delay_info = -1 else: self._log_info("Action '{0}: Add {1} second timer '{2}' for delayed execution. {3}", self._name, delay, self._scheduler_name, repeat_text) @@ -185,22 +185,22 @@ def execute(self, is_repeat: bool, allow_item_repeat: bool, state: str): self._sh.scheduler.add(self._scheduler_name, self._execute, value={'actionname': actionname, 'namevar': self._name}, next=next_run) try: _key = ['{}'.format(state.id), 'actions_stay', '{}'.format(self._name), 'delay'] - self._abitem.update_webif(_key, str(_delay_info)) + self._abitem.update_webif(_key, _delay_info) except Exception: pass try: _key = ['{}'.format(state.id), 'actions_enter', '{}'.format(self._name), 'delay'] - self._abitem.update_webif(_key, str(_delay_info)) + self._abitem.update_webif(_key, _delay_info) except Exception: pass try: _key = ['{}'.format(state.id), 'actions_enter_or_stay', '{}'.format(self._name), 'delay'] - self._abitem.update_webif(_key, str(_delay_info)) + self._abitem.update_webif(_key, _delay_info) except Exception: pass try: _key = ['{}'.format(state.id), 'actions_leave', '{}'.format(self._name), 'delay'] - self._abitem.update_webif(_key, str(_delay_info)) + self._abitem.update_webif(_key, _delay_info) except Exception: pass diff --git a/stateengine/StateEngineItem.py b/stateengine/StateEngineItem.py index e3645b904..f27d79221 100755 --- a/stateengine/StateEngineItem.py +++ b/stateengine/StateEngineItem.py @@ -317,6 +317,14 @@ def update_state(self, item, caller=None, source=None, dest=None): new_state.id, new_state.name, _last_conditionset_id, _last_conditionset_name) self.__laststate_set(new_state) new_state.run_enter(self.__repeat_actions.get()) + if _leaveactions_run is True: + _key_leave = ['{}'.format(last_state.id), 'leave'] + _key_stay = ['{}'.format(last_state.id), 'stay'] + _key_enter = ['{}'.format(last_state.id), 'enter'] + self.update_webif(_key_leave, True) + self.update_webif(_key_stay, False) + self.update_webif(_key_enter, False) + #self.__logger.debug('set leave for {} to true', last_state.id) self.__update_in_progress = False diff --git a/stateengine/StateEngineState.py b/stateengine/StateEngineState.py index ade4c0b2b..ef3355ac1 100755 --- a/stateengine/StateEngineState.py +++ b/stateengine/StateEngineState.py @@ -165,12 +165,10 @@ def run_stay(self, allow_item_repeat: bool): # item_allow_repeat: Is repeating actions generally allowed for the item? def run_leave(self, allow_item_repeat: bool): self._log_increase_indent() - _key_leave = ['{}'.format(self.id), 'leave'] - _key_stay = ['{}'.format(self.id), 'stay'] - _key_enter = ['{}'.format(self.id), 'enter'] - self._abitem.update_webif(_key_leave, True) - self._abitem.update_webif(_key_stay, False) - self._abitem.update_webif(_key_enter, False) + for elem in self._abitem.webif_infos: + _key_leave = ['{}'.format(elem), 'leave'] + self._abitem.update_webif(_key_leave, False) + #self._log_debug('set leave for {} to false', elem) self.__actions_leave.execute(False, allow_item_repeat, self) self._log_decrease_indent() diff --git a/stateengine/StateEngineWebif.py b/stateengine/StateEngineWebif.py index 88c2ce5f4..c1e4dd22e 100755 --- a/stateengine/StateEngineWebif.py +++ b/stateengine/StateEngineWebif.py @@ -64,14 +64,18 @@ def _actionlabel(self, state, type, conditionset, format='table'): condition_met = True if condition_to_meet == 'None' else False condition_to_meet = condition_to_meet if isinstance(condition_to_meet, list) else [condition_to_meet] _repeat = self.__states[state][type][action].get('repeat') + _delay = self.__states[state][type][action].get('delay') or 0 for cond in condition_to_meet: cond = re.compile(cond) matching = cond.match(conditionset) condition_met = True if matching else condition_met - fontcolor = "lightgray" if not condition_met or (_repeat is False and originaltype == 'actions_stay') else "black" + fontcolor = "white" if not condition_met or (_repeat is False and originaltype == 'actions_stay')\ + else "lightgray" if _delay > 0 else "darkred" if _delay > 0 else "black" additionaltext = " ({} not met)".format(condition_to_meet) if not condition_met\ - else " (no repeat)" if _repeat is False and originaltype == 'actions_stay' else "" + else " (no repeat)" if _repeat is False and originaltype == 'actions_stay'\ + else " (delay: {})".format(_delay) if _delay > 0\ + else " (wrong delay!)" if _delay > 0 else "" action1 = self.__states[state][type][action].get('function') if action1 == 'set': action2 = self.__states[state][type][action].get('item') @@ -141,16 +145,20 @@ def _conditionlabel(self, state, conditionset): def _add_actioncondition(self, state, conditionset, type, new_y, cond1, cond2): if self.__conditionset_count > 0: - cond3 = conditionset == self.__active_conditionset and state == self.__active_state - color = "gray" if (cond1 and cond2) or (type == 'actions_enter' and self.__states[state].get('enter') is False and cond3)\ - else "green" if cond3 else "red" - try: - self.__nodes['{}_{}_state_actions_enter'.format(state, conditionset)].obj_dict['attributes']['color'] = color - except Exception: - pass + #cond1 = i > list(self.__states.keys()).index(self.__active_state) + #cond2 = j > list(self.__states[state]['conditionsets'].keys()).index(self.__active_conditionset) or cond1 + + cond4 = conditionset == self.__active_conditionset and state == self.__active_state + color_enter = "gray" if (cond1 and cond2) or (type == 'actions_enter' and self.__states[state].get('enter') is False and cond4)\ + else "chartreuse3" if cond4 else "indianred2" + color_stay = "gray" if (cond1 and cond2) or (type == 'actions_stay' and self.__states[state].get('stay') is False and cond4)\ + else "chartreuse3" if cond4 else "indianred2" + label = 'first enter' if type == 'actions_enter' else 'staying at state' - #self._log_debug('adding enterstate for {}', type) + position = '{},{}!'.format(0.85, new_y) + color = color_enter if label == 'first enter' else color_stay + #self._log_debug('adding enterstate for state {}/set {}: {}. Enter = {}. Cond 1 {}, 2 {}. Color: {}', state, conditionset, type, self.__states[state].get('enter'), cond1, cond2, color) self.__nodes['{}_{}_state_{}'.format(state, conditionset, type)] = pydotplus.Node('{}_{}_state_{}'.format(state, conditionset, type), style="filled", fillcolor=color, shape="diamond", label=label, pos=position) self.__graph.add_node(self.__nodes['{}_{}_state_{}'.format(state, conditionset, type)]) if self.__nodes.get('{}_{}_state_actions_enter_edge'.format(state, conditionset)) is None: @@ -159,6 +167,16 @@ def _add_actioncondition(self, state, conditionset, type, new_y, cond1, cond2): else: self.__graph.add_edge(pydotplus.Edge(self.__nodes['{}_{}_state_actions_enter'.format(state, conditionset)], self.__nodes['{}_{}_state_actions_stay'.format(state, conditionset)], style='bold', color='blue', label="False ")) self.__graph.add_edge(pydotplus.Edge(self.__nodes['{}_{}_state_{}'.format(state, conditionset, type)], self.__nodes['{}_{}_{}'.format(state, conditionset, type)], style='bold', color='blue', taillabel=" True")) + try: + if type == 'actions_enter': + self.__nodes['{}_{}_actions_enter'.format(state, conditionset)].obj_dict['attributes']['fillcolor'] = color + except Exception: + pass + try: + if type == 'actions_stay': + self.__nodes['{}_{}_actions_stay'.format(state, conditionset)].obj_dict['attributes']['fillcolor'] = color + except Exception: + pass else: self.__graph.add_edge(pydotplus.Edge(self.__nodes['{}_{}'.format(state, conditionset)], self.__nodes['{}_{}_{}'.format(state, conditionset, type)], style='bold', color='blue', taillabel=" True")) @@ -172,10 +190,10 @@ def drawgraph(self, filename): if isinstance(self.__states[state], (OrderedDict, dict)): conditionsets = self.__states[state].get('conditionsets') self.__conditionset_count = len(self.__states[state].get('conditionsets')) - color = "green" if state == self.__active_state else "gray" if i > list(self.__states.keys()).index(self.__active_state) else "red" + color = "chartreuse3" if state == self.__active_state else "gray" if i > list(self.__states.keys()).index(self.__active_state) else "indianred2" new_y -= 1 * self.__scalefactor - position = '{},{}!'.format(0, new_y) + position = '{},{}!'.format(0.2, new_y) if not i == 0: condition_node = 'leave' if self.__nodes.get('{}_leave'.format(previous_state)) else list(self.__states[previous_state]['conditionsets'].keys())[-1] lastnode = self.__nodes['{}_{}'.format(previous_state, condition_node)] @@ -188,7 +206,7 @@ def drawgraph(self, filename): self.__graph.add_edge(pydotplus.Edge(self.__nodes['{}_above_right'.format(state)], lastnode, style='bold', color='blue', label="False ", dir="none")) self.__graph.add_edge(pydotplus.Edge(state, self.__nodes['{}_above'.format(state)], style='bold', color='blue', label="", dir="back")) new_y -= 1 * self.__scalefactor - position = '{},{}!'.format(0, new_y) + position = '{},{}!'.format(0.2, new_y) #self._log_debug('state: {} {}',state, position) self.__nodes[state] = pydotplus.Node(state, pos=position, pin=True, notranslate=True, style="filled", fillcolor=color, shape="ellipse", label='<
{}
{}
>'.format(state, self.__states[state]['name'])) @@ -218,15 +236,20 @@ def drawgraph(self, filename): conditionlist, condition_tooltip = self._conditionlabel(state, conditionset) try: - cond1 = i > list(self.__states.keys()).index(self.__active_state) - except Exception: + cond1 = i >= list(self.__states.keys()).index(self.__active_state) + #self._log_debug('Condition 1 i {}, index {}, active state {}'.format(i, list(self.__states.keys()).index(self.__active_state), self.__active_state)) + except Exception as ex: + #self._log_debug('Condition 1 problem {}'.format(ex)) cond1 = True #self._log_debug('i {}, index of active state {}', i, list(self.__states.keys()).index(self.__active_state)) try: - cond2 = j > list(self.__states[state]['conditionsets'].keys()).index(self.__active_conditionset) or cond1 - except Exception: + cond2 = j > list(self.__states[state]['conditionsets'].keys()).index(self.__active_conditionset) or\ + i > list(self.__states.keys()).index(self.__active_state) + except Exception as ex: + #self._log_debug('Condition 2 problem {}'.format(ex)) cond2 = True - color = "green" if conditionset == self.__active_conditionset and state == self.__active_state else "gray" if cond1 and cond2 else "red" + color = "gray" if cond1 and cond2 else "chartreuse3" if conditionset == self.__active_conditionset and\ + state == self.__active_state else "indianred2" self.__nodes['{}_{}'.format(state, conditionset)] = pydotplus.Node( '{}_{}'.format(state, conditionset), style="filled", fillcolor=color, shape="diamond", label=conditionset, pos=position) @@ -238,7 +261,6 @@ def drawgraph(self, filename): self.__graph.add_node(self.__nodes['{}_{}'.format(state, conditionset)]) self.__graph.add_node(self.__nodes['{}_{}_conditions'.format(state, conditionset)]) - new_x = 1.1 if not actionlist_enter == '': position = '{},{}!'.format(new_x, new_y) @@ -246,7 +268,6 @@ def drawgraph(self, filename): self.__nodes['{}_{}_actions_enter'.format(state, conditionset)] = pydotplus.Node('{}_{}_actions_enter'.format(state, conditionset), style="filled", fillcolor=color, shape="rectangle", label=actionlist_enter, pos=position) self.__graph.add_node(self.__nodes['{}_{}_actions_enter'.format(state, conditionset)]) self._add_actioncondition(state, conditionset, 'actions_enter', new_y, cond1, cond2) - cond1 = self.__nodes.get('{}_{}_actions_enter'.format(state, conditionset)) is None if not actionlist_stay == '': new_y -= 0.05 if not actionlist_enter == '' else 0 @@ -257,6 +278,7 @@ def drawgraph(self, filename): self._add_actioncondition(state, conditionset, 'actions_stay', new_y, cond1, cond2) position = '{},{}!'.format(1.1, new_y) + cond1 = self.__nodes.get('{}_{}_actions_enter'.format(state, conditionset)) is None cond2 = self.__nodes.get('{}_{}_actions_stay'.format(state, conditionset)) is None cond3 = self.__nodes.get('{}_{}_actions_leave'.format(state, conditionset)) is None if cond1 and cond2 and cond3: @@ -285,7 +307,7 @@ def drawgraph(self, filename): except Exception: cond2 = True cond3 = True if self.__states[state].get('leave') is True else False - color = "green" if cond3 else "gray" if cond1 and cond2 else "red" + color = "gray" if cond1 and cond2 and not cond3 else "chartreuse3" if cond3 else "indianred2" self.__nodes['{}_leave'.format(state)] = pydotplus.Node('{}_leave'.format(state), style="filled", fillcolor=color, shape="diamond", label='leave', pos=position) self.__graph.add_node(self.__nodes['{}_leave'.format(state)]) self.__graph.add_edge(pydotplus.Edge(previous_conditionset, self.__nodes['{}_leave'.format(state)], style='bold', color='blue')) diff --git a/stateengine/user_doc/user_doc1.rst b/stateengine/user_doc/user_doc1.rst index 03f2287a1..9b211e8b6 100755 --- a/stateengine/user_doc/user_doc1.rst +++ b/stateengine/user_doc/user_doc1.rst @@ -61,3 +61,19 @@ dabei erweitert und optimiert. Für einen Umstieg ist es wichtig, die Attribute ``as`` durch ``se`` zu ersetzen. Im Pluginverzeichnis befindet sich ein Bash- Script, das diesen Prozess deutlich vereinfacht und nicht nur die Attrinbute in den items/*.yaml Dateien ersetzt, sondern auch die Cachefiles umbenennt. + +.. rubric:: Webinterface + :name: webif + +Über das Webinterface lässt sich auf einen Blick erkennen, welche State Engine sich +in welchem Zustand befindet. Zusätzlich ist es möglich, durch Klick auf einen Eintrag +die komplette State Engine visuell zu betrachten. Dabei ist folgende Farbkodierung zu beachten: +- grau: wurde nicht evaluiert (weil bereits ein höher rangiger Zustand eingenommen wurde) +- grün: aktueller Zustand / ausgeführte Aktion +- rot: Bedingungen nicht erfüllt + +Bei den Aktionen sind die einzelnen Zeilen unter Umständen ebenfalls farbkodiert: +- schwarz: Aktion normal ausgeführt +- weiß: Aktion nicht ausgeführt, da Bedingungen nicht erfüllt +- grau: Aktion wird erst mit Verzögerung ausgeführt +- rot: Fehler in der Konfiguration diff --git a/stateengine/webif/templates/index.html b/stateengine/webif/templates/index.html index 36af2672b..2a8d4e2e1 100755 --- a/stateengine/webif/templates/index.html +++ b/stateengine/webif/templates/index.html @@ -76,7 +76,7 @@ {{ item }} {% for cond in item.webif_infos.keys() %}{% if not p.items.return_item(cond) == None %} {% if loop.index > 1%},{% endif %} - {{ p.items.return_item(cond)._name }}{% endif %}{% endfor %} + {{ p.items.return_item(cond)._name.split('.')[-1] }}{% endif %}{% endfor %} {{ item.laststate_name }} {{ item.lastconditionset_name }} From 7d98db6c2be397379e659f333455f6b3f9c2cd1d Mon Sep 17 00:00:00 2001 From: onkelandy Date: Mon, 5 Aug 2019 13:08:15 +0200 Subject: [PATCH 190/200] Plugin stateengine: improve visu --- stateengine/StateEngineWebif.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/stateengine/StateEngineWebif.py b/stateengine/StateEngineWebif.py index c1e4dd22e..6b3b9d760 100755 --- a/stateengine/StateEngineWebif.py +++ b/stateengine/StateEngineWebif.py @@ -193,7 +193,7 @@ def drawgraph(self, filename): color = "chartreuse3" if state == self.__active_state else "gray" if i > list(self.__states.keys()).index(self.__active_state) else "indianred2" new_y -= 1 * self.__scalefactor - position = '{},{}!'.format(0.2, new_y) + position = '{},{}!'.format(0, new_y) if not i == 0: condition_node = 'leave' if self.__nodes.get('{}_leave'.format(previous_state)) else list(self.__states[previous_state]['conditionsets'].keys())[-1] lastnode = self.__nodes['{}_{}'.format(previous_state, condition_node)] @@ -206,7 +206,7 @@ def drawgraph(self, filename): self.__graph.add_edge(pydotplus.Edge(self.__nodes['{}_above_right'.format(state)], lastnode, style='bold', color='blue', label="False ", dir="none")) self.__graph.add_edge(pydotplus.Edge(state, self.__nodes['{}_above'.format(state)], style='bold', color='blue', label="", dir="back")) new_y -= 1 * self.__scalefactor - position = '{},{}!'.format(0.2, new_y) + position = '{},{}!'.format(0, new_y) #self._log_debug('state: {} {}',state, position) self.__nodes[state] = pydotplus.Node(state, pos=position, pin=True, notranslate=True, style="filled", fillcolor=color, shape="ellipse", label='<
{}
{}
>'.format(state, self.__states[state]['name'])) From f186dbd913edaa1a2e0591c95e64082280808446 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Mon, 5 Aug 2019 15:13:34 +0200 Subject: [PATCH 191/200] Stateengine Plugin: docu updates --- stateengine/user_doc/user_doc11.rst | 5 ++++ stateengine/user_doc/user_doc9.rst | 41 ++++++++++++++++++++++------- 2 files changed, 36 insertions(+), 10 deletions(-) diff --git a/stateengine/user_doc/user_doc11.rst b/stateengine/user_doc/user_doc11.rst index 8a6cb40af..39ca53787 100755 --- a/stateengine/user_doc/user_doc11.rst +++ b/stateengine/user_doc/user_doc11.rst @@ -5,6 +5,11 @@ Besondere Zustände ================== +In der Folge werden die speziellen Zustände Sperren und Aussetzen nochmals +im Detail erläutert. Prinzipiell ist es ausreichend, die gelieferten Struct +Vorlagen zu nutzen - dieser Teil kann getrost übersprungen werden. + + Sperren ------- diff --git a/stateengine/user_doc/user_doc9.rst b/stateengine/user_doc/user_doc9.rst index 3dea6d570..873bd14dc 100755 --- a/stateengine/user_doc/user_doc9.rst +++ b/stateengine/user_doc/user_doc9.rst @@ -1,8 +1,8 @@ .. index:: Plugins; Stateengine -.. index:: Stateengine; Zustands-Templates -.. _Zustands-Templates: +.. index:: Stateengine; Zustand-Templates +.. _Zustand-Templates: -Zustands-Templates +Zustand-Templates ################## .. rubric:: Struktur Templates @@ -137,7 +137,7 @@ In diesem Fall soll die automatiche Evaluierung für eine gewisse Zeit pausieren Beim ``manuell`` Item muss unter Umständen der Eintrag ``se_manual_exclude`` in der eigenen Baumstruktur überschrieben und durch einen Eintrag (z.B. beim Einsatz von KNX Aktoren) ``- KNX:physikalische Adresse:Gruppenadresse`` ergänzt werden. Außerdem muss ein eval_trigger manuell deklariert werden. Hier sollten alle -Items gelistet sein, die für ein vroübergehendes Aussetzen der Automatisierung sorgen sollen +Items gelistet sein, die für ein vorübergehendes Aussetzen der Automatisierung sorgen sollen (z.B. Schalt- und Dimm-Items) Das Item ``settings.suspendduration`` ermöglicht es, die Dauer der Pausierung bequem @@ -166,25 +166,44 @@ beim nächsten Durchlauf eventuell durch andere Zustände überschrieben. se_manual_exclude: - database:* + retrigger: + remark: Item to retrigger the rule set evaluation + type: bool + visu_acl: rw + enforce_updates: True + settings: + remark: Use these settings for your condition values + suspendduration: + remark: duration of suspend mode type: num visu_acl: rw cache: True + initial_value: 60 suspend_active: + remark: Use this to (de)activate suspend mode in general type: bool visu_acl: rw cache: True + initial_value: True + + settings_edited: + type: bool + name: settings editiert + eval_trigger: ...settings.* + eval: not sh..self() + on_update: ...retrigger = True rules: se_item_suspend: ..suspend - se_item_retrigger: ..rules se_item_suspend_end: ..suspend_end se_item_suspend_active: ..settings.suspend_active - se_suspend_time: eval:sh...settings.suspendduration * 60 + se_suspend_time: eval:se_eval.get_relative_itemproperty('..settings.suspendduration', 'value') * 60 eval_trigger: - ..manuell + - ..retrigger suspend: name: ausgesetzt @@ -201,8 +220,8 @@ beim nächsten Durchlauf eventuell durch andere Zustände überschrieben. - 'repeat: True' - 'order: 2' se_action_retrigger: - - 'function: set' - - 'to: True' + - 'function: special' + - 'value: retrigger:..retrigger' - 'delay: var:item.suspend_remaining' - 'repeat: True' - 'order: 3' @@ -282,10 +301,12 @@ der Zustände anzuleiern. :name: pluginspezifisch Es ist neben der oben beschriebene Variante möglich, Vorgabezustände in -der Item-Konfiguration zu definieren +der Item-Konfiguration über ``se_use`` zu definieren und diese später für konkrete Regelwerke durch Plugin-interne Attribute zu nutzen. Dabei können im konkreten Zustand auch Einstellungen des Vorgabezustands -überschrieben werden. +überschrieben werden. Es wird jedoch empfohlen, die struct Vorlagen aus +SmarthomeNG >= 1.6 zu nutzen bzw. selbst welche zu erstellen, da dieses Feature +flexibler ist und aktiv weiterentwickelt wird. Vorgabezustände werden als Item an beliebiger Stelle innerhalb der Item-Struktur definiert. Es ist sinnvoll, die Vorgabezustände From cbe87783daf2261b55e440a35f6038c978937d79 Mon Sep 17 00:00:00 2001 From: onkelandy Date: Tue, 6 Aug 2019 12:45:12 +0200 Subject: [PATCH 192/200] Stateengine Plugin: show actions in visu even if no state condition defined --- stateengine/StateEngineWebif.py | 90 ++++++++++++++++++--------------- 1 file changed, 48 insertions(+), 42 deletions(-) diff --git a/stateengine/StateEngineWebif.py b/stateengine/StateEngineWebif.py index 6b3b9d760..3abfe635c 100755 --- a/stateengine/StateEngineWebif.py +++ b/stateengine/StateEngineWebif.py @@ -96,6 +96,9 @@ def _actionlabel(self, state, type, conditionset, format='table'): def _conditionlabel(self, state, conditionset): condition_tooltip = '' + _empty_set = self.__states[state]['conditionsets'].get(conditionset) == '' + if _empty_set: + return '', '' conditionlist = '<' for k, condition in enumerate(self.__states[state]['conditionsets'].get(conditionset)): @@ -144,41 +147,38 @@ def _conditionlabel(self, state, conditionset): return conditionlist, condition_tooltip def _add_actioncondition(self, state, conditionset, type, new_y, cond1, cond2): - if self.__conditionset_count > 0: - #cond1 = i > list(self.__states.keys()).index(self.__active_state) - #cond2 = j > list(self.__states[state]['conditionsets'].keys()).index(self.__active_conditionset) or cond1 + #cond1 = i >= list(self.__states.keys()).index(self.__active_state) + #cond2 = j > list(self.__states[state]['conditionsets'].keys()).index(self.__active_conditionset) or i > list(self.__states.keys()).index(self.__active_state) + cond3 = conditionset == '' + cond4 = conditionset == self.__active_conditionset and state == self.__active_state + color_enter = "gray" if (cond1 and cond2) or (type == 'actions_enter' and self.__states[state].get('enter') is False and cond4)\ + else "chartreuse3" if cond4 else "indianred2" + color_stay = "gray" if (cond1 and cond2) or (type == 'actions_stay' and self.__states[state].get('stay') is False and cond4)\ + else "chartreuse3" if cond4 else "indianred2" - cond4 = conditionset == self.__active_conditionset and state == self.__active_state - color_enter = "gray" if (cond1 and cond2) or (type == 'actions_enter' and self.__states[state].get('enter') is False and cond4)\ - else "chartreuse3" if cond4 else "indianred2" - color_stay = "gray" if (cond1 and cond2) or (type == 'actions_stay' and self.__states[state].get('stay') is False and cond4)\ - else "chartreuse3" if cond4 else "indianred2" + label = 'first enter' if type == 'actions_enter' else 'staying at state' - label = 'first enter' if type == 'actions_enter' else 'staying at state' - - position = '{},{}!'.format(0.85, new_y) - color = color_enter if label == 'first enter' else color_stay - #self._log_debug('adding enterstate for state {}/set {}: {}. Enter = {}. Cond 1 {}, 2 {}. Color: {}', state, conditionset, type, self.__states[state].get('enter'), cond1, cond2, color) - self.__nodes['{}_{}_state_{}'.format(state, conditionset, type)] = pydotplus.Node('{}_{}_state_{}'.format(state, conditionset, type), style="filled", fillcolor=color, shape="diamond", label=label, pos=position) - self.__graph.add_node(self.__nodes['{}_{}_state_{}'.format(state, conditionset, type)]) - if self.__nodes.get('{}_{}_state_actions_enter_edge'.format(state, conditionset)) is None: - self.__nodes['{}_{}_state_{}_edge'.format(state, conditionset, type)] = pydotplus.Edge(self.__nodes['{}_{}'.format(state, conditionset)], self.__nodes['{}_{}_state_{}'.format(state, conditionset, type)], style='bold', color='blue', taillabel=" True") - self.__graph.add_edge(self.__nodes['{}_{}_state_{}_edge'.format(state, conditionset, type)]) - else: - self.__graph.add_edge(pydotplus.Edge(self.__nodes['{}_{}_state_actions_enter'.format(state, conditionset)], self.__nodes['{}_{}_state_actions_stay'.format(state, conditionset)], style='bold', color='blue', label="False ")) - self.__graph.add_edge(pydotplus.Edge(self.__nodes['{}_{}_state_{}'.format(state, conditionset, type)], self.__nodes['{}_{}_{}'.format(state, conditionset, type)], style='bold', color='blue', taillabel=" True")) - try: - if type == 'actions_enter': - self.__nodes['{}_{}_actions_enter'.format(state, conditionset)].obj_dict['attributes']['fillcolor'] = color - except Exception: - pass - try: - if type == 'actions_stay': - self.__nodes['{}_{}_actions_stay'.format(state, conditionset)].obj_dict['attributes']['fillcolor'] = color - except Exception: - pass + position = '{},{}!'.format(0.85, new_y) + color = color_enter if label == 'first enter' else color_stay + #self._log_debug('adding enterstate for state {}/set {}: {}. Enter = {}, Stay = {}. Cond 1 {}, 2 {}, 3 {}, 4 {}. Color: {}', state, conditionset, type, self.__states[state].get('enter'), self.__states[state].get('stay'), cond1, cond2, cond3, cond4, color) + self.__nodes['{}_{}_state_{}'.format(state, conditionset, type)] = pydotplus.Node('{}_{}_state_{}'.format(state, conditionset, type), style="filled", fillcolor=color, shape="diamond", label=label, pos=position) + self.__graph.add_node(self.__nodes['{}_{}_state_{}'.format(state, conditionset, type)]) + if self.__nodes.get('{}_{}_state_actions_enter_edge'.format(state, conditionset)) is None: + self.__nodes['{}_{}_state_{}_edge'.format(state, conditionset, type)] = pydotplus.Edge(self.__nodes['{}_{}'.format(state, conditionset)], self.__nodes['{}_{}_state_{}'.format(state, conditionset, type)], style='bold', color='blue', taillabel=" True") + self.__graph.add_edge(self.__nodes['{}_{}_state_{}_edge'.format(state, conditionset, type)]) else: - self.__graph.add_edge(pydotplus.Edge(self.__nodes['{}_{}'.format(state, conditionset)], self.__nodes['{}_{}_{}'.format(state, conditionset, type)], style='bold', color='blue', taillabel=" True")) + self.__graph.add_edge(pydotplus.Edge(self.__nodes['{}_{}_state_actions_enter'.format(state, conditionset)], self.__nodes['{}_{}_state_actions_stay'.format(state, conditionset)], style='bold', color='blue', label="False ")) + self.__graph.add_edge(pydotplus.Edge(self.__nodes['{}_{}_state_{}'.format(state, conditionset, type)], self.__nodes['{}_{}_{}'.format(state, conditionset, type)], style='bold', color='blue', taillabel=" True")) + try: + if type == 'actions_enter': + self.__nodes['{}_{}_actions_enter'.format(state, conditionset)].obj_dict['attributes']['fillcolor'] = color + except Exception: + pass + try: + if type == 'actions_stay': + self.__nodes['{}_{}_actions_stay'.format(state, conditionset)].obj_dict['attributes']['fillcolor'] = color + except Exception: + pass def drawgraph(self, filename): new_y = 2 @@ -190,6 +190,8 @@ def drawgraph(self, filename): if isinstance(self.__states[state], (OrderedDict, dict)): conditionsets = self.__states[state].get('conditionsets') self.__conditionset_count = len(self.__states[state].get('conditionsets')) + if self.__conditionset_count == 0: + self.__states[state]['conditionsets'][''] = '' color = "chartreuse3" if state == self.__active_state else "gray" if i > list(self.__states.keys()).index(self.__active_state) else "indianred2" new_y -= 1 * self.__scalefactor @@ -235,6 +237,7 @@ def drawgraph(self, filename): #self._log_debug('conditionset: {} {}, previous {}', conditionset, position, previous_conditionset) conditionlist, condition_tooltip = self._conditionlabel(state, conditionset) + cond3 = conditionset == '' try: cond1 = i >= list(self.__states.keys()).index(self.__active_state) #self._log_debug('Condition 1 i {}, index {}, active state {}'.format(i, list(self.__states.keys()).index(self.__active_state), self.__active_state)) @@ -243,24 +246,27 @@ def drawgraph(self, filename): cond1 = True #self._log_debug('i {}, index of active state {}', i, list(self.__states.keys()).index(self.__active_state)) try: - cond2 = j > list(self.__states[state]['conditionsets'].keys()).index(self.__active_conditionset) or\ - i > list(self.__states.keys()).index(self.__active_state) + cond2 = (j > list(self.__states[state]['conditionsets'].keys()).index(self.__active_conditionset) or + i > list(self.__states.keys()).index(self.__active_state)) except Exception as ex: #self._log_debug('Condition 2 problem {}'.format(ex)) cond2 = True - color = "gray" if cond1 and cond2 else "chartreuse3" if conditionset == self.__active_conditionset and\ - state == self.__active_state else "indianred2" + color = "gray" if cond1 and cond2 else "chartreuse3" if (conditionset == self.__active_conditionset or cond3) and\ + state == self.__active_state else "indianred2" + label = 'no condition' if conditionset == '' else conditionset self.__nodes['{}_{}'.format(state, conditionset)] = pydotplus.Node( - '{}_{}'.format(state, conditionset), style="filled", fillcolor=color, shape="diamond", label=conditionset, pos=position) - #self._log_debug('Node {} drawn'.format(self.__nodes['{}_{}', state, conditionset)]) + '{}_{}'.format(state, conditionset), style="filled", fillcolor=color, shape="diamond", label=label, pos=position) + #self._log_debug('Node {} {} drawn', state, conditionset) position = '{},{}!'.format(0.4, new_y) - self.__nodes['{}_{}_conditions'.format(state, conditionset)] = pydotplus.Node( - '{}_{}_conditions'.format(state, conditionset), style="filled", fillcolor=color, shape="rect", - label=conditionlist, pos=position, tooltip=condition_tooltip) + if not conditionlist == '': + self.__nodes['{}_{}_conditions'.format(state, conditionset)] = pydotplus.Node( + '{}_{}_conditions'.format(state, conditionset), style="filled", fillcolor=color, shape="rect", + label=conditionlist, pos=position, tooltip=condition_tooltip) + self.__graph.add_node(self.__nodes['{}_{}_conditions'.format(state, conditionset)]) self.__graph.add_node(self.__nodes['{}_{}'.format(state, conditionset)]) - self.__graph.add_node(self.__nodes['{}_{}_conditions'.format(state, conditionset)]) + new_x = 1.1 if not actionlist_enter == '': position = '{},{}!'.format(new_x, new_y) From 77ddaafbd432b1420e0894a641ec2abfecf546ff Mon Sep 17 00:00:00 2001 From: Tom Bombadil Date: Wed, 7 Aug 2019 09:39:33 +0200 Subject: [PATCH 193/200] readme.md for initial PR --- trovis557x/readme.md | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) create mode 100644 trovis557x/readme.md diff --git a/trovis557x/readme.md b/trovis557x/readme.md new file mode 100644 index 000000000..46e8c7033 --- /dev/null +++ b/trovis557x/readme.md @@ -0,0 +1,17 @@ +Ein smartHomeNG Plugin zum Auslesen von SAMSON TROVIS 557x Automationssystemen (Heizungsregler). + +Unterstützt werden alle Modelle mit Modbus (5571, 5573, 5576, 5578, 5579). + +Einige Teile des Projektes können auch für die Anbindung des Reglers an Trovis View verwendet werden. + +Weitere Details sind im [Wiki](github.com/Tom-Bom-badil/samson_trovis_557x/wiki) zu finden. + +------------ + +A smartHomeNG plugin and smartVISU widget to read out SAMSON TROVIS 557x Automation Controllers for heating / cooling. + +The plugin supports all Modbus models (5571, 5573, 5576, 5578, 5579). + +Some parts of the project can also be used to connect the controller to Trovis View. + +Further details can be found in the [Wiki](github.com/Tom-Bom-badil/samson_trovis_557x/wiki) (German). From ad7e96c174d970862f658cf8a30fa7ceba68a88c Mon Sep 17 00:00:00 2001 From: Tom Bombadil Date: Wed, 7 Aug 2019 09:42:33 +0200 Subject: [PATCH 194/200] Initial PR --- trovis557x/__init__.py | 343 ++ trovis557x/_coils.py | 394 ++ trovis557x/_listen.py | 19 + trovis557x/_register.py | 6484 ++++++++++++++++++++ trovis557x/assets/todo | 1 + trovis557x/plugin.yaml | 138 + trovis557x/requirements.txt | 1 + trovis557x/shNG-etc/logging.yaml | 7 + trovis557x/shNG-etc/plugin.yaml | 4 + trovis557x/shNG-items/trovis.yaml | 911 +++ trovis557x/templates/5576-003_coils.py | 385 ++ trovis557x/templates/5576-003_listen.py | 19 + trovis557x/templates/5576-003_registers.py | 6478 +++++++++++++++++++ trovis557x/templates/readme.txt | 7 + trovis557x/tools/coil_sniffer.py | 88 + trovis557x/tools/readme.txt | 1 + trovis557x/tools/register_sniffer.py | 103 + trovis557x/webif/todo | 1 + 18 files changed, 15384 insertions(+) create mode 100644 trovis557x/__init__.py create mode 100644 trovis557x/_coils.py create mode 100644 trovis557x/_listen.py create mode 100644 trovis557x/_register.py create mode 100644 trovis557x/assets/todo create mode 100644 trovis557x/plugin.yaml create mode 100644 trovis557x/requirements.txt create mode 100644 trovis557x/shNG-etc/logging.yaml create mode 100644 trovis557x/shNG-etc/plugin.yaml create mode 100644 trovis557x/shNG-items/trovis.yaml create mode 100644 trovis557x/templates/5576-003_coils.py create mode 100644 trovis557x/templates/5576-003_listen.py create mode 100644 trovis557x/templates/5576-003_registers.py create mode 100644 trovis557x/templates/readme.txt create mode 100644 trovis557x/tools/coil_sniffer.py create mode 100644 trovis557x/tools/readme.txt create mode 100644 trovis557x/tools/register_sniffer.py create mode 100644 trovis557x/webif/todo diff --git a/trovis557x/__init__.py b/trovis557x/__init__.py new file mode 100644 index 000000000..b1ac9645d --- /dev/null +++ b/trovis557x/__init__.py @@ -0,0 +1,343 @@ +#!/usr/bin/env python3 +# vim: set encoding=utf-8 tabstop=4 softtabstop=4 shiftwidth=4 expandtab +######################################################################### +# (C) 2019 René Jahncke aka Tom-Bom-badil tommy_bombadil@hotmail.com +######################################################################### +# +# Plugin to read out SAMSON TROVIS 557x heating controllers. +# +# This file is part of SmartHomeNG. +# +# SmartHomeNG is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# SmartHomeNG is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with SmartHomeNG. If not, see . +# +######################################################################### + +import serial +import array +from lib.module import Modules +from lib.model.smartplugin import * +from datetime import datetime +from pymodbus.client.sync import ModbusSerialClient as ModbusClient +from . import _coils +from . import _listen +from . import _register + + +class trovis557x(SmartPlugin): + + + ALLOW_MULTIINSTANCE = False + PLUGIN_VERSION = '0.1.a' + + + # Starten + def __init__(self, sh, *args, **kwargs): + self._init_complete = False + self.logger = logging.getLogger(__name__) + self.sh = sh + self.logger.debug('__init__ aufgerufen') + self.init_vars() + self._modbus = self.init_trovis() + if self._connected and self.init_webinterface(): + self._init_complete = True + + # Nach dem Starten 1x für jedes Item durchlaufen + def parse_item(self, item): + + if self.has_iattr(item.conf, 'trovis557x_var'): + kurzname = str(item.conf['trovis557x_var']) + if kurzname in self._register_tabelle.keys() or kurzname in self._coil_tabelle.keys(): + self._trovis_itemlist[kurzname] = item + self.logger.debug('Parse_item: ' + kurzname + ' ---> ' + str(item)) + else: + self.logger.warning('! Parse_item: Unbekannter Wert "' + kurzname + '" von ' + str(item) + ' angefordert') + + + # Setzt regelmäßigen Aufruf von poll_device im Scheduler, siehe cycle + def run(self): + self.logger.debug('run aufgerufen') + self.scheduler_add('poll_device', self.poll_device, cycle=self._cycle) + self.alive = True + + + # Wird regelmäßig vom Scheduler aufgerufen + def poll_device(self): + self.logger.debug('poll_device aufgerufen') + startzeit = datetime.now() + + self.logger.debug('Registerbereiche lesen: ' + str(self._register_bereiche)) + for bereich in self._register_bereiche: + ids_mit_werten = self.leseTrovis(bereich, 'register') + if ids_mit_werten: + self.logger.debug(str(ids_mit_werten)) + self.verarbeiteWerte(ids_mit_werten, 'register') + ids_mit_werten = [] + + self.logger.debug('Coilbereiche lesen: ' + str(self._coil_bereiche)) + for bereich in self._coil_bereiche: + ids_mit_werten = self.leseTrovis(bereich, 'coils') + if ids_mit_werten: + self.logger.debug(str(ids_mit_werten)) + self.verarbeiteWerte(ids_mit_werten, 'coils') + + endzeit = datetime.now() + dauer = endzeit - startzeit + self.logger.debug('=========== Durchlauf beendet, Gesamtdauer: ' + str(dauer)) + + + # Beim Beenden 'saubermachen' + def stop(self): + self.logger.debug("Stop aufgerufen") + if self._connected: + self._modbus.close() + self.alive = False + + + def init_webinterface(self): + """" + Initialize the web interface for this plugin + This method is only needed if the plugin is implementing a web interface + """ + try: + self.mod_http = Modules.get_instance().get_module( + 'http') # try/except to handle running in a core version that does not support modules + except: + self.mod_http = None + if self.mod_http == None: + self.logger.error("Not initializing the web interface") + return False + + import sys + if not "SmartPluginWebIf" in list(sys.modules['lib.model.smartplugin'].__dict__): + self.logger.warning("Web interface needs SmartHomeNG v1.5 and up. Not initializing the web interface") + return False + + # set application configuration for cherrypy + webif_dir = self.path_join(self.get_plugin_dir(), 'webif') + config = { + '/': { + 'tools.staticdir.root': webif_dir, + }, + '/static': { + 'tools.staticdir.on': True, + 'tools.staticdir.dir': 'static' + } + } + + # Register the web interface as a cherrypy app + self.mod_http.register_webif(WebInterface(webif_dir, self), + self.get_shortname(), + config, + self.get_classname(), self.get_instance_name(), + description='') + + return True + + +# ------------------------------------------ +# Ab hier Plugin-eigene Funktionen +# ------------------------------------------ + + + # Aus Master-Tabellen lesen: ID rein, Name raus + def getKeyFromID(self, ID, datentyp): + try: + if datentyp == 'register': + found = next(key for key in self._register_tabelle if self._register_tabelle[key]['ID'] == ID) + else: + found = next(key for key in self._coil_tabelle if self._coil_tabelle[key]['ID'] == ID) + except StopIteration: + found=-1 + return found + + + # Variablen etc initialisieren (wird wird von __init__ gerufen) + def init_vars(self): + + self._model = self.get_parameter_value('model') + self._revision = self.get_parameter_value('revision') + + self._modbus_mode = self.get_parameter_value('modbus_mode') + self._modbus_port = self.get_parameter_value('modbus_port') + self._modbus_speed = self.get_parameter_value('modbus_speed') + self._modbus_timeout = self.get_parameter_value('modbus_timeout') + self._modbus_trovis_address = self.get_parameter_value('modbus_trovis_address') + self._modbus_debug = self.get_parameter_value('modbus_debug') + + self._cycle = self.get_parameter_value('cycle') + + self._register_bereiche = _register.register_bereiche + self._register_tabelle = _register.register_tabelle + self._coil_bereiche = _coils.coil_bereiche + self._coil_tabelle = _coils.coil_tabelle + self._listen_tabelle = _listen.listen_tabelle + + self._trovis_itemlist = {} + + + # Schnittstelle initialisieren (wird wird von __init__ gerufen) + def init_trovis(self): + try: + # self._modbus_debug = False #ToDo + connection = ModbusClient(method=self._modbus_mode, port=self._modbus_port, timeout=self._modbus_timeout, baudrate=self._modbus_speed) + if connection.connect(): + self._connected = True + self.logger.debug('Verbindung zur Trovis hergestellt: ' + str(connection)) + else: + self._connected = False + self.logger.debug('Verbindung zur Trovis fehlgeschlagen: ' + str(connection)) + except Exception as e: + self.logger.debug('Exception beim Trovis Verbindungsaufbau: ' + str(e)) + return connection + + + # Trovis auslesen + def leseTrovis(self, _bereich, _datentyp): + try: + _ids_mit_werten = [] + werte = [] + id_aktuell = _bereich[0] + if _datentyp == 'register': # register lesen + werte = self._modbus.read_holding_registers(_bereich[0], _bereich[1]-_bereich[0]+1, unit=self._modbus_trovis_address) + for wert in werte.registers: + if self.getKeyFromID(id_aktuell, 'register') != -1: + _ids_mit_werten.append([id_aktuell, wert]) + id_aktuell += 1 + else: # coils lesen + werte = self._modbus.read_coils(_bereich[0], _bereich[1]-_bereich[0]+1, unit=self._modbus_trovis_address) + for wert in werte.bits: + if self.getKeyFromID(id_aktuell, 'coil') != -1: + _ids_mit_werten.append([id_aktuell, int(wert)]) + id_aktuell += 1 + # unsauber, aber Länge von 'werte' ist immer Vielfaches von + # 8 (8 bits = 1 Byte) und wird ggf rechts mit Nullen aufgefüllt, + # daher sind im Ergebnis ggf mehr Elemente als angefragt: + if id_aktuell > _bereich[1]: + break + except Exception as e: + _ids_mit_werten = e + return _ids_mit_werten + + + # Ausgelesene Werte verarbeiten und bei Bedarf auf Items schreiben + def verarbeiteWerte(self, _ids_mit_werten, _datentyp): # für das jeweils erste WMZ-Register stimmt etwas nicht (?) + + # self.logger.debug('Verarbeite ' + _datentyp + ' ' + str(_ids_mit_werten[0][0]) + '-' + str(_ids_mit_werten[len(_ids_mit_werten)-1][0]) + ':') + + for id, buswert in _ids_mit_werten: + + itemwert = '' + kurzname = self.getKeyFromID(id, _datentyp) + + if _datentyp == 'register': + alle_details = self._register_tabelle[kurzname] + faktor = alle_details['Faktor'] + digits = alle_details['Digits'] + else: + alle_details = self._coil_tabelle[kurzname] + art = alle_details['Art'] + typ = alle_details['Typ'] + einheit = alle_details['Einheit'] + + # hier oben ggf. Sonderlocken für einzelne Register + # if kurzname == 'xyz': + # usw. + + # Standardtypen für Register *und* Coils + if typ[:6] == 'Liste_': + wert = int(buswert) + einheit = self._listen_tabelle[typ][wert] + + elif typ == '???': + wert = int(buswert) + kurzname = 'unbekannt-' + str(id) + + # Standardtypen ausschliesslich für Register + elif typ == 'Version': + wert = str('{0:.'+str(digits)+'f}').format((buswert*faktor)/10**digits) + + elif typ == 'Zahl': + if digits == 0: + wert = int(str('{0:.'+str(digits)+'f}').format((buswert*faktor))) + else: + wert = float(str('{0:.'+str(digits)+'f}').format((buswert*faktor))) + + elif typ == 'Datum': + if len(str(buswert)) == 3: + wert = '0' + '{0:.2f}'.format(buswert/100) + '.' + else: + wert = '{0:.2f}'.format(buswert/100) + '.' + + elif typ == 'Uhrzeit': + if int(buswert) == 0: + wert = '00:00' + elif int(buswert) < 60: + wert = '00:' + str(buswert)[-2:] + elif int(buswert) < 960: + wert = str(buswert)[:1] + ':' + str(buswert)[-2:] + else: + wert = str(buswert)[:2] + ':' + str(buswert)[-2:] + + else: + wert = int(buswert) + kurzname = 'UNGUELTIG-' + id + + # itemwert = [str(buswert), str(wert), str(einheit)] + + if kurzname in self._trovis_itemlist.keys(): + # alt - wurde als Liste geschrieben: self._trovis_itemlist[kurzname]([buswert, wert, einheit]) + self._trovis_itemlist[kurzname](wert) + self._trovis_itemlist[kurzname].conf['liste'] = ([buswert, wert, einheit]) + self.logger.debug(' ~~> %s ---> %s ---> %s ---> %s' % (id, kurzname, str(wert) + einheit, self._trovis_itemlist[kurzname])) + + # Vorsicht - große Datenmengen in kurzer Zeit!!! + # Kommentar entfernen, um alle gelesenen Register/Coils im Debug-Log zu sehen: + # + # self.logger.debug('%4u ---> %s ---> %s' % (id, kurzname, itemwert)) + + + +# ------------------------------------------ +# Webinterface of the plugin +# ------------------------------------------ + +import cherrypy +from jinja2 import Environment, FileSystemLoader + + +class WebInterface(SmartPluginWebIf): + + def __init__(self, webif_dir, plugin): + """ + Initialization of instance of class WebInterface + :param webif_dir: directory where the webinterface of the plugin resides + :param plugin: instance of the plugin + :type webif_dir: str + :type plugin: object + """ + self.logger = logging.getLogger(__name__) + self.webif_dir = webif_dir + self.plugin = plugin + self.tplenv = self.init_template_environment() + + @cherrypy.expose + def index(self, reload=None): + """ + Build index.html for cherrypy + Render the template and return the html file to be delivered to the browser + :return: contents of the template after beeing rendered + """ + tmpl = self.tplenv.get_template('index.html') + # add values to be passed to the Jinja2 template eg: tmpl.render(p=self.plugin, interface=interface, ...) + return tmpl.render(p=self.plugin) diff --git a/trovis557x/_coils.py b/trovis557x/_coils.py new file mode 100644 index 000000000..fc9983e65 --- /dev/null +++ b/trovis557x/_coils.py @@ -0,0 +1,394 @@ +coil_bereiche = ( + [ 0, 39], [ 56, 68], [ 87, 112], [ 115, 123], [ 129, 167], + [ 175, 214], [ 221, 237], [ 244, 308], [ 321, 337], [ 997, 1008], + [1016, 1018], [1024, 1044], [1199, 1208], [1211, 1212], [1216, 1218], + [1224, 1237], [1799, 1808], [1824, 1844], [9899, 9910], + [55999, 56006], [65534, 65534] +) + + +coil_tabelle = { + 'Sammelstoerung': { 'ID': 0, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Sammelstoerung, Fehlerstatusregister HR40150 > 0' }, + 'Dateneingaktiv': { 'ID': 1, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Dateneingabe aktiv' }, + 'Dateneingstattg': { 'ID': 2, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Dateneingabe stattgefunden' }, + 'SammelEbenenbit': { 'ID': 3, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Sammel-Ebenenbit CL88-CL121' }, + 'StatusHandbRk1': { 'ID': 4, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Handbetrieb Heizkreis RK1' }, + 'StatusHandbRk2': { 'ID': 5, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Handbetrieb Heizkreis RK2' }, + 'Unbekannt-6': { 'ID': 6, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'StatusHandbTW': { 'ID': 7, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Handbetrieb TW' }, + 'Sommerbetrieb': { 'ID': 8, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Sommerbetrieb aktiv (CO5, Fb04)' }, + 'WMZKomStoer#1': { 'ID': 9, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Kommunikationsstoerung Zaehlerbus WMZ #1 (CO6, Fb10)' }, + 'WMZKomStoer#2': { 'ID': 10, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Kommunikationsstoerung Zaehlerbus WMZ #2 (CO6, Fb10)' }, + 'WMZKomStoer#3': { 'ID': 11, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Kommunikationsstoerung Zaehlerbus WMZ #3 (CO6, Fb10)' }, + 'WMZFehlerWMZ#1': { 'ID': 12, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Fehler WMZ #1 (CO6, Fb10)' }, + 'WMZFehlerWMZ#2': { 'ID': 13, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Fehler WMZ #2 (CO6, Fb10)' }, + 'WMZFehlerWMZ#3': { 'ID': 14, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Fehler WMZ #3 (CO6, Fb10)' }, + 'WMZ-Auslesung#1': { 'ID': 15, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1 = 1xAuslesung WMZ #1 veranlassen' }, + 'WMZ-Auslesung#2': { 'ID': 16, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1 = 1xAuslesung WMZ #2 veranlassen' }, + 'WMZ-Auslesung#3': { 'ID': 17, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1 = 1xAuslesung WMZ #3 veranlassen' }, + 'Unbekannt-18': { 'ID': 18, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-19': { 'ID': 19, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-20': { 'ID': 20, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'WMZDflussBeg#1': { 'ID': 21, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Durchflussbegrenzung #1 aktiv (CO5,Fb11/CO6,Fb11)' }, + 'WMZLeistBeg#1': { 'ID': 22, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Leistungsbegrenzung #1 aktiv (CO5,Fb10/ CO6,Fb12)' }, + 'BinaereingBE01': { 'ID': 23, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE01' }, + 'BinaereingBE02': { 'ID': 24, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE02' }, + 'BinaereingBE03': { 'ID': 25, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE03' }, + 'BinaereingBE04': { 'ID': 26, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE04' }, + 'BinaereingBE05': { 'ID': 27, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE05' }, + 'BinaereingBE06': { 'ID': 28, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE06' }, + 'BinaereingBE07': { 'ID': 29, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE07' }, + 'BinaereingBE08': { 'ID': 30, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE08' }, + 'BinaereingBE09': { 'ID': 31, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE09' }, + 'BinaereingBE10': { 'ID': 32, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE10' }, + 'BinaereingBE11': { 'ID': 33, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE11' }, + 'BinaereingBE12': { 'ID': 34, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE12' }, + 'BinaereingBE13': { 'ID': 35, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE13' }, + 'BinaereingBE14': { 'ID': 36, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE14' }, + 'BinaereingBE15': { 'ID': 37, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE15' }, + 'BinaereingBE16': { 'ID': 38, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE16' }, + 'BinaereingBE17': { 'ID': 39, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE17' }, + 'BinaerausgBA1': { 'ID': 56, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Umwaelzpumpe Rk1 (UP1 Netzseite, CL96)' }, + 'BinaerausgBA2': { 'ID': 57, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Umwaelzpumpe Rk2 (UP2, Netzseite, CL97)' }, + 'Unbekannt-58': { 'ID': 58, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'BinaerausgBA4': { 'ID': 59, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Speicherladepumpe TW (SLP, CL99)' }, + 'BinaerausgBA5': { 'ID': 60, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Zirkulationspumpe (ZP, CL100)' }, + 'BinaerausgBA6': { 'ID': 61, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_HZ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Rk13-Pkt Zu-Signal (Vorgabe in HR40107)' }, + 'BinaerausgBA7': { 'ID': 62, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_HA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Rk13-Pkt Auf-Signal (HR40107), 2-Pkt (CL102)' }, + 'BinaerausgBA8': { 'ID': 63, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_HZ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Rk23-Pkt Zu-Signal (Vorgabe in HR40109)' }, + 'BinaerausgBA9': { 'ID': 64, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_HA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Rk23-Pkt Auf-Signal (HR40109), 2-Pkt (CL104)' }, + 'Unbekannt-65': { 'ID': 65, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-66': { 'ID': 66, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'BinaerausgBA12': { 'ID': 67, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Pumpenmanagement UP1Ein/Aus (CL107)' }, + 'BinaerausgBA13': { 'ID': 68, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Pumpenmanagement Drehzahl UP1(CL108)' }, + 'EBNAussentemAF1': { 'ID': 87, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Aussentemperatur AF1 (HR40010)' }, + 'EBNBetrArtRk1': { 'ID': 88, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Betriebsart Rk1 (HR40106)' }, + 'EBNStellsigRk1': { 'ID': 89, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Stellsignal Rk1 (HR40107)' }, + 'EBNBetrArtRk2': { 'ID': 90, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Betriebsart Rk2 (HR40108)' }, + 'EBNStellsigRk2': { 'ID': 91, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Stellsignal Rk2 (HR40109)' }, + 'Unbekannt-92': { 'ID': 92, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-93': { 'ID': 93, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'EBNBetrArtTW': { 'ID': 94, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Betriebsart TW (HR40112)' }, + 'EBNBinaerBA1': { 'ID': 95, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Umwaelzpumpe Rk1 (UP1, Netzseite, CL57)' }, + 'EBNBinaerBA2': { 'ID': 96, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Umwaelzpumpe Rk2 (UP2, Netzseite, CL58)' }, + 'Unbekannt-97': { 'ID': 97, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'EBNBinaerBA4': { 'ID': 98, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Speicherladepumpe TW (SLP, CL60)' }, + 'EBNBinaerBA5': { 'ID': 99, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Zirkulationspumpe (ZP, CL61)' }, + 'EBNBinaerBA6': { 'ID': 100, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Binaer BA6' }, + 'EBNBinaerBA7': { 'ID': 101, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Rk12-Pkt-Signal (CL63)' }, + 'EBNBinaerBA8': { 'ID': 102, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Binaer BA8' }, + 'EBNBinaerBA9': { 'ID': 103, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Rk22-Pkt-Signal (CL65)' }, + 'Unbekannt-104': { 'ID': 104, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-105': { 'ID': 105, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'EBNBinaerBA12': { 'ID': 106, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Pumpenmanagement UP1 Ein/Aus (CL68)' }, + 'EBNBinaerBA13': { 'ID': 107, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Pumpenmanagement Drehzahl UP1(CL69)' }, + 'EBNAA1': { 'ID': 108, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Analogausgang 1 (0..10V)' }, + 'EBNAA2': { 'ID': 109, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Analogausgang 2 (0..10V)' }, + 'Unbekannt-110': { 'ID': 110, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'EBNSonTWSollw': { 'ID': 111, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Sonder-Trinkwassersollwert (HR41809)' }, + 'EBNSonPuffSollw': { 'ID': 112, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Sonder-Pufferspeichersollwert (HR41045)' }, + 'EBNVorlSollRk1': { 'ID': 115, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Vorlaufsollwert Rk1 (HR41000)' }, + 'EBNRueckSollRk1': { 'ID': 116, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Ruecklaufsollwert Rk1 (HR41033)' }, + 'EBNVorlSollRk2': { 'ID': 117, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Vorlaufsollwert Rk2 (HR41200)' }, + 'EBNRueckSollRk2': { 'ID': 118, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Ruecklaufsollwert Rk2 (HR41233)' }, + 'Unbekannt-119': { 'ID': 119, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-120': { 'ID': 120, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-121': { 'ID': 121, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-122': { 'ID': 122, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-123': { 'ID': 123, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB01Pt1000': { 'ID': 129, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB01: Pt1000- (Pt100)- Fuehler' }, + 'FB02NTC': { 'ID': 130, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB02: NTC- (Pt100)- Fuehler' }, + 'FB03Pt500': { 'ID': 131, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB03: Pt500- (Pt100)- Fuehler' }, + 'FB04Sommerbtr': { 'ID': 132, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB04: Sommerbetrieb' }, + 'FB05VerzATAnp': { 'ID': 133, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB05: Verzoegerte Aussentemperaturanpassung fallend' }, + 'FB06VerzATAnp': { 'ID': 134, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB06: Verzoegerte Aussentemperaturanpassung steigend' }, + 'FB07Stoerausgang': { 'ID': 135, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB07: Stoermeldeausgang BA13' }, + 'FB08AutSommZeit': { 'ID': 136, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB08: Automatische Sommer-/Winterzeitumschaltung' }, + 'FB09Frostschutz': { 'ID': 137, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB09: Frostschutzprogramm (I=>FB09=0, II=>FB09=1)' }, + 'FB10LeistBeg': { 'ID': 138, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB10: Durchfluss-/Leistungsbegrenzung mit Impulsen' }, + 'FB11DflussBegmA': { 'ID': 139, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB11: Durchflussbegrenzung mit 0/4..20mA-Signal' }, + 'FB12Schleichmng': { 'ID': 140, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB12: Schleichmengenunterdrueckung per BE13' }, + 'FB13LeistBegmA': { 'ID': 141, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB13: Leistungsbegr. bas. Volumenstr. 0/4-20mA Rk1' }, + 'FB14BetrUP1': { 'ID': 142, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB14: Betrieb UP1 bei Eigenbedarf' }, + 'FB15FrgRegBE15': { 'ID': 143, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB15: Freigabe Regler an BE15 (Stdby-Betr. bE/1,0)' }, + 'FB16Ruecklbegr': { 'ID': 144, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB16: P-Verhalten bei Ruecklauftemperaturbegrenzung' }, + 'FB17UPManagmt': { 'ID': 145, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB17: Pumpenmanagement Schaltverh. BA13 (ab V1.30)' }, + 'Unbekannt-146': { 'ID': 146, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB19Tempueberw': { 'ID': 147, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB19: Temperaturueberwachung' }, + 'Unbekannt-148': { 'ID': 148, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB21SperrHand': { 'ID': 149, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB21: Sperrung der Handebenen' }, + 'FB22SperrDreh': { 'ID': 150, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB22: Sperrung der Drehschalter' }, + 'FB23AT0bis10V': { 'ID': 151, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB23: Aussentemperatur mittels 0 bis 10V erfassen' }, + 'FB01Modbus': { 'ID': 152, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB01: Modbusbetrieb' }, + 'FB0216bit': { 'ID': 153, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB02: Modbus 16-bit-Adressierung' }, + 'FB03Modem': { 'ID': 154, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB03: Modemfunktion' }, + 'FB04AutoModem': { 'ID': 155, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB04: Automatische Modemkonfiguration' }, + 'FB05SperrModem': { 'ID': 156, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB05: Sperrung der GLT-Anwahl' }, + 'FB06Anwgehend': { 'ID': 157, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB06: GLT-Anwahl auch bei gehenden Stoerungen' }, + 'FB07TimeoutGLT': { 'ID': 158, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB07: Leitsystemueberwachung' }, + 'FB08SMS': { 'ID': 159, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB08: SMS-Betrieb' }, + 'Unbekannt-160': { 'ID': 160, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB10Zaehlerbus': { 'ID': 161, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB10: Zaehlerbus-Betrieb' }, + 'FB11DflussBeg': { 'ID': 162, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB11: Durchflussbegrenzung in Rk1 mittels Zaehlerbus' }, + 'FB12LeistBeg': { 'ID': 163, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB12: Leistungsbegrenzung in Rk1 mittels Zaehlerbus' }, + 'Unbekannt-164': { 'ID': 164, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-165': { 'ID': 165, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-166': { 'ID': 166, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-167': { 'ID': 167, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB01Geraetebus': { 'ID': 175, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB01: Geraetebus' }, + 'FB02Uhrzeitsync': { 'ID': 176, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB02: Uhrzeitsynchronisation' }, + 'FB03RaumleitRk1': { 'ID': 177, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB03: Raumleitgeraet TROVIS 5570 in Rk1' }, + 'FB04RaumleitRk2': { 'ID': 178, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB04: Raumleitgeraet TROVIS 5570 in Rk2' }, + 'Unbekannt-179': { 'ID': 179, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB06SendenAF1': { 'ID': 180, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB06: Wert AF1 senden' }, + 'FB07EmpfangAF1': { 'ID': 181, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB07: Wert AF1 empfangen' }, + 'FB08SendenAF2': { 'ID': 182, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB08: Wert AF2 senden' }, + 'FB09EmpfangAF2': { 'ID': 183, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB09: Wert AF2 empfangen' }, + 'FB10SendSollRk1': { 'ID': 184, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB10: Vorlaufsollwert Rk1 senden' }, + 'FB11SendSollRk2': { 'ID': 185, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB11: Vorlaufsollwert Rk2 senden' }, + 'Unbekannt-186': { 'ID': 186, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB13SendSollTW': { 'ID': 187, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB13: Vorlaufsollwert TW senden' }, + 'FB14SendSollMax': { 'ID': 188, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB14: Maximalen Vorlaufsollwert senden' }, + 'FB15EmpfangBed': { 'ID': 189, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB15: Bedarf empfangen' }, + 'FB16Stoermeldung': { 'ID': 190, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB16: Stoermeldungen via Geraetebus' }, + 'Unbekannt-191': { 'ID': 191, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-192': { 'ID': 192, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB19AnhRueckGW': { 'ID': 193, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB19: Anhebung Ruecklauftemperaturgrenzwert' }, + 'FB20SendTW': { 'ID': 194, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB20: Trinkwassererwaermumg aktiv senden' }, + 'FB21FrgRk1Empf': { 'ID': 195, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Freigabe Rk1 empfangen' }, + 'FB22FRgRk2Empf': { 'ID': 196, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Freigabe Rk2 empfangen' }, + 'Unbekannt-197': { 'ID': 197, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB01BE01': { 'ID': 198, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB01: 1=>Binaereingang/ 0=Sensoreingang' }, + 'FB02BE02': { 'ID': 199, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB02: 1=>Binaereingang/ 0=Sensoreingang' }, + 'FB03BE03': { 'ID': 200, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB03: 1=>Binaereingang/ 0=Sensoreingang' }, + 'FB04BE04': { 'ID': 201, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB04: 1=>Binaereingang/ 0=Sensoreingang' }, + 'FB05BE05': { 'ID': 202, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB05: 1=>Binaereingang/ 0=Sensoreingang' }, + 'FB06BE06': { 'ID': 203, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB06: 1=>Binaereingang/ 0=Sensoreingang' }, + 'Unbekannt-204': { 'ID': 204, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-205': { 'ID': 205, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB09BE09': { 'ID': 206, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB09: 1=>Binaereingang/ 0=Sensoreingang' }, + 'FB10BE10': { 'ID': 207, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB10: 1=>Binaereingang/ 0=Sensoreingang' }, + 'FB11BE11': { 'ID': 208, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB11: 1=>Binaereingang/ 0=Sensoreingang' }, + 'FB12BE12': { 'ID': 209, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB12: 1=>Binaereingang/ 0=Sensoreingang' }, + 'FB13BE13': { 'ID': 210, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB13: 1=>Binaereingang/ 0=Sensoreingang' }, + 'FB15BE15': { 'ID': 211, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB15: 1=>Binaereingang/ 0=Sensoreingang' }, + 'FB16BE16': { 'ID': 212, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB16: 1=>Binaereingang/ 0=Sensoreingang' }, + 'FB17BE17': { 'ID': 213, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB17: 1=>Binaereingang/ 0=Sensoreingang' }, + 'Unbekannt-214': { 'ID': 214, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'MeldungBE01': { 'ID': 221, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1=>Meldung bei BE=1/ 0=>Meldung bei BE=0' }, + 'MeldungBE02': { 'ID': 222, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1=>Meldung bei BE=1/ 0=>Meldung bei BE=0' }, + 'MeldungBE03': { 'ID': 223, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1=>Meldung bei BE=1/ 0=>Meldung bei BE=0' }, + 'MeldungBE04': { 'ID': 224, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1=>Meldung bei BE=1/ 0=>Meldung bei BE=0' }, + 'MeldungBE05': { 'ID': 225, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1=>Meldung bei BE=1/ 0=>Meldung bei BE=0' }, + 'MeldungBE06': { 'ID': 226, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1=>Meldung bei BE=1/ 0=>Meldung bei BE=0' }, + 'Unbekannt-227': { 'ID': 227, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-228': { 'ID': 228, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'MeldungBE09': { 'ID': 229, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1=>Meldung bei BE=1/ 0=>Meldung bei BE=0' }, + 'MeldungBE10': { 'ID': 230, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1=>Meldung bei BE=1/ 0=>Meldung bei BE=0' }, + 'MeldungBE11': { 'ID': 231, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1=>Meldung bei BE=1/ 0=>Meldung bei BE=0' }, + 'MeldungBE12': { 'ID': 232, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1=>Meldung bei BE=1/ 0=>Meldung bei BE=0' }, + 'MeldungBE13': { 'ID': 233, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1=>Meldung bei BE=1/ 0=>Meldung bei BE=0' }, + 'Unbekannt-234': { 'ID': 234, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'MeldungBE15': { 'ID': 235, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1=>Meldung bei BE=1/ 0=>Meldung bei BE=0' }, + 'MeldungBE16': { 'ID': 236, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1=>Meldung bei BE=1/ 0=>Meldung bei BE=0' }, + 'MeldungBE17': { 'ID': 237, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1=>Meldung bei BE=1/ 0=>Meldung bei BE=0' }, + 'WMZHTNT-Tarif': { 'ID': 244, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'WMZ-Tarifumschaltung HT/NT fuer WMZ #1' }, + 'WMZKomStoer#4': { 'ID': 245, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Kommunikationsstoerung Zaehlerbus WMZ #4 (CO6, Fb10)' }, + 'WMZKomStoer#5': { 'ID': 246, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Kommunikationsstoerung Zaehlerbus WMZ #5 (CO6, Fb10)' }, + 'WMZKomStoer#6': { 'ID': 247, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Kommunikationsstoerung Zaehlerbus WMZ #6 (CO6, Fb10)' }, + 'WMZFehlerWMZ#4': { 'ID': 248, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Fehler WMZ #4 (CO6, Fb10)' }, + 'WMZFehlerWMZ#5': { 'ID': 249, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Fehler WMZ #5 (CO6, Fb10)' }, + 'WMZFehlerWMZ#6': { 'ID': 250, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Fehler WMZ #6 (CO6, Fb10)' }, + 'WMZ-Auslesung#4': { 'ID': 251, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1 = 1xAuslesung WMZ #4 veranlassen' }, + 'WMZ-Auslesung#5': { 'ID': 252, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1 = 1xAuslesung WMZ #5 veranlassen' }, + 'WMZ-Auslesung#6': { 'ID': 253, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1 = 1xAuslesung WMZ #6 veranlassen' }, + 'SummenBegrenzung': { 'ID': 254, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Summenbegrenzung Leistung/Durchfluss aller WMZs' }, + 'Unbekannt-255': { 'ID': 255, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-256': { 'ID': 256, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-257': { 'ID': 257, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-258': { 'ID': 258, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-259': { 'ID': 259, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-260': { 'ID': 260, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-261': { 'ID': 261, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-262': { 'ID': 262, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-263': { 'ID': 263, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-264': { 'ID': 264, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-265': { 'ID': 265, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-266': { 'ID': 266, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-267': { 'ID': 267, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-268': { 'ID': 268, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-269': { 'ID': 269, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-270': { 'ID': 270, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-271': { 'ID': 271, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-272': { 'ID': 272, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-273': { 'ID': 273, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-274': { 'ID': 274, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-275': { 'ID': 275, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-276': { 'ID': 276, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-277': { 'ID': 277, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-278': { 'ID': 278, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-279': { 'ID': 279, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-280': { 'ID': 280, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-281': { 'ID': 281, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-282': { 'ID': 282, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-283': { 'ID': 283, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-284': { 'ID': 284, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-285': { 'ID': 285, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-286': { 'ID': 286, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-287': { 'ID': 287, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-288': { 'ID': 288, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-289': { 'ID': 289, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-290': { 'ID': 290, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-291': { 'ID': 291, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-292': { 'ID': 292, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-293': { 'ID': 293, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-294': { 'ID': 294, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-295': { 'ID': 295, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-296': { 'ID': 296, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-297': { 'ID': 297, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-298': { 'ID': 298, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-299': { 'ID': 299, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'CO9FB05': { 'ID': 300, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Externe Vorlaufsoll-Korrektur (Techem/Adapterm)' }, + 'CO9FB01': { 'ID': 301, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'NI1000 Sensoren der Firma SIEMENS' }, + 'ZyklRelaisinit': { 'ID': 302, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Zyklische Relaisinitialisierung' }, + 'Fliessdruckschalt': { 'ID': 303, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Fliessdruckschalter' }, + 'WirksinnStoeraus': { 'ID': 304, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Wirksinn Stoermeldeausgang BA13 (CO5, Fb07)' }, + 'Unbekannt-305': { 'ID': 305, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Schleichmbin': { 'ID': 306, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Schleichmenge mittels Binaereingang' }, + 'CO9FB08': { 'ID': 307, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'RK1 als Zubringerkreis' }, + 'CO9FB09': { 'ID': 308, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Modbus-Schreibfreigabe' }, + 'FB01BE01imFSR': { 'ID': 321, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB01: 1=> Meldung in Fehlerstatusregister' }, + 'FB02BE02imFSR': { 'ID': 322, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB02: 1=> Meldung in Fehlerstatusregister' }, + 'FB03BE03imFSR': { 'ID': 323, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB03: 1=> Meldung in Fehlerstatusregister' }, + 'FB04BE04imFSR': { 'ID': 324, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB04: 1=> Meldung in Fehlerstatusregister' }, + 'FB05BE05imFSR': { 'ID': 325, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB05: 1=> Meldung in Fehlerstatusregister' }, + 'FB06BE06imFSR': { 'ID': 326, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB06: 1=> Meldung in Fehlerstatusregister' }, + 'Unbekannt-327': { 'ID': 327, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-328': { 'ID': 328, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB09BE09imFSR': { 'ID': 329, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB09: 1=> Meldung in Fehlerstatusregister' }, + 'FB10BE10imFSR': { 'ID': 330, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB10: 1=> Meldung in Fehlerstatusregister' }, + 'FB11BE11imFSR': { 'ID': 331, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB11: 1=> Meldung in Fehlerstatusregister' }, + 'FB12BE12imFSR': { 'ID': 332, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB12: 1=> Meldung in Fehlerstatusregister' }, + 'FB13BE13imFSR': { 'ID': 333, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB13: 1=> Meldung in Fehlerstatusregister' }, + 'Unbekannt-334': { 'ID': 334, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB15BE15imFSR': { 'ID': 335, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB15: 1=> Meldung in Fehlerstatusregister' }, + 'FB16BE16imFSR': { 'ID': 336, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB16: 1=> Meldung in Fehlerstatusregister' }, + 'FB17BE17imFSR': { 'ID': 337, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB17: 1=> Meldung in Fehlerstatusregister' }, + 'BtrnichtAuto': { 'ID': 997, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'mind. 1 Rk ungleich Auto' }, + 'BtrSnichtAuto': { 'ID': 998, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'mind. 1 Rk ungleich Auto mittels Betriebsschalter' }, + 'AutoRk1': { 'ID': 999, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Zeitabhaengiger Betrieb Rk1' }, + 'TagbetriebRk1': { 'ID': 1000, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Tagbetrieb Rk1' }, + 'NachtbetriebRk1': { 'ID': 1001, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Nachtbetrieb Rk1' }, + 'HaltebtrRk1': { 'ID': 1002, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Haltebetrieb Rk1 (mit CO1, Fb07=1)' }, + 'StuetzbtrRk1': { 'ID': 1003, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Stuetzbetrieb Rk1 (mit CO1, Fb07=1)' }, + 'AufheizbtrRk1': { 'ID': 1004, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Aufheizbetrieb Rk1 (mit CO1, Fb07=1)' }, + 'RuecklbegRk1': { 'ID': 1005, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ruecklauftemperaturbegrenzung Rk1 aktiv' }, + 'HeizausRk1': { 'ID': 1006, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'AT-abhaengige Heizungsabschaltung Rk1 aktiv' }, + 'StandbyRk1': { 'ID': 1007, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Standby-Betrieb Rk1' }, + 'FrostschutzRk1': { 'ID': 1008, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Frostschutzbetrieb Rk1' }, + 'Unbekannt-1016': { 'ID': 1016, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-1017': { 'ID': 1017, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-1018': { 'ID': 1018, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB01RF1': { 'ID': 1024, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB01: Raumfuehler RF1' }, + 'FB02AF1': { 'ID': 1025, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB02: Aussenfuehler AF1' }, + 'FB03RueF1Rk1': { 'ID': 1026, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB03: Ruecklauffuehler RueF1 Rk1' }, + 'Unbekannt-1027': { 'ID': 1027, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB05FBHRk1': { 'ID': 1028, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB05: Fussbodenheizung Rk1' }, + 'Unbekannt-1029': { 'ID': 1029, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB07OptimierRk1': { 'ID': 1030, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB07: Optimierung Rk1' }, + 'FB08AdaptRk1': { 'ID': 1031, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB08: Adaption Rk1' }, + 'FB09KurzztAdRk1': { 'ID': 1032, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB09: Kurzzeitadaption Rk1' }, + 'FB10UPManagmt': { 'ID': 1033, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB10: Pumpenmanagement Schaltverh BA13 (bis V1.30)' }, + 'FB114PHKLRk1': { 'ID': 1034, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB11: 4-Punkte-Kennlinie Rk1' }, + 'FB123PktRegRk1': { 'ID': 1035, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB12: Regelungsart 3-Pkt (Rk1) / 0...10V (Y1)' }, + 'FB13BegxdRk1': { 'ID': 1036, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB13: Begrenzung d. Regelabweichung AUF-Signal Rk1' }, + 'FB14FreigRk1': { 'ID': 1037, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB14: Freigabe Rk1 an Eingang BE15' }, + 'FB15Bedarf': { 'ID': 1038, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB15: Bedarfsverarbeitung in Rk1' }, + 'FB1610VBedarf': { 'ID': 1039, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB16: Bedarfsverarbeitung 0-10V in Rk1 (Kl. 17/19)' }, + 'FB17binBedarf': { 'ID': 1040, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB17: Bedarfsverarbeitung binaer in Rk1 (Kl. 17/18)' }, + 'FB18maxVL-Soll': { 'ID': 1041, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB18: Max. Vorlaufsollwert mittels 0-10V anfordern' }, + 'FB19VL-SollFolg': { 'ID': 1042, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB19: Max. Vorlaufsollwert in Folge anfordern' }, + 'FB20ExtWaermean': { 'ID': 1043, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB20: Externe Waermeanforderung bei Unterversorgung' }, + 'Unbekannt-1044': { 'ID': 1044, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'AutoRk2': { 'ID': 1199, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Zeitabhaengiger Betrieb Rk2' }, + 'TagbetriebRk2': { 'ID': 1200, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Tagbetrieb Rk2' }, + 'NachtbetriebRk2': { 'ID': 1201, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Nachtbetrieb Rk2' }, + 'HaltebtrRk2': { 'ID': 1202, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Haltebetrieb Rk2 (mit CO2, Fb07=1)' }, + 'StuetzbtrRk2': { 'ID': 1203, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Stuetzbetrieb Rk2 (mit CO2, Fb07=1)' }, + 'AufheizbtrRk2': { 'ID': 1204, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Aufheizbetrieb Rk2 (mit CO2, Fb07=1)' }, + 'RuecklbegRk2': { 'ID': 1205, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ruecklauftemperaturbegrenzung Rk2 aktiv' }, + 'HeizausRk2': { 'ID': 1206, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'AT-abhaengige Heizungsabschaltung Rk2 aktiv' }, + 'StandbyRk2': { 'ID': 1207, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Standby-Betrieb Rk2' }, + 'FrostschutzRk2': { 'ID': 1208, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Frostschutzbetrieb Rk2' }, + 'Unbekannt-1211': { 'ID': 1211, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-1212': { 'ID': 1212, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-1216': { 'ID': 1216, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-1217': { 'ID': 1217, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-1218': { 'ID': 1218, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB01RF2': { 'ID': 1224, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB01: Raumfuehler RF2' }, + 'FB02AF2': { 'ID': 1225, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB02: Aussenfuehler AF2' }, + 'FB03RueF2Rk2': { 'ID': 1226, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB03: Ruecklauffuehler RueF2 Rk2' }, + 'FB05FBHRk2': { 'ID': 1227, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB05: Fussbodenheizung Rk2' }, + 'Unbekannt-1228': { 'ID': 1228, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-1229': { 'ID': 1229, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB07OptimierRk2': { 'ID': 1230, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB07: Optimierung Rk2' }, + 'FB08AdaptRk2': { 'ID': 1231, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB08: Adaption Rk2' }, + 'FB09KurzztAdRk2': { 'ID': 1232, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB09: Kurzzeitadaption Rk2' }, + 'Unbekannt-1233': { 'ID': 1233, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB114PHKLRk2': { 'ID': 1234, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB11: 4-Punkte-Kennlinie Rk2' }, + 'FB123PktRegRk2': { 'ID': 1235, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB12: Regelungsart 3-Pkt (Rk2) / 0...10V (Y2)' }, + 'FB13BegxdRk2': { 'ID': 1236, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB13: Begrenzung d. Regelabweichung AUF-Signal Rk2' }, + 'FB14FreigRk2': { 'ID': 1237, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB14: Freigabe Rk2 an Eingang BE16' }, + 'AutoTW': { 'ID': 1799, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Zeitabhaengiger Betrieb Trinkwasser' }, + 'ThermDesTW': { 'ID': 1800, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Thermische Desinfektion Trinkwasserkreis aktiv' }, + 'VorrangTW': { 'ID': 1801, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Vorrangbetrieb Trinkwasserkreis aktiv' }, + 'MaxLadetempbgTW': { 'ID': 1802, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Maximale Ladetemperaturbegrenzung aktiv' }, + 'RuecklbegTW': { 'ID': 1803, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ruecklauftemperaturbegr. Trinkwasserkreis aktiv' }, + 'StandbyTW': { 'ID': 1804, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Standby-Betrieb Trinkwasser' }, + 'FrostschutzTW': { 'ID': 1805, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Frostschutzbetrieb Trinkwasser' }, + 'ZwangsladTW': { 'ID': 1806, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Zwangsladung Trinkwasserspeicher' }, + 'SolarUPTW': { 'ID': 1807, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Solarkreis-Umwaelzpumpe aktiv' }, + 'SF2anstattSF1': { 'ID': 1808, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Zwangsladung durch Umschaltung von SF1 auf SF2' }, + 'FB01SF1': { 'ID': 1824, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB01: Speicherfuehler SF1' }, + 'FB02SF2': { 'ID': 1825, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB02: Speicherfuehler SF2' }, + 'FB03RueF2': { 'ID': 1826, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB03: Ruecklauffuehler RueF2' }, + 'FB04StroemSensor': { 'ID': 1827, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB04: Wasserstroemungssensor' }, + 'FB05VF4': { 'ID': 1828, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB05: Vorlauffuehler VF4' }, + 'FB06ParallelTW': { 'ID': 1829, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB06: Pumpenparallellauf' }, + 'FB07Zwischenhzg': { 'ID': 1830, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB07: Zwischenheizbetrieb' }, + 'FB08VorrangInv': { 'ID': 1831, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB08: Vorrang durch Inversbetrieb' }, + 'FB09VorrangAbs': { 'ID': 1832, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB09: Vorrang durch Absenkbetrieb' }, + 'FB10ZPinWT': { 'ID': 1833, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB10: ZP in Waermetauscher eingebunden' }, + 'FB11ZPbeimLaden': { 'ID': 1834, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB11: Betrieb der ZP bei Speicherladung' }, + 'FB123PktRegTW': { 'ID': 1835, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB12: Regelungsart 3-Pkt (Rk2) / 0...10V (Y2) TW' }, + 'FB13BegRegdiff': { 'ID': 1836, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB13: Begrenzung der Regelabweichung AUF-Signal TW' }, + 'FB14ThermDes': { 'ID': 1837, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB14: Thermische Desinfektion' }, + 'FB15SLPabhRueF': { 'ID': 1838, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB15: SLP ein in Abhaengigkeit der Ruecklauftemp' }, + 'FB16BedPrio': { 'ID': 1839, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB16: Externer Bedarf hat Prioritaet' }, + 'FB17BA12Desinf': { 'ID': 1840, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB17: BA12 waehrend thermischer Desinfektion ein' }, + 'FB18BA12TWAnf': { 'ID': 1841, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB18: BA12 waehrend Trinkwasseranforderung ein' }, + 'FB19ZPSFumsch': { 'ID': 1842, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB19: Zeitprogrammgest. Speicherfuehlerumschaltung' }, + 'FB20Durchgngreg': { 'ID': 1843, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB20: TW-Kreis nachgeregelt mit Durchgangsventil' }, + 'FB21DrehzLadep': { 'ID': 1844, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB21: Drehzahlregelung der Ladepumpe' }, + 'Unbekannt-9899': { 'ID': 9899, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-9900': { 'ID': 9900, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-9901': { 'ID': 9901, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-9902': { 'ID': 9902, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-9903': { 'ID': 9903, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-9904': { 'ID': 9904, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-9905': { 'ID': 9905, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-9906': { 'ID': 9906, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-9907': { 'ID': 9907, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-9908': { 'ID': 9908, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-9909': { 'ID': 9909, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-9910': { 'ID': 9910, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-55999': { 'ID': 55999, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-56000': { 'ID': 56000, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-56001': { 'ID': 56001, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-56002': { 'ID': 56002, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-56003': { 'ID': 56003, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-56004': { 'ID': 56004, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-56005': { 'ID': 56005, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-56006': { 'ID': 56006, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-65534': { 'ID': 65534, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' } +} diff --git a/trovis557x/_listen.py b/trovis557x/_listen.py new file mode 100644 index 000000000..f56c687c4 --- /dev/null +++ b/trovis557x/_listen.py @@ -0,0 +1,19 @@ +listen_tabelle = { # TROVIS-Listen + # Register + 'Liste_Schalter': {0: 'PA', 1: 'Auto', 2: 'Standby', 3: 'Hand', 4: 'Sonne', 5: 'Mond'}, + 'Liste_Lesemodus': {0: '24h', 1: 'Cont', 2: 'Coil'}, + 'Liste_Durchfluss': {0: 'm³/h', 1: 'l/h'}, + 'Liste_Volumen': {0: 'm³', 1: 'l'}, + 'Liste_Arbeit': {0: 'MWh', 1: 'kWh', 2: 'GJ'}, + 'Liste_Leistung': {0: 'kW', 1: 'MW'}, + 'Liste_Temperatur': {0: '°C'}, + # Coils + 'Liste_NJ': {0: 'nein', 1: 'ja'}, + 'Liste_AE': {0: 'aus', 1: 'ein'}, + 'Liste_IA': {0: 'inaktiv', 1: 'aktiv'}, + 'Liste_HZ': {0: 'halt', 1: 'zu'}, + 'Liste_HA': {0: 'halt', 1: 'auf'}, + 'Liste_FA': {0: 'ferngesteuert', 1: 'autark'}, + 'Liste_FS': {0: 'fallend', 1: 'steigend'}, + +} diff --git a/trovis557x/_register.py b/trovis557x/_register.py new file mode 100644 index 000000000..9b3e5ae7a --- /dev/null +++ b/trovis557x/_register.py @@ -0,0 +1,6484 @@ +register_bereiche = ([0, 6], [9, 40], [98, 154], [159, 166], [200, 214], + [299, 319], [999, 1044], [1053, 1071], [1089, 1095], [1199, 1243], + [1255, 1271], [1455, 1470], [1799, 1812], [1827, 1839], [1855, 1870], + [6469, 6498] +) + +register_tabelle = { + 'Geraetekennung': { 'ID': 0, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 5000, 'Busmax': 6000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 5000, 'Wertmax': 6000, 'Name': 'Erzeugnisnummer (Gerätekennung)' }, + 'Anlage': { 'ID': 1, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Version', 'Buswert': 0, 'Busmin': 10, 'Busmax': 500, 'Faktor': 1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 50, 'Name': 'Anlagenkennziffer' }, + 'Firmware-Version': { 'ID': 2, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Version', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Firmwareversion' }, + 'Hardware-Version': { 'ID': 3, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Version', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 100, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Hardwareversion' }, + 'Sonderfunktionen': { 'ID': 4, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 6000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 6000, 'Name': 'Reglerupdate via Modbus / Reglerneustart' }, + 'Regler-ID': { 'ID': 5, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Regler-ID (interne Seriennummer)' }, + 'Unbekannt-6': { 'ID': 6, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'AussentempAF1': { 'ID': 9, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 1600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 160, 'Name': 'Meßwert des Eingangs AF1 (CL88)' }, + 'AussentempAF2': { 'ID': 10, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 1600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 160, 'Name': 'Meßwert des Eingangs AF2' }, + 'Unbekannt-9': { 'ID': 11, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'VorlauftempVF1': { 'ID': 12, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 1600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 160, 'Name': 'Meßwert des Eingangs VF1' }, + 'VorlauftempVF2': { 'ID': 13, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 1600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 160, 'Name': 'Meßwert des Eingangs VF2' }, + 'VorlauftempVF3': { 'ID': 14, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 1600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 160, 'Name': 'Meßwert des Eingangs VF3' }, + 'VorlauftempVF4': { 'ID': 15, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 1600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 160, 'Name': 'Meßwert des Eingangs VF4' }, + 'RueckltempRueF1': { 'ID': 16, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 1600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 160, 'Name': 'Meßwert des Eingangs RüF1' }, + 'RueckltempRueF2': { 'ID': 17, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 1600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 160, 'Name': 'Meßwert des Eingangs RüF2' }, + 'Unbekannt-16': { 'ID': 18, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'RaumtempRF1': { 'ID': 19, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 1600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 160, 'Name': 'Meßwert des Eingangs RF1' }, + 'RaumtempRF2': { 'ID': 20, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 1600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 160, 'Name': 'Meßwert des Eingangs RF2' }, + 'Unbekannt-19': { 'ID': 21, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'SpeichertempSF1': { 'ID': 22, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 1600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 160, 'Name': 'Meßwert des Eingangs SF1' }, + 'SpeichertempSF2': { 'ID': 23, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 1600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 160, 'Name': 'Meßwert des Eingangs SF2' }, + 'SpeichertempSF3': { 'ID': 24, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 1600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 160, 'Name': 'Meßwert des Eingangs SF3' }, + 'FerngeberFG1': { 'ID': 25, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -50, 'Busmax': 20000, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'K', 'Wert': 0, 'Wertmin': -5, 'Wertmax': 2000, 'Name': 'Meßwert des Eingangs FG1' }, + 'FerngeberFG2': { 'ID': 26, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -50, 'Busmax': 20000, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'K', 'Wert': 0, 'Wertmin': -5, 'Wertmax': 2000, 'Name': 'Meßwert des Eingangs FG2' }, + 'Unbekannt-25': { 'ID': 27, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'MesswertImp-h': { 'ID': 28, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': 'imp/h', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'Meßwert [Imp/h] am Eingang WMZ' }, + 'Messwertm3-h': { 'ID': 29, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 10000, 'Faktor': 0.01, 'Digits': 2, 'Einheit': 'm³/h', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 100, 'Name': 'Meßwert [m3/h] am Eingang WMZ' }, + 'AA10-10V': { 'ID': 30, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'V', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Analogausgang Regelkreis 1 0-10V' }, + 'AA20-10V': { 'ID': 31, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'V', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Analogausgang Regelkreis 2 0-10V' }, + 'MaxVorlSollw': { 'ID': 98, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Maximaler Vorlaufsollwert des Reglers' }, + 'Uhrzeit': { 'ID': 99, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'Uhrzeit' }, + 'Datum': { 'ID': 100, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'Datum' }, + 'Jahr': { 'ID': 101, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 2000, 'Busmax': 2098, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 2000, 'Wertmax': 2098, 'Name': 'Jahr' }, + 'Schalteroben': { 'ID': 102, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Schalter', 'Buswert': 0, 'Busmin': 0, 'Busmax': 10, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Schalter RK1 (0=PA, 1=Auto, 2=Stdby, 3=Hand, 4=Sonne, 5=Mond)' }, + 'Schaltermitte': { 'ID': 103, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Schalter', 'Buswert': 0, 'Busmin': 0, 'Busmax': 10, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Schalter RK2 (0=PA, 1=Auto, 2=Stdby, 3=Hand, 4=Sonne, 5=Mond)' }, + 'Schalterunten': { 'ID': 104, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Schalter', 'Buswert': 0, 'Busmin': 0, 'Busmax': 10, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Schalter TW (0=PA, 1=Auto, 2=Stdby, 3=Hand)' }, + 'BetriebsArtRk1': { 'ID': 105, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_Schalter', 'Buswert': 0, 'Busmin': 2, 'Busmax': 5, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 2, 'Wertmax': 5, 'Name': '2=Stdby, 4=Sonne, 5=Mond (CL89)' }, + 'StellsignalRk1': { 'ID': 106, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 100, 'Faktor': 1, 'Digits': 0, 'Einheit': '%', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 100, 'Name': 'Stellsignal Rk1 [0...100%] (CL90)' }, + 'BetriebsArtRk2': { 'ID': 107, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_Schalter', 'Buswert': 0, 'Busmin': 2, 'Busmax': 5, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 2, 'Wertmax': 5, 'Name': '2=Stdby, 4=Sonne, 5=Mond (CL91)' }, + 'StellsignalRk2': { 'ID': 108, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 100, 'Faktor': 1, 'Digits': 0, 'Einheit': '%', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 100, 'Name': 'Stellsignal Rk2 [0...100%] (CL92)' }, + 'Unbekannt-41': { 'ID': 109, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-42': { 'ID': 110, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'BetriebsArtTW': { 'ID': 111, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_Schalter', 'Buswert': 0, 'Busmin': 2, 'Busmax': 5, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 2, 'Wertmax': 5, 'Name': '2=Stdby, 4=Sonne, 5=Mond (CL95)' }, + 'SommerDatAnf': { 'ID': 112, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'Datum Beginn Sommerzeitraum (CO5, Fb04)' }, + 'SommerDatEnd': { 'ID': 113, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'Datum Ende Sommerzeitraum (CO5, Fb04)' }, + 'SommerTagzein': { 'ID': 114, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 3, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 3, 'Name': 'Anzahl Tage für Sommerbetrieb ein (CO5, Fb04)' }, + 'SommerTagzaus': { 'ID': 115, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 3, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 3, 'Name': 'Anzahl Tage für Sommerbetrieb aus (CO5, Fb04)' }, + 'SommerAT-Wert': { 'ID': 116, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 30, 'Name': 'AT-Grenzwert Sommerbetrieb (CO5, Fb04)' }, + 'ATVerzoegerung': { 'ID': 117, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 6, 'Faktor': 1, 'Digits': 0, 'Einheit': 'K/h', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 6, 'Name': 'Verzögerung AT-Anpassung (CO5,Fb05/CO5,Fb06)' }, + 'Unbekannt-50': { 'ID': 118, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-51': { 'ID': 119, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'TempuewAbweichung': { 'ID': 120, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 10, 'Busmax': 300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 30, 'Name': 'Temperaturüberwachung: Regelabweichung (CO5,Fb19)' }, + 'TempuewZeitfenstr': { 'ID': 121, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 120, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 120, 'Name': 'Temperaturüberwachung: Zeitfenster (CO5,Fb19)' }, + 'FrostschutzGW': { 'ID': 122, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -150, 'Busmax': 30, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -15, 'Wertmax': 3, 'Name': 'Frostschutzgrenzwert (CO5, Fb09)' }, + 'AnfangAT0V': { 'ID': 123, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -300, 'Busmax': 1000, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -30, 'Wertmax': 100, 'Name': 'Übertragungsbereichsanfang, AT 0V (CO5,Fb23)' }, + 'EndeAT10V': { 'ID': 124, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -300, 'Busmax': 1000, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -30, 'Wertmax': 100, 'Name': 'Übertragungsbereichsende, AT 10V (CO5,Fb23)' }, + 'Unbekannt-57': { 'ID': 125, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-58': { 'ID': 126, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-59': { 'ID': 127, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-60': { 'ID': 128, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'MaxImp-h': { 'ID': 129, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 65000, 'Faktor': 1, 'Digits': 0, 'Einheit': 'imp/h', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 65000, 'Name': 'Maximalgrenzwert ([Imp/h], CO5->Fb10)' }, + 'MaxHImp-h': { 'ID': 130, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 65000, 'Faktor': 1, 'Digits': 0, 'Einheit': 'imp/h', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 65000, 'Name': 'Maximalgrenzwert Heizbetrieb ([Imp/h], CO5->Fb10)' }, + 'MaxTImp-h': { 'ID': 131, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 65000, 'Faktor': 1, 'Digits': 0, 'Einheit': 'imp/h', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 65000, 'Name': 'Maximalgrenzwert Trinkwasser ([Imp/h], CO5->Fb10)' }, + 'MaxWMZ': { 'ID': 132, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 65000, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'kW', 'Wert': 0, 'Wertmin': 0.1, 'Wertmax': 6500, 'Name': 'Maximalgrenzwert ([kW], CO6->Fb12)' }, + 'MaxHWMZ': { 'ID': 133, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 65000, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'kW', 'Wert': 0, 'Wertmin': 0.1, 'Wertmax': 6500, 'Name': 'Maximalgrenzwert Heizbetrieb ([kW], CO6->Fb12)' }, + 'MaxTWMZ': { 'ID': 134, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 65000, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'kW', 'Wert': 0, 'Wertmin': 0.1, 'Wertmax': 6500, 'Name': 'Maximalgrenzwert Trinkwasser ([kW], CO6->Fb12)' }, + 'BegImpWMZ': { 'ID': 135, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0.1, 'Wertmax': 10, 'Name': 'Begrenzungsfaktor Impulseingang / Leistung' }, + 'MBAnfang0-4mA': { 'ID': 136, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 4, 'Faktor': 1, 'Digits': 0, 'Einheit': 'mA', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 4, 'Name': 'Meßbereichsanfang 0 oder 4 mA' }, + 'MBEndem3-h': { 'ID': 137, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 65000, 'Faktor': 0.01, 'Digits': 2, 'Einheit': 'm³/h', 'Wert': 0, 'Wertmin': 0.01, 'Wertmax': 650, 'Name': 'Meßbereichsende bei 20mA [m3/h]' }, + 'KpKorrDfluss': { 'ID': 138, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0.1, 'Wertmax': 10, 'Name': 'Begrenzungsfaktor Durchfluss' }, + 'Maxm3-hWMZ': { 'ID': 139, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 65000, 'Faktor': 0.01, 'Digits': 2, 'Einheit': 'm³/h', 'Wert': 0, 'Wertmin': 0.01, 'Wertmax': 650, 'Name': 'Maximalgrenzwert ([m3/h], CO5,CO6->Fb11)' }, + 'MaxHm3-hWMZ': { 'ID': 140, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 65000, 'Faktor': 0.01, 'Digits': 2, 'Einheit': 'm³/h', 'Wert': 0, 'Wertmin': 0.01, 'Wertmax': 650, 'Name': 'Maximalgrenzwert Heizbetr. ([m3/h], CO5,CO6->Fb11)' }, + 'MaxTm3-hWMZ': { 'ID': 141, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 65000, 'Faktor': 0.01, 'Digits': 2, 'Einheit': 'm³/h', 'Wert': 0, 'Wertmin': 0.01, 'Wertmax': 650, 'Name': 'Maximalgrenzwert Trinkw. ([m3/h], CO5,CO6->Fb11)' }, + 'Stationsadresse': { 'ID': 142, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 32000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 32000, 'Name': 'Stationsadresse (Kaltstart 255)' }, + 'Unbekannt-75': { 'ID': 143, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Write-EnModem': { 'ID': 144, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1999, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1999, 'Name': 'Modem-Schreibfreigabe (Schlüsselzahleingabe)' }, + 'ZyklInitModem': { 'ID': 145, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 255, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 255, 'Name': 'Modem-Zyklische Initialisierung' }, + 'WahlpauseModem': { 'ID': 146, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 255, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 255, 'Name': 'Modem-Wahlpause' }, + 'AnwWdhModem': { 'ID': 147, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 99, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 99, 'Name': 'Modem-Anzahl der Anwahlversuche' }, + 'TimeoutModem': { 'ID': 148, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 255, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 255, 'Name': 'Modem-Timeout' }, + 'FehlerstatusReg': { 'ID': 149, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Fehlerstatusregister (CL1)' }, + 'Unbekannt-82': { 'ID': 150, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'FehlerstatArchiv': { 'ID': 151, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Fehlerstatusarchiv' }, + 'Unbekannt-84': { 'ID': 152, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'FehlerzaehlerReg': { 'ID': 153, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Fehlerzählerregister' }, + 'FehlerStoeranwahl': { 'ID': 154, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Störanwahl und Displayanzeige Error (Bits des FSR)' }, + 'Unbekannt-87': { 'ID': 155, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-88': { 'ID': 156, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-89': { 'ID': 157, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-90': { 'ID': 158, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-91': { 'ID': 159, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-92': { 'ID': 160, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-93': { 'ID': 161, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-94': { 'ID': 162, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-95': { 'ID': 163, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-96': { 'ID': 164, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-97': { 'ID': 165, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-98': { 'ID': 166, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr1TempRLG1': { 'ID': 200, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Temperatur 1 am RLG1 von Datenpunkt (HR)' }, + 'Nr2TempRLG1': { 'ID': 201, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Temperatur 2 am RLG1 von Datenpunkt (HR)' }, + 'Nr3TempRLG1': { 'ID': 202, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Temperatur 3 am RLG1 von Datenpunkt (HR)' }, + 'Nr4TempRLG1': { 'ID': 203, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Temperatur 4 am RLG1 von Datenpunkt (HR)' }, + 'Nr5TempRLG1': { 'ID': 204, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Temperatur 5 am RLG1 von Datenpunkt (HR)' }, + 'Nr1DezRLG1': { 'ID': 205, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Dezimalwert 1 am RLG1 von Datenpunkt (HR)' }, + 'Nr2DezRLG1': { 'ID': 206, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Dezimalwert 2 am RLG1 von Datenpunkt (HR)' }, + 'Nr3DezRLG1': { 'ID': 207, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Dezimalwert 3 am RLG1 von Datenpunkt (HR)' }, + 'Nr4DezRLG1': { 'ID': 208, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Dezimalwert 4 am RLG1 von Datenpunkt (HR)' }, + 'Nr5DezRLG1': { 'ID': 209, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Dezimalwert 5 am RLG1 von Datenpunkt (HR)' }, + 'Nr1HexRLG1': { 'ID': 210, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Hexadezimalwert 1 am RLG1 von Datenpunkt (HR)' }, + 'Nr2HexRLG1': { 'ID': 211, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Hexadezimalwert 2 am RLG1 von Datenpunkt (HR)' }, + 'Nr3HexRLG1': { 'ID': 212, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Hexadezimalwert 3 am RLG1 von Datenpunkt (HR)' }, + 'Nr4HexRLG1': { 'ID': 213, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Hexadezimalwert 4 am RLG1 von Datenpunkt (HR)' }, + 'Nr5HexRLG1': { 'ID': 214, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Hexadezimalwert 5 am RLG1 von Datenpunkt (HR)' }, + 'DlogZykluszeit': { 'ID': 299, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Zykluszeit in Minuten' }, + 'DlogAnalogRegNr01': { 'ID': 300, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Vorlaufsollwert Rk1 (HR 41000)' }, + 'DlogAnalogRegNr02': { 'ID': 301, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Vorlaufsollwert Rk2 (HR 41200)' }, + 'DlogAnalogRegNr03': { 'ID': 302, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Analoger Datenpunkt #3' }, + 'DlogAnalogRegNr04': { 'ID': 303, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Analoger Datenpunkt #4' }, + 'DlogAnalogRegNr05': { 'ID': 304, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Analoger Datenpunkt #5' }, + 'DlogAnalogRegNr06': { 'ID': 305, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Analoger Datenpunkt #6' }, + 'DlogAnalogRegNr07': { 'ID': 306, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Analoger Datenpunkt #7' }, + 'DlogAnalogRegNr08': { 'ID': 307, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Analoger Datenpunkt #8' }, + 'DlogAnalogRegNr09': { 'ID': 308, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Analoger Datenpunkt #9' }, + 'DlogAnalogRegNr10': { 'ID': 309, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Analoger Datenpunkt #10' }, + 'DlogBinaerRegNr01': { 'ID': 310, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Binärer Datenpunkt #01' }, + 'DlogBinaerRegNr02': { 'ID': 311, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Binärer Datenpunkt #02' }, + 'DlogBinaerRegNr03': { 'ID': 312, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Binärer Datenpunkt #03' }, + 'DlogBinaerRegNr04': { 'ID': 313, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Binärer Datenpunkt #04' }, + 'DlogBinaerRegNr05': { 'ID': 314, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Binärer Datenpunkt #05' }, + 'DlogBinaerRegNr06': { 'ID': 315, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Binärer Datenpunkt #06' }, + 'DlogBinaerRegNr07': { 'ID': 316, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Binärer Datenpunkt #07' }, + 'DlogBinaerRegNr08': { 'ID': 317, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Binärer Datenpunkt #08' }, + 'DlogBinaerRegNr09': { 'ID': 318, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Binärer Datenpunkt #09' }, + 'DlogBinaerRegNr10': { 'ID': 319, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Binärer Datenpunkt #10' }, + 'VorlSollwRk1': { 'ID': 999, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlaufsollwert Rk1 (CL116)' }, + 'MaxVorlRk1': { 'ID': 1000, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Maximale Vorlauftemperatur Rk1' }, + 'MinVorlRk1': { 'ID': 1001, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Minimale Vorlauftemperatur Rk1' }, + 'TagSollRk1': { 'ID': 1002, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 400, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 40, 'Name': 'Raumsollwert Tag Rk1' }, + 'NachtSollRk1': { 'ID': 1003, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 400, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 40, 'Name': 'Raumsollwert Nacht Rk1' }, + 'Unbekannt-140': { 'ID': 1004, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'SteigHeizKLRk1': { 'ID': 1005, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 2, 'Busmax': 32, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0.2, 'Wertmax': 3.2, 'Name': 'Steigung VL Heizkennlinie Rk1 (KL nach Steigung)' }, + 'NivHeizKLRk1': { 'ID': 1006, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -300, 'Busmax': 300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'K', 'Wert': 0, 'Wertmin': -30, 'Wertmax': 30, 'Name': 'Niveau VL Heizkennlinie Rk1 (KL nach Steigung)' }, + 'Unbekannt-143': { 'ID': 1007, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'StgRuecklKLRk1': { 'ID': 1008, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 2, 'Busmax': 32, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0.2, 'Wertmax': 3.2, 'Name': 'Steigung Rücklaufkennlinie Rk1 (KL nach Steigung)' }, + 'NivRuecklKLRk1': { 'ID': 1009, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -300, 'Busmax': 300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'K', 'Wert': 0, 'Wertmin': -30, 'Wertmax': 30, 'Name': 'Niveau Rücklaufkennlinie Rk1 (KL nach Steigung)' }, + 'MaxRuecklRk1': { 'ID': 1010, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Maximale Rücklauftemperatur Rk1' }, + 'FussRuecklRk1': { 'ID': 1011, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Fußpunkt Rücklauftemperatur Rk1' }, + 'AT1HeizKLRk1': { 'ID': 1012, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 50, 'Name': 'Außentemperatur 1.Punkt Rk1 (KL nach 4 Punkten)' }, + 'AT2HeizKLRk1': { 'ID': 1013, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 50, 'Name': 'Außentemperatur 2.Punkt Rk1 (KL nach 4 Punkten)' }, + 'AT3HeizKLRk1': { 'ID': 1014, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 50, 'Name': 'Außentemperatur 3.Punkt Rk1 (KL nach 4 Punkten)' }, + 'AT4HeizKLRk1': { 'ID': 1015, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 50, 'Name': 'Außentemperatur 4.Punkt Rk1 (KL nach 4 Punkten)' }, + 'VT1THeizKLRk1': { 'ID': 1016, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Tag 1.Punkt Rk1 (KL 4 Punkte)' }, + 'VT2THeizKLRk1': { 'ID': 1017, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Tag 2.Punkt Rk1 (KL 4 Punkte)' }, + 'VT3THeizKLRk1': { 'ID': 1018, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Tag 3.Punkt Rk1 (KL 4 Punkte)' }, + 'VT4THeizKLRk1': { 'ID': 1019, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Tag 4.Punkt Rk1 (KL 4 Punkte)' }, + 'VT1NHeizKLRk1': { 'ID': 1020, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Nacht 1.Punkt Rk1 (KL 4 Punkte)' }, + 'VT2NHeizKLRk1': { 'ID': 1021, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Nacht 2.Punkt Rk1 (KL 4 Punkte)' }, + 'VT3NHeizKLRk1': { 'ID': 1022, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Nacht 3.Punkt Rk1 (KL 4 Punkte)' }, + 'VT4NHeizKLRk1': { 'ID': 1023, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Nacht 4.Punkt Rk1 (KL 4 Punkte)' }, + 'RL1HeizKLRk1': { 'ID': 1024, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Rücklauftemperatur 1.Punkt Rk1 (KL nach 4 Punkten)' }, + 'RL2HeizKLRk1': { 'ID': 1025, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Rücklauftemperatur 2.Punkt Rk1 (KL nach 4 Punkten)' }, + 'RL3HeizKLRk1': { 'ID': 1026, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Rücklauftemperatur 3.Punkt Rk1 (KL nach 4 Punkten)' }, + 'RL4HeizKLRk1': { 'ID': 1027, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Rücklauftemperatur 4.Punkt Rk1 (KL nach 4 Punkten)' }, + 'Unbekannt-164': { 'ID': 1028, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-165': { 'ID': 1029, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-166': { 'ID': 1030, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-167': { 'ID': 1031, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'RuecklSollwRk1': { 'ID': 1032, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Rücklaufsollwert Rk1 (CL117)' }, + 'BegRuecklRk1': { 'ID': 1033, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0.1, 'Wertmax': 10, 'Name': 'Begrenzungsfaktor Rücklauf Rk1 (CO1, Fb03)' }, + 'Unbekannt-170': { 'ID': 1034, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'ATAusNennbRk1': { 'ID': 1035, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 50, 'Name': 'AT-Abschaltwert Nennbetrieb Rk1' }, + 'ATAusReduzRk1': { 'ID': 1036, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -200, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -20, 'Wertmax': 50, 'Name': 'AT-Abschaltwert Reduzierbetrieb Rk1' }, + 'ATEinNennbRk1': { 'ID': 1037, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -200, 'Busmax': 50, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -20, 'Wertmax': 5, 'Name': 'AT-Einschaltwert Nennbetrieb Rk1' }, + 'ueberhoehungSoll': { 'ID': 1038, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 50, 'Name': 'Überhöhung Sollwert Primärtauscherregelung' }, + 'SollbinBedarf': { 'ID': 1039, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Sollwert bei binärer Bedarfsverarbeitung' }, + 'ZykluszeitRk1': { 'ID': 1040, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 100, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 100, 'Name': 'Zykluszeit Rk1 (CO1, Fb09)' }, + 'TagSollFWRk1': { 'ID': 1041, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Sollwert Tagbetrieb Rk1 (Festwertregelung)' }, + 'NachtSollFWRk1': { 'ID': 1042, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Sollwert Nachtbetrieb Rk1 (Festwertregelung)' }, + 'KpKuzztadapRk1': { 'ID': 1043, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 250, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 25, 'Name': 'Kp (Verstärung) Kurzzeitadaption Rk1 (C01F09)' }, + 'SonderPufferSoll': { 'ID': 1044, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 5, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 0.5, 'Wertmax': 130, 'Name': 'Sonder-Pufferspeichersollwert, Anl 14,15 (CL133)' }, + 'Unbekannt-181': { 'ID': 1053, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-182': { 'ID': 1054, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'StarttempRk1': { 'ID': 1055, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 200, 'Busmax': 600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 20, 'Wertmax': 60, 'Name': 'CO1, Fb05: Starttemperatur Rk1' }, + 'AnfangBedarf0V': { 'ID': 1056, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 130, 'Name': 'Übertragungsbereichsanfang, Bedarf 0V (CO1, Fb08)' }, + 'EndeBedarf10V': { 'ID': 1057, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 130, 'Name': 'Übertragungsbereichsende, Bedarf 10V (CO1, Fb08)' }, + 'TempanstiegRk1': { 'ID': 1058, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 10, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C/h', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 10, 'Name': 'CO1, Fb05: Temperaturanstieg Rk1' }, + 'MaxTempRk1': { 'ID': 1059, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 250, 'Busmax': 600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 25, 'Wertmax': 60, 'Name': 'CO1, Fb05: Maximaltemperatur Rk1' }, + 'HalteMaxTempRk1': { 'ID': 1060, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 10, 'Faktor': 1, 'Digits': 1, 'Einheit': 'd', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 10, 'Name': 'CO1, Fb05: Haltezeit Maximaltemperatur Rk1' }, + 'TempAbsenkngRk1': { 'ID': 1061, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C/h', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'CO1, Fb05: Temperaturabsenkung Rk1' }, + 'RegdiffVorlRk1': { 'ID': 1062, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -1000, 'Busmax': 1000, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -100, 'Wertmax': 100, 'Name': 'Regeldifferenz Vorlauf Rk1' }, + 'BegRegdiffRk1': { 'ID': 1063, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 20, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'K', 'Wert': 0, 'Wertmin': 2, 'Wertmax': 10, 'Name': 'Maximale Regelabweichung Rk1 (CO1, Fb13)' }, + 'KpRk1Y1': { 'ID': 1064, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0.1, 'Wertmax': 50, 'Name': 'Proportionalverstärkung Rk1(Y1)' }, + 'TnRk1Y1': { 'ID': 1065, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 999, 'Faktor': 1, 'Digits': 0, 'Einheit': 's', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 999, 'Name': 'Nachstellzeit Rk1(Y1)' }, + 'TyRk1': { 'ID': 1066, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 15, 'Busmax': 240, 'Faktor': 1, 'Digits': 0, 'Einheit': 's', 'Wert': 0, 'Wertmin': 15, 'Wertmax': 240, 'Name': 'Laufzeit Stellantrieb Rk1 (bei 3-Punkt)' }, + 'TvY1': { 'ID': 1067, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999, 'Faktor': 1, 'Digits': 0, 'Einheit': 's', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 999, 'Name': 'Vorhaltezeit Y1 (bei 0...10V)' }, + 'SchaltdiffRk1': { 'ID': 1068, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 10, 'Busmax': 300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'K', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 30, 'Name': 'Schaltdifferenz Rk1 (bei 2-Punkt)' }, + 'MinEinRk1': { 'ID': 1069, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 10, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Minimale Einschaltzeit Rk1 (bei 2-Punkt)' }, + 'MinAusRk1': { 'ID': 1070, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 10, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Minimale Ausschaltzeit Rk1 (bei 2-Punkt)' }, + 'Unbekannt-199': { 'ID': 1071, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'AktuelMittelwY1': { 'ID': 1089, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Aktueller Mittelwert, Y1 bei aktiver Regelung' }, + 'LMonatMittelwY1': { 'ID': 1090, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Mittelwert letzter Monat, Y1 bei aktiver Regelung' }, + 'VMonatMittelwY1': { 'ID': 1091, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Mittelwert vorletzter Monat, Y1 bei aktiv. Regel.' }, + 'Unbekannt-203': { 'ID': 1092, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-204': { 'ID': 1093, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-205': { 'ID': 1094, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-206': { 'ID': 1095, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'VorlSollwRk2': { 'ID': 1199, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlaufsollwert Rk2 (CL118)' }, + 'MaxVorlRk2': { 'ID': 1200, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Maximale Vorlauftemperatur Rk2' }, + 'MinVorlRk2': { 'ID': 1201, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Minimale Vorlauftemperatur Rk2' }, + 'TagSollRk2': { 'ID': 1202, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 400, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 40, 'Name': 'Raumsollwert Tag Rk2' }, + 'NachtSollRk2': { 'ID': 1203, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 400, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 40, 'Name': 'Raumsollwert Nacht Rk2' }, + 'Unbekannt-212': { 'ID': 1204, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'SteigHeizKLRk2': { 'ID': 1205, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 2, 'Busmax': 32, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0.2, 'Wertmax': 3.2, 'Name': 'Steigung VL Heizkennlinie Rk2 (KL nach Steigung)' }, + 'NivHeizKLRk2': { 'ID': 1206, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -300, 'Busmax': 300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'K', 'Wert': 0, 'Wertmin': -30, 'Wertmax': 30, 'Name': 'Niveau VL Heizkennlinie Rk2 (KL nach Steigung)' }, + 'Unbekannt-215': { 'ID': 1207, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'StgRuecklKLRk2': { 'ID': 1208, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 2, 'Busmax': 32, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0.2, 'Wertmax': 3.2, 'Name': 'Steigung Rücklaufkennlinie Rk2 (KL nach Steigung)' }, + 'NivRuecklKLRk2': { 'ID': 1209, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -300, 'Busmax': 300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'K', 'Wert': 0, 'Wertmin': -30, 'Wertmax': 30, 'Name': 'Niveau Rücklaufkennlinie Rk2 (KL nach Steigung)' }, + 'MaxRuecklRk2': { 'ID': 1210, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Maximale Rücklauftemperatur Rk2 (KL nach Steigung)' }, + 'FussRuecklRk2': { 'ID': 1211, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Fußpunkt Rücklauftemperatur Rk2 (KL nach Steigung)' }, + 'AT1HeizKLRk2': { 'ID': 1212, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 50, 'Name': 'Außentemperatur 1.Punkt Rk2 (KL nach 4 Punkten)' }, + 'AT2HeizKLRk2': { 'ID': 1213, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 50, 'Name': 'Außentemperatur 2.Punkt Rk2 (KL nach 4 Punkten)' }, + 'AT3HeizKLRk2': { 'ID': 1214, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 50, 'Name': 'Außentemperatur 3.Punkt Rk2 (KL nach 4 Punkten)' }, + 'AT4HeizKLRk2': { 'ID': 1215, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 50, 'Name': 'Außentemperatur 4.Punkt Rk2 (KL nach 4 Punkten)' }, + 'VT1THeizKLRk2': { 'ID': 1216, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Tag 1.Punkt Rk2 (KL 4 Punkte)' }, + 'VT2THeizKLRk2': { 'ID': 1217, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Tag 2.Punkt Rk2 (KL 4 Punkte)' }, + 'VT3THeizKLRk2': { 'ID': 1218, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Tag 3.Punkt Rk2 (KL 4 Punkte)' }, + 'VT4THeizKLRk2': { 'ID': 1219, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Tag 4.Punkt Rk2 (KL 4 Punkte)' }, + 'VT1NHeizKLRk2': { 'ID': 1220, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Nacht 1.Punkt Rk2 (KL 4 Punkte)' }, + 'VT2NHeizKLRk2': { 'ID': 1221, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Nacht 2.Punkt Rk2 (KL 4 Punkte)' }, + 'VT3NHeizKLRk2': { 'ID': 1222, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Nacht 3.Punkt Rk2 (KL 4 Punkte)' }, + 'VT4NHeizKLRk2': { 'ID': 1223, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Nacht 4.Punkt Rk2 (KL 4 Punkte)' }, + 'RL1HeizKLRk2': { 'ID': 1224, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Rücklauftemperatur 1.Punkt Rk2 (KL nach 4 Punkten)' }, + 'RL2HeizKLRk2': { 'ID': 1225, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Rücklauftemperatur 2.Punkt Rk2 (KL nach 4 Punkten)' }, + 'RL3HeizKLRk2': { 'ID': 1226, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Rücklauftemperatur 3.Punkt Rk2 (KL nach 4 Punkten)' }, + 'RL4HeizKLRk2': { 'ID': 1227, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Rücklauftemperatur 4.Punkt Rk2 (KL nach 4 Punkten)' }, + 'Unbekannt-236': { 'ID': 1228, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-237': { 'ID': 1229, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-238': { 'ID': 1230, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-239': { 'ID': 1231, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'RuecklSollwRk2': { 'ID': 1232, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Rücklaufsollwert Rk2 (CL119)' }, + 'BegRuecklRk2': { 'ID': 1233, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0.1, 'Wertmax': 10, 'Name': 'Begrenzungsfaktor Rücklauf Rk2 (CO2, Fb03)' }, + 'Unbekannt-242': { 'ID': 1234, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'ATAusNennbRk2': { 'ID': 1235, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 50, 'Name': 'AT-Abschaltwert Nennbetrieb Rk2' }, + 'ATAusReduzRk2': { 'ID': 1236, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -200, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -20, 'Wertmax': 50, 'Name': 'AT-Abschaltwert Reduzierbetrieb Rk2' }, + 'ATEinNennbRk2': { 'ID': 1237, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -200, 'Busmax': 50, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -20, 'Wertmax': 5, 'Name': 'AT-Einschaltwert Nennbetrieb Rk2' }, + 'Unbekannt-246': { 'ID': 1238, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-247': { 'ID': 1239, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'ZykluszeitRk2': { 'ID': 1240, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 100, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 100, 'Name': 'Zykluszeit Rk2 (CO2, Fb09)' }, + 'TagSollFWRk2': { 'ID': 1241, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Sollwert Tagbetrieb Rk2 (Festwertregelung)' }, + 'NachtSollFWRk2': { 'ID': 1242, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Sollwert Nachtbetrieb Rk2 (Festwertregelung)' }, + 'KpKuzztadapRk2': { 'ID': 1243, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 250, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 25, 'Name': 'Kp (Verstärung) Kurzzeitadaption Rk2 (C02F09)' }, + 'StarttempRk2': { 'ID': 1255, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 200, 'Busmax': 600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 20, 'Wertmax': 60, 'Name': 'CO2, Fb05: Starttemperatur Rk2' }, + 'Unbekannt-253': { 'ID': 1256, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-254': { 'ID': 1257, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'TempanstiegRk2': { 'ID': 1258, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 10, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C/h', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 10, 'Name': 'CO2, Fb05: Temperaturanstieg Rk2' }, + 'MaxTempRk2': { 'ID': 1259, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 250, 'Busmax': 600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 25, 'Wertmax': 60, 'Name': 'CO2, Fb05: Maximaltemperatur Rk2' }, + 'HalteMaxTempRk2': { 'ID': 1260, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 10, 'Faktor': 1, 'Digits': 0, 'Einheit': 'd', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 10, 'Name': 'CO2, Fb05: Haltezeit Maximaltemperatur Rk2' }, + 'TempAbsenkngRk2': { 'ID': 1261, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C/h', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'CO2, Fb05: Temperaturabsenkung Rk2' }, + 'RegdiffVorlRk2': { 'ID': 1262, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -1000, 'Busmax': 1000, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -100, 'Wertmax': 100, 'Name': 'Regeldifferenz Vorlauf Rk2' }, + 'BegRegdiffRk2': { 'ID': 1263, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 20, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'K', 'Wert': 0, 'Wertmin': 2, 'Wertmax': 10, 'Name': 'Maximale Regelabweichung Rk2 (CO2, Fb13)' }, + 'KpRk2Y2': { 'ID': 1264, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0.1, 'Wertmax': 50, 'Name': 'Proportionalverstärkung Rk2(Y2)' }, + 'TnRk2Y2': { 'ID': 1265, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 999, 'Faktor': 1, 'Digits': 0, 'Einheit': 's', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 999, 'Name': 'Nachstellzeit Rk2(Y2)' }, + 'TyRk2': { 'ID': 1266, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 15, 'Busmax': 240, 'Faktor': 1, 'Digits': 0, 'Einheit': 's', 'Wert': 0, 'Wertmin': 15, 'Wertmax': 240, 'Name': 'Laufzeit Stellantrieb Rk2 (bei 3-Punkt)' }, + 'TvY2': { 'ID': 1267, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999, 'Faktor': 1, 'Digits': 0, 'Einheit': 's', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 999, 'Name': 'Vorhaltezeit Y2 (bei 0...10V)' }, + 'SchaltdiffRk2': { 'ID': 1268, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 10, 'Busmax': 300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'K', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 30, 'Name': 'Schaltdifferenz Rk2 (bei 2-Punkt)' }, + 'MinEinRk2': { 'ID': 1269, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 10, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Minimale Einschaltzeit Rk2 (bei 2-Punkt)' }, + 'MinAusRk2': { 'ID': 1270, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 10, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Minimale Ausschaltzeit Rk2 (bei 2-Punkt)' }, + 'Unbekannt-268': { 'ID': 1271, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-269': { 'ID': 1455, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-270': { 'ID': 1456, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-271': { 'ID': 1457, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-272': { 'ID': 1458, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-273': { 'ID': 1459, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-274': { 'ID': 1460, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-275': { 'ID': 1461, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-276': { 'ID': 1462, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-277': { 'ID': 1463, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-278': { 'ID': 1464, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-279': { 'ID': 1465, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-280': { 'ID': 1466, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-281': { 'ID': 1467, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-282': { 'ID': 1468, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-283': { 'ID': 1469, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-284': { 'ID': 1470, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'TWSollw': { 'ID': 1799, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 200, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 20, 'Wertmax': 90, 'Name': 'Trinkwasser (Speicher) -Sollwert' }, + 'MaxTWSollw': { 'ID': 1800, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Maximale Einstellgrenztemperatur TW-Sollwert' }, + 'MinTWSollw': { 'ID': 1801, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Minimale Einstellgrenztemperatur TW-Sollwert' }, + 'SchaltdiffTW': { 'ID': 1802, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'K', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 30, 'Name': 'Schaltdifferenz Trinkwasser (bzgl. TWSollw)' }, + 'LadTempdiffTW': { 'ID': 1803, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'K', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 50, 'Name': 'Ladetemperaturüberhöhung (bzgl. TWSollw)' }, + 'NachlaufSLP': { 'ID': 1804, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0.1, 'Wertmax': 10, 'Name': 'Nachlauffaktor der SLP' }, + 'MaxLadeTW': { 'ID': 1805, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 90, 'Name': 'Maximale LadetemperaturTW' }, + 'TWHaltewert': { 'ID': 1806, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 200, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 20, 'Wertmax': 90, 'Name': 'Haltewert Trinkwasser (minimale Temperatur TW)' }, + 'AktiverTWSollw': { 'ID': 1807, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Aktiver Trinkwassersollwert' }, + 'SonderTWSollw': { 'ID': 1808, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Sonder-Trinkwassersollwert (CL112)' }, + 'SolarUPEIN': { 'ID': 1809, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 10, 'Busmax': 400, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 40, 'Name': 'Solarkreispumpe EIN' }, + 'SolarUPAUS': { 'ID': 1810, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 10, 'Busmax': 400, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 40, 'Name': 'Solarkreispumpe AUS' }, + 'SolarmaxSpeich': { 'ID': 1811, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 200, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 20, 'Wertmax': 90, 'Name': 'Maximale Speichertemperatur' }, + 'Solarbetrh': { 'ID': 1812, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': 'h', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Solarkreisbetriebsstunden (Reset durch „0“)' }, + 'RuecklSollwTW': { 'ID': 1827, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Maximale Rücklauftemperatur TW' }, + 'BegRuecklTW': { 'ID': 1828, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0.1, 'Wertmax': 10, 'Name': 'Begrenzungsfaktor Rücklauf TW (CO4, Fb03)' }, + 'ThermDesSollw': { 'ID': 1829, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 600, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 60, 'Wertmax': 90, 'Name': 'Desinfektionstemperatur' }, + 'ThermDesTag': { 'ID': 1830, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 7, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 7, 'Name': 'Wochentag der thermischen Desinfektion' }, + 'ThermDesStart': { 'ID': 1831, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'Startzeit der thermischen Desinfektion' }, + 'ThermDesStop': { 'ID': 1832, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'Stoppzeit der thermischen Desinfektion' }, + 'ZeitParallelTW': { 'ID': 1833, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 10, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Zeit bis Abbruch Parallellauf (CO4, Fb06)' }, + 'GTParallelTW': { 'ID': 1834, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 200, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 20, 'Wertmax': 90, 'Name': 'VL-Grenztemperatur für Parallellauf (CO4, Fb06)' }, + 'ZeitVorrangTW': { 'ID': 1835, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 2, 'Busmax': 10, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 2, 'Wertmax': 10, 'Name': 'Zeit bis Trinkwasservorrang (CO4, Fb08/ 09)' }, + 'BegInversregTW': { 'ID': 1836, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0.1, 'Wertmax': 10, 'Name': 'Einflussfaktor Inversregelung (CO4, Fb08)' }, + 'AktiverLadeSoll': { 'ID': 1837, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 200, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 20, 'Wertmax': 90, 'Name': 'Aktiver Ladetemperatur-Sollwert' }, + 'ThermDesHalte': { 'ID': 1838, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 255, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 255, 'Name': 'Haltezeit Desinfektionstemperatur' }, + 'VorrangTWRK': { 'ID': 1839, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 7, 'Busmax': 0, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 7, 'Wertmax': 0, 'Name': 'RK-Auswahl: 1=RK1/2=RK2/3=RK1+2' }, + 'RegeldiffTW': { 'ID': 1862, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -1000, 'Busmax': 1000, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -100, 'Wertmax': 100, 'Name': 'Regeldifferenz TW-Kreis' }, + 'BegRdiffTW': { 'ID': 1863, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 20, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'K', 'Wert': 0, 'Wertmin': 2, 'Wertmax': 10, 'Name': 'Maximale Regelabweichung TW-Kreis (CO4, Fb13)' }, + 'KpTW': { 'ID': 1864, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0.1, 'Wertmax': 50, 'Name': 'Proportionalverstärkung TW-Kreis' }, + 'TnTW': { 'ID': 1865, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 999, 'Faktor': 1, 'Digits': 0, 'Einheit': 's', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 999, 'Name': 'Nachstellzeit TW-Kreis' }, + 'TyTW': { 'ID': 1866, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 15, 'Busmax': 240, 'Faktor': 1, 'Digits': 0, 'Einheit': 's', 'Wert': 0, 'Wertmin': 15, 'Wertmax': 240, 'Name': 'Laufzeit Stellantrieb TW-Kreis (bei 3-Punkt)' }, + 'TvTW': { 'ID': 1867, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999, 'Faktor': 1, 'Digits': 0, 'Einheit': 's', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 999, 'Name': 'Vorhaltezeit TW-Kreis (bei 0...10V)' }, + 'SchaltdiffTW2P': { 'ID': 1868, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 10, 'Busmax': 300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'K', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 30, 'Name': 'Schaltdifferenz TW-Kreis (bei 2-Punkt)' }, + 'MinEinTW': { 'ID': 1869, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 10, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Minimale Einschaltzeit TW-Kreis (bei 2-Punkt)' }, + 'MinAusTW': { 'ID': 1870, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 10, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Minimale Ausschaltzeit TW-Kreis (bei 2-Punkt)' }, + 'Unbekannt-321': { 'ID': 2999, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-322': { 'ID': 3000, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-323': { 'ID': 3001, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-324': { 'ID': 3002, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-325': { 'ID': 3003, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-326': { 'ID': 3004, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-327': { 'ID': 3005, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-328': { 'ID': 3006, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-329': { 'ID': 3007, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-330': { 'ID': 3008, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-331': { 'ID': 3009, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-332': { 'ID': 3010, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-333': { 'ID': 3011, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-334': { 'ID': 3012, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-335': { 'ID': 3013, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-336': { 'ID': 3014, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-337': { 'ID': 3015, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-338': { 'ID': 3016, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-339': { 'ID': 3017, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-340': { 'ID': 3018, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-341': { 'ID': 3019, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-342': { 'ID': 3020, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-343': { 'ID': 3021, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-344': { 'ID': 3022, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-345': { 'ID': 3023, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-346': { 'ID': 3024, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-347': { 'ID': 3025, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-348': { 'ID': 3026, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-349': { 'ID': 3027, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-350': { 'ID': 3028, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-351': { 'ID': 3029, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-352': { 'ID': 3030, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-353': { 'ID': 3031, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-354': { 'ID': 3032, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-355': { 'ID': 3033, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-356': { 'ID': 3034, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-357': { 'ID': 3035, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-358': { 'ID': 3036, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-359': { 'ID': 3037, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-360': { 'ID': 3038, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-361': { 'ID': 3039, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-362': { 'ID': 3040, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-363': { 'ID': 3041, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-364': { 'ID': 3042, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-365': { 'ID': 3043, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-366': { 'ID': 3044, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-367': { 'ID': 3045, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-368': { 'ID': 3046, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-369': { 'ID': 3047, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-370': { 'ID': 3048, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-371': { 'ID': 3049, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-372': { 'ID': 3050, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-373': { 'ID': 3051, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-374': { 'ID': 3052, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-375': { 'ID': 3053, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-376': { 'ID': 3054, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-377': { 'ID': 3055, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-378': { 'ID': 3056, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-379': { 'ID': 3057, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-380': { 'ID': 3058, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-381': { 'ID': 3059, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-382': { 'ID': 3060, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-383': { 'ID': 3061, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-384': { 'ID': 3062, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-385': { 'ID': 3063, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-386': { 'ID': 3064, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-387': { 'ID': 3065, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-388': { 'ID': 3066, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-389': { 'ID': 3067, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-390': { 'ID': 3068, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-391': { 'ID': 3069, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-392': { 'ID': 3070, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-393': { 'ID': 3071, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-394': { 'ID': 3072, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-395': { 'ID': 3073, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-396': { 'ID': 3074, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-397': { 'ID': 3075, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-398': { 'ID': 3076, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-399': { 'ID': 3077, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-400': { 'ID': 3078, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-401': { 'ID': 3079, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-402': { 'ID': 3080, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-403': { 'ID': 3081, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-404': { 'ID': 3082, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-405': { 'ID': 3083, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-406': { 'ID': 3084, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-407': { 'ID': 3085, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-408': { 'ID': 3086, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-409': { 'ID': 3087, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-410': { 'ID': 3088, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-411': { 'ID': 3089, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-412': { 'ID': 3090, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-413': { 'ID': 3091, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-414': { 'ID': 3092, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-415': { 'ID': 3093, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-416': { 'ID': 3094, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-417': { 'ID': 3095, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-418': { 'ID': 3096, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-419': { 'ID': 3097, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-420': { 'ID': 3098, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-421': { 'ID': 3099, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-422': { 'ID': 3100, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-423': { 'ID': 3101, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-424': { 'ID': 3102, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-425': { 'ID': 3103, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-426': { 'ID': 3104, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-427': { 'ID': 3105, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-428': { 'ID': 3106, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-429': { 'ID': 3107, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-430': { 'ID': 3108, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-431': { 'ID': 3109, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-432': { 'ID': 3110, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-433': { 'ID': 3111, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-434': { 'ID': 3112, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-435': { 'ID': 3113, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-436': { 'ID': 3114, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-437': { 'ID': 3115, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-438': { 'ID': 3116, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-439': { 'ID': 3117, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-440': { 'ID': 3118, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-441': { 'ID': 3119, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-442': { 'ID': 3120, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-443': { 'ID': 3121, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-444': { 'ID': 3122, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-445': { 'ID': 3123, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-446': { 'ID': 3124, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-447': { 'ID': 3125, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-448': { 'ID': 3126, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-449': { 'ID': 3127, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-450': { 'ID': 3128, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-451': { 'ID': 3129, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-452': { 'ID': 3130, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-453': { 'ID': 3131, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-454': { 'ID': 3132, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-455': { 'ID': 3133, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-456': { 'ID': 3134, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-457': { 'ID': 3135, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-458': { 'ID': 3136, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-459': { 'ID': 3137, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-460': { 'ID': 3138, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-461': { 'ID': 3139, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-462': { 'ID': 3140, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-463': { 'ID': 3141, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-464': { 'ID': 3142, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-465': { 'ID': 3143, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-466': { 'ID': 3144, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-467': { 'ID': 3145, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-468': { 'ID': 3146, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-469': { 'ID': 3147, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-470': { 'ID': 3148, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-471': { 'ID': 3149, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-472': { 'ID': 3150, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-473': { 'ID': 3151, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-474': { 'ID': 3152, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-475': { 'ID': 3153, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-476': { 'ID': 3154, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-477': { 'ID': 3155, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-478': { 'ID': 3156, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-479': { 'ID': 3157, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-480': { 'ID': 3158, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-481': { 'ID': 3159, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-482': { 'ID': 3160, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-483': { 'ID': 3161, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-484': { 'ID': 3162, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-485': { 'ID': 3163, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-486': { 'ID': 3164, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-487': { 'ID': 3165, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-488': { 'ID': 3166, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-489': { 'ID': 3167, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-490': { 'ID': 3168, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-491': { 'ID': 3169, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-492': { 'ID': 3170, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-493': { 'ID': 3171, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-494': { 'ID': 3172, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-495': { 'ID': 3173, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-496': { 'ID': 3174, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-497': { 'ID': 3175, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-498': { 'ID': 3176, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-499': { 'ID': 3177, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-500': { 'ID': 3178, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-501': { 'ID': 3179, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-502': { 'ID': 3180, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-503': { 'ID': 3181, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-504': { 'ID': 3182, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-505': { 'ID': 3183, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-506': { 'ID': 3184, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-507': { 'ID': 3185, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-508': { 'ID': 3186, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-509': { 'ID': 3187, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-510': { 'ID': 3188, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-511': { 'ID': 3189, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-512': { 'ID': 3190, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-513': { 'ID': 3191, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-514': { 'ID': 3192, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-515': { 'ID': 3193, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-516': { 'ID': 3194, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-517': { 'ID': 3195, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-518': { 'ID': 3196, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-519': { 'ID': 3197, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-520': { 'ID': 3198, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-521': { 'ID': 3199, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-522': { 'ID': 3200, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-523': { 'ID': 3201, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-524': { 'ID': 3202, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-525': { 'ID': 3203, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-526': { 'ID': 3204, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-527': { 'ID': 3205, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-528': { 'ID': 3206, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-529': { 'ID': 3207, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-530': { 'ID': 3208, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-531': { 'ID': 3209, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-532': { 'ID': 3210, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-533': { 'ID': 3211, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-534': { 'ID': 3212, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-535': { 'ID': 3213, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-536': { 'ID': 3214, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-537': { 'ID': 3215, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-538': { 'ID': 3216, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-539': { 'ID': 3217, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-540': { 'ID': 3218, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-541': { 'ID': 3219, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-542': { 'ID': 3220, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-543': { 'ID': 3221, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-544': { 'ID': 3222, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-545': { 'ID': 3223, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-546': { 'ID': 3224, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-547': { 'ID': 3225, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-548': { 'ID': 3226, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-549': { 'ID': 3227, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-550': { 'ID': 3228, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-551': { 'ID': 3229, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-552': { 'ID': 3230, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-553': { 'ID': 3231, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-554': { 'ID': 3232, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-555': { 'ID': 3233, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-556': { 'ID': 3234, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-557': { 'ID': 3235, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-558': { 'ID': 3236, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-559': { 'ID': 3237, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-560': { 'ID': 3238, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-561': { 'ID': 3239, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-562': { 'ID': 3240, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-563': { 'ID': 3241, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-564': { 'ID': 3242, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-565': { 'ID': 3243, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-566': { 'ID': 3244, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-567': { 'ID': 3245, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-568': { 'ID': 3246, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-569': { 'ID': 3247, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-570': { 'ID': 3248, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-571': { 'ID': 3249, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-572': { 'ID': 3250, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-573': { 'ID': 3499, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-574': { 'ID': 3500, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-575': { 'ID': 3501, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-576': { 'ID': 3502, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-577': { 'ID': 3503, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-578': { 'ID': 3504, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-579': { 'ID': 3505, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-580': { 'ID': 3506, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-581': { 'ID': 3507, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-582': { 'ID': 3508, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-583': { 'ID': 3509, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-584': { 'ID': 3510, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-585': { 'ID': 3511, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-586': { 'ID': 3512, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-587': { 'ID': 3513, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-588': { 'ID': 3514, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-589': { 'ID': 3515, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-590': { 'ID': 3516, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-591': { 'ID': 3517, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-592': { 'ID': 3518, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-593': { 'ID': 3519, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-594': { 'ID': 3520, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-595': { 'ID': 3521, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-596': { 'ID': 3522, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-597': { 'ID': 3523, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-598': { 'ID': 3524, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-599': { 'ID': 3525, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-600': { 'ID': 3526, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-601': { 'ID': 3527, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-602': { 'ID': 3528, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-603': { 'ID': 3529, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-604': { 'ID': 3530, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-605': { 'ID': 3531, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-606': { 'ID': 3532, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-607': { 'ID': 3533, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-608': { 'ID': 3534, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-609': { 'ID': 3535, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-610': { 'ID': 3536, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-611': { 'ID': 3537, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-612': { 'ID': 3538, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-613': { 'ID': 3539, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-614': { 'ID': 3540, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-615': { 'ID': 3541, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-616': { 'ID': 3542, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-617': { 'ID': 3543, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-618': { 'ID': 3544, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-619': { 'ID': 3545, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-620': { 'ID': 3546, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-621': { 'ID': 3547, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-622': { 'ID': 3548, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-623': { 'ID': 3999, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-624': { 'ID': 4000, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-625': { 'ID': 4001, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-626': { 'ID': 4002, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-627': { 'ID': 4003, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-628': { 'ID': 4004, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-629': { 'ID': 4005, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-630': { 'ID': 4006, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-631': { 'ID': 4007, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-632': { 'ID': 4008, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-633': { 'ID': 4009, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-634': { 'ID': 4010, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-635': { 'ID': 4011, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-636': { 'ID': 4012, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-637': { 'ID': 4013, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-638': { 'ID': 4014, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-639': { 'ID': 4015, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-640': { 'ID': 4016, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-641': { 'ID': 4017, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-642': { 'ID': 4018, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-643': { 'ID': 4019, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-644': { 'ID': 4020, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-645': { 'ID': 4021, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-646': { 'ID': 4022, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-647': { 'ID': 4023, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-648': { 'ID': 4024, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-649': { 'ID': 4025, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-650': { 'ID': 4026, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-651': { 'ID': 4027, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-652': { 'ID': 4028, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-653': { 'ID': 4029, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-654': { 'ID': 4030, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-655': { 'ID': 4031, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-656': { 'ID': 4032, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-657': { 'ID': 4033, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-658': { 'ID': 4034, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-659': { 'ID': 4035, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-660': { 'ID': 4036, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-661': { 'ID': 4037, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-662': { 'ID': 4038, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-663': { 'ID': 4039, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-664': { 'ID': 4040, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-665': { 'ID': 4041, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-666': { 'ID': 4042, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-667': { 'ID': 4043, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-668': { 'ID': 4044, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-669': { 'ID': 4045, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-670': { 'ID': 4046, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-671': { 'ID': 4047, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-672': { 'ID': 4048, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-673': { 'ID': 4049, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-674': { 'ID': 4050, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-675': { 'ID': 4051, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-676': { 'ID': 4052, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-677': { 'ID': 4053, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-678': { 'ID': 4054, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-679': { 'ID': 4055, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-680': { 'ID': 4056, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-681': { 'ID': 4057, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-682': { 'ID': 4058, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-683': { 'ID': 4059, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-684': { 'ID': 4060, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-685': { 'ID': 4061, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-686': { 'ID': 4062, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-687': { 'ID': 4063, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-688': { 'ID': 4064, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-689': { 'ID': 4065, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-690': { 'ID': 4066, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-691': { 'ID': 4067, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-692': { 'ID': 4068, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-693': { 'ID': 4069, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-694': { 'ID': 4070, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-695': { 'ID': 4071, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-696': { 'ID': 4072, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-697': { 'ID': 4073, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-698': { 'ID': 4074, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-699': { 'ID': 4075, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-700': { 'ID': 4076, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-701': { 'ID': 4077, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-702': { 'ID': 4078, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-703': { 'ID': 4079, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-704': { 'ID': 4080, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-705': { 'ID': 4081, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-706': { 'ID': 4082, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-707': { 'ID': 4083, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-708': { 'ID': 4084, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-709': { 'ID': 4085, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-710': { 'ID': 4086, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-711': { 'ID': 4087, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-712': { 'ID': 4088, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-713': { 'ID': 4089, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-714': { 'ID': 4090, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-715': { 'ID': 4091, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-716': { 'ID': 4092, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-717': { 'ID': 4093, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-718': { 'ID': 4094, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-719': { 'ID': 4095, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-720': { 'ID': 4096, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-721': { 'ID': 4097, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-722': { 'ID': 4098, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-723': { 'ID': 4099, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-724': { 'ID': 4100, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-725': { 'ID': 4101, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-726': { 'ID': 4102, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-727': { 'ID': 4103, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-728': { 'ID': 4104, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-729': { 'ID': 4105, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-730': { 'ID': 4106, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-731': { 'ID': 4107, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-732': { 'ID': 4108, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-733': { 'ID': 4109, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-734': { 'ID': 4110, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-735': { 'ID': 4111, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-736': { 'ID': 4112, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-737': { 'ID': 4113, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-738': { 'ID': 4114, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-739': { 'ID': 4115, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-740': { 'ID': 4116, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-741': { 'ID': 4117, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-742': { 'ID': 4118, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-743': { 'ID': 4119, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-744': { 'ID': 4120, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-745': { 'ID': 4121, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-746': { 'ID': 4122, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-747': { 'ID': 4123, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-748': { 'ID': 4124, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-749': { 'ID': 4125, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-750': { 'ID': 4126, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-751': { 'ID': 4127, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-752': { 'ID': 4128, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-753': { 'ID': 4129, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-754': { 'ID': 4130, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-755': { 'ID': 4131, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-756': { 'ID': 4132, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-757': { 'ID': 4133, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-758': { 'ID': 4134, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-759': { 'ID': 4135, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-760': { 'ID': 4136, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-761': { 'ID': 4137, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-762': { 'ID': 4138, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-763': { 'ID': 4139, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-764': { 'ID': 4140, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-765': { 'ID': 4141, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-766': { 'ID': 4142, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-767': { 'ID': 4143, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-768': { 'ID': 4144, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-769': { 'ID': 4145, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-770': { 'ID': 4146, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-771': { 'ID': 4147, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-772': { 'ID': 4148, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-773': { 'ID': 4149, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-774': { 'ID': 4150, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-775': { 'ID': 4151, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-776': { 'ID': 4152, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-777': { 'ID': 4153, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-778': { 'ID': 4154, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-779': { 'ID': 4155, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-780': { 'ID': 4156, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-781': { 'ID': 4157, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-782': { 'ID': 4158, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-783': { 'ID': 4159, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-784': { 'ID': 4160, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-785': { 'ID': 4161, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-786': { 'ID': 4162, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-787': { 'ID': 4163, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-788': { 'ID': 4164, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-789': { 'ID': 4165, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-790': { 'ID': 4166, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-791': { 'ID': 4167, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-792': { 'ID': 4168, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-793': { 'ID': 4169, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-794': { 'ID': 4170, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-795': { 'ID': 4171, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-796': { 'ID': 4172, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-797': { 'ID': 4173, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-798': { 'ID': 4174, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-799': { 'ID': 4175, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-800': { 'ID': 4176, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-801': { 'ID': 4177, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-802': { 'ID': 4178, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-803': { 'ID': 4179, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-804': { 'ID': 4180, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-805': { 'ID': 4181, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-806': { 'ID': 4182, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-807': { 'ID': 4183, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-808': { 'ID': 4184, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-809': { 'ID': 4185, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-810': { 'ID': 4186, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-811': { 'ID': 4187, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-812': { 'ID': 4188, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-813': { 'ID': 4189, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-814': { 'ID': 4190, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-815': { 'ID': 4191, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-816': { 'ID': 4192, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-817': { 'ID': 4193, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-818': { 'ID': 4194, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-819': { 'ID': 4195, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-820': { 'ID': 4196, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-821': { 'ID': 4197, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-822': { 'ID': 4198, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-823': { 'ID': 4199, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-824': { 'ID': 4200, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-825': { 'ID': 4201, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-826': { 'ID': 4202, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-827': { 'ID': 4203, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-828': { 'ID': 4204, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-829': { 'ID': 4205, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-830': { 'ID': 4206, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-831': { 'ID': 4207, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-832': { 'ID': 4208, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-833': { 'ID': 4209, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-834': { 'ID': 4210, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-835': { 'ID': 4211, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-836': { 'ID': 4212, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-837': { 'ID': 4213, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-838': { 'ID': 4214, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-839': { 'ID': 4215, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-840': { 'ID': 4216, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-841': { 'ID': 4217, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-842': { 'ID': 4218, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-843': { 'ID': 4219, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-844': { 'ID': 4220, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-845': { 'ID': 4221, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-846': { 'ID': 4222, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-847': { 'ID': 4223, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-848': { 'ID': 4224, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-849': { 'ID': 4225, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-850': { 'ID': 4226, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-851': { 'ID': 4227, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-852': { 'ID': 4228, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-853': { 'ID': 4229, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-854': { 'ID': 4230, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-855': { 'ID': 4231, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-856': { 'ID': 4232, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-857': { 'ID': 4233, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-858': { 'ID': 4234, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-859': { 'ID': 4235, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-860': { 'ID': 4236, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-861': { 'ID': 4237, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-862': { 'ID': 4238, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-863': { 'ID': 4239, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-864': { 'ID': 4240, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-865': { 'ID': 4241, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-866': { 'ID': 4242, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-867': { 'ID': 4243, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-868': { 'ID': 4244, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-869': { 'ID': 4245, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-870': { 'ID': 4246, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-871': { 'ID': 4247, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-872': { 'ID': 4248, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-873': { 'ID': 4249, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-874': { 'ID': 4250, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-875': { 'ID': 4251, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-876': { 'ID': 4252, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-877': { 'ID': 4253, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-878': { 'ID': 4254, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-879': { 'ID': 4255, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-880': { 'ID': 4256, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-881': { 'ID': 4257, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-882': { 'ID': 4258, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-883': { 'ID': 4259, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-884': { 'ID': 4260, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-885': { 'ID': 4261, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-886': { 'ID': 4262, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-887': { 'ID': 4263, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-888': { 'ID': 4264, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-889': { 'ID': 4265, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-890': { 'ID': 4266, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-891': { 'ID': 4267, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-892': { 'ID': 4268, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-893': { 'ID': 4269, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-894': { 'ID': 4270, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-895': { 'ID': 4271, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-896': { 'ID': 4272, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-897': { 'ID': 4273, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-898': { 'ID': 4274, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-899': { 'ID': 4275, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-900': { 'ID': 4276, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-901': { 'ID': 4277, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-902': { 'ID': 4278, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-903': { 'ID': 4279, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-904': { 'ID': 4280, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-905': { 'ID': 4281, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-906': { 'ID': 4282, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-907': { 'ID': 4283, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-908': { 'ID': 4284, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-909': { 'ID': 4285, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-910': { 'ID': 4286, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-911': { 'ID': 4287, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-912': { 'ID': 4288, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-913': { 'ID': 4289, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-914': { 'ID': 4290, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-915': { 'ID': 4291, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-916': { 'ID': 4292, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-917': { 'ID': 4293, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-918': { 'ID': 4294, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-919': { 'ID': 4295, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-920': { 'ID': 4296, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-921': { 'ID': 4297, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-922': { 'ID': 4298, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-923': { 'ID': 4299, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-924': { 'ID': 4300, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-925': { 'ID': 4301, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-926': { 'ID': 4302, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-927': { 'ID': 4303, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-928': { 'ID': 4304, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-929': { 'ID': 4305, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-930': { 'ID': 4306, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-931': { 'ID': 4307, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-932': { 'ID': 4308, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-933': { 'ID': 4309, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-934': { 'ID': 4310, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-935': { 'ID': 4311, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-936': { 'ID': 4312, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-937': { 'ID': 4313, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-938': { 'ID': 4314, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-939': { 'ID': 4315, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-940': { 'ID': 4316, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-941': { 'ID': 4317, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-942': { 'ID': 4318, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-943': { 'ID': 4319, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-944': { 'ID': 4320, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-945': { 'ID': 4321, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-946': { 'ID': 4322, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-947': { 'ID': 4323, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-948': { 'ID': 4324, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-949': { 'ID': 4325, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-950': { 'ID': 4326, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-951': { 'ID': 4327, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-952': { 'ID': 4328, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-953': { 'ID': 4329, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-954': { 'ID': 4330, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-955': { 'ID': 4331, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-956': { 'ID': 4332, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-957': { 'ID': 4333, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-958': { 'ID': 4334, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-959': { 'ID': 4335, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-960': { 'ID': 4336, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-961': { 'ID': 4337, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-962': { 'ID': 4338, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-963': { 'ID': 4339, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-964': { 'ID': 4340, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-965': { 'ID': 4341, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-966': { 'ID': 4342, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-967': { 'ID': 4343, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-968': { 'ID': 4344, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-969': { 'ID': 4345, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-970': { 'ID': 4346, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-971': { 'ID': 4347, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-972': { 'ID': 4348, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-973': { 'ID': 4349, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-974': { 'ID': 4350, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-975': { 'ID': 4351, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-976': { 'ID': 4352, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-977': { 'ID': 4353, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-978': { 'ID': 4354, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-979': { 'ID': 4355, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-980': { 'ID': 4356, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-981': { 'ID': 4357, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-982': { 'ID': 4358, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-983': { 'ID': 4359, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-984': { 'ID': 4360, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-985': { 'ID': 4361, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-986': { 'ID': 4362, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-987': { 'ID': 4363, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-988': { 'ID': 4364, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-989': { 'ID': 4365, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-990': { 'ID': 4366, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-991': { 'ID': 4367, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-992': { 'ID': 4368, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-993': { 'ID': 4369, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-994': { 'ID': 4370, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-995': { 'ID': 4371, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-996': { 'ID': 4372, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-997': { 'ID': 4373, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-998': { 'ID': 4374, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-999': { 'ID': 4375, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1000': { 'ID': 4376, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1001': { 'ID': 4377, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1002': { 'ID': 4378, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1003': { 'ID': 4379, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1004': { 'ID': 4380, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1005': { 'ID': 4381, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1006': { 'ID': 4382, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1007': { 'ID': 4383, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1008': { 'ID': 4384, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1009': { 'ID': 4385, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1010': { 'ID': 4386, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1011': { 'ID': 4387, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1012': { 'ID': 4388, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1013': { 'ID': 4389, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1014': { 'ID': 4390, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1015': { 'ID': 4391, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1016': { 'ID': 4392, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1017': { 'ID': 4393, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1018': { 'ID': 4394, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1019': { 'ID': 4395, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1020': { 'ID': 4396, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1021': { 'ID': 4397, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1022': { 'ID': 4398, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1023': { 'ID': 4399, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1024': { 'ID': 4400, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1025': { 'ID': 4401, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1026': { 'ID': 4402, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1027': { 'ID': 4403, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1028': { 'ID': 4404, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1029': { 'ID': 4405, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1030': { 'ID': 4406, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1031': { 'ID': 4407, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1032': { 'ID': 4408, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1033': { 'ID': 4409, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1034': { 'ID': 4410, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1035': { 'ID': 4411, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1036': { 'ID': 4412, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1037': { 'ID': 4413, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1038': { 'ID': 4414, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1039': { 'ID': 4415, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1040': { 'ID': 4416, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1041': { 'ID': 4417, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1042': { 'ID': 4418, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1043': { 'ID': 4419, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1044': { 'ID': 4420, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1045': { 'ID': 4421, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1046': { 'ID': 4422, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1047': { 'ID': 4423, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1048': { 'ID': 4424, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1049': { 'ID': 4425, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1050': { 'ID': 4426, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1051': { 'ID': 4427, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1052': { 'ID': 4428, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1053': { 'ID': 4429, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1054': { 'ID': 4430, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1055': { 'ID': 4431, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1056': { 'ID': 4432, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1057': { 'ID': 4433, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1058': { 'ID': 4434, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1059': { 'ID': 4435, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1060': { 'ID': 4436, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1061': { 'ID': 4437, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1062': { 'ID': 4438, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1063': { 'ID': 4439, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1064': { 'ID': 4440, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1065': { 'ID': 4441, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1066': { 'ID': 4442, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1067': { 'ID': 4443, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1068': { 'ID': 4444, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1069': { 'ID': 4445, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1070': { 'ID': 4446, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1071': { 'ID': 4447, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1072': { 'ID': 4448, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1073': { 'ID': 4449, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1074': { 'ID': 4450, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1075': { 'ID': 4451, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1076': { 'ID': 4452, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1077': { 'ID': 4453, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1078': { 'ID': 4454, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1079': { 'ID': 4455, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1080': { 'ID': 4456, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1081': { 'ID': 4457, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1082': { 'ID': 4458, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1083': { 'ID': 4459, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1084': { 'ID': 4460, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1085': { 'ID': 4461, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1086': { 'ID': 4462, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1087': { 'ID': 4463, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1088': { 'ID': 4464, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1089': { 'ID': 4465, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1090': { 'ID': 4466, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1091': { 'ID': 4467, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1092': { 'ID': 4468, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1093': { 'ID': 4469, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1094': { 'ID': 4470, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1095': { 'ID': 4471, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1096': { 'ID': 4472, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1097': { 'ID': 4473, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1098': { 'ID': 4474, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1099': { 'ID': 4475, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1100': { 'ID': 4476, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1101': { 'ID': 4477, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1102': { 'ID': 4478, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1103': { 'ID': 4479, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1104': { 'ID': 4480, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1105': { 'ID': 4481, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1106': { 'ID': 4482, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1107': { 'ID': 4483, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1108': { 'ID': 4484, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1109': { 'ID': 4485, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1110': { 'ID': 4486, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1111': { 'ID': 4487, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1112': { 'ID': 4488, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1113': { 'ID': 4489, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1114': { 'ID': 4490, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1115': { 'ID': 4491, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1116': { 'ID': 4492, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1117': { 'ID': 4493, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1118': { 'ID': 4494, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1119': { 'ID': 4495, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1120': { 'ID': 4496, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1121': { 'ID': 4497, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1122': { 'ID': 4498, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1123': { 'ID': 4499, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1124': { 'ID': 4500, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1125': { 'ID': 4501, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1126': { 'ID': 4502, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1127': { 'ID': 4503, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1128': { 'ID': 4504, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1129': { 'ID': 4505, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1130': { 'ID': 4506, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1131': { 'ID': 4507, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1132': { 'ID': 4508, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1133': { 'ID': 4509, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1134': { 'ID': 4510, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1135': { 'ID': 4511, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1136': { 'ID': 4512, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1137': { 'ID': 4513, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1138': { 'ID': 4514, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1139': { 'ID': 4515, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1140': { 'ID': 4516, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1141': { 'ID': 4517, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1142': { 'ID': 4518, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1143': { 'ID': 4519, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1144': { 'ID': 4520, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1145': { 'ID': 4521, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1146': { 'ID': 4522, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1147': { 'ID': 4523, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1148': { 'ID': 4524, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1149': { 'ID': 4525, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1150': { 'ID': 4526, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1151': { 'ID': 4527, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1152': { 'ID': 4528, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1153': { 'ID': 4529, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1154': { 'ID': 4530, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1155': { 'ID': 4531, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1156': { 'ID': 4532, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1157': { 'ID': 4533, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1158': { 'ID': 4534, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1159': { 'ID': 4535, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1160': { 'ID': 4536, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1161': { 'ID': 4537, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1162': { 'ID': 4538, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1163': { 'ID': 4539, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1164': { 'ID': 4540, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1165': { 'ID': 4541, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1166': { 'ID': 4542, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1167': { 'ID': 4543, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1168': { 'ID': 4544, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1169': { 'ID': 4545, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1170': { 'ID': 4546, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1171': { 'ID': 4547, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1172': { 'ID': 4548, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1173': { 'ID': 4549, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1174': { 'ID': 4550, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1175': { 'ID': 4551, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1176': { 'ID': 4552, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1177': { 'ID': 4553, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1178': { 'ID': 4554, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1179': { 'ID': 4555, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1180': { 'ID': 4556, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1181': { 'ID': 4557, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1182': { 'ID': 4558, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1183': { 'ID': 4559, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1184': { 'ID': 4560, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1185': { 'ID': 4561, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1186': { 'ID': 4562, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1187': { 'ID': 4563, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1188': { 'ID': 4564, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1189': { 'ID': 4565, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1190': { 'ID': 4566, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1191': { 'ID': 4567, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1192': { 'ID': 4568, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1193': { 'ID': 4569, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1194': { 'ID': 4570, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1195': { 'ID': 4571, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1196': { 'ID': 4572, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1197': { 'ID': 4573, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1198': { 'ID': 4574, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1199': { 'ID': 4575, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1200': { 'ID': 4576, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1201': { 'ID': 4577, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1202': { 'ID': 4578, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1203': { 'ID': 4579, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1204': { 'ID': 4580, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1205': { 'ID': 4581, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1206': { 'ID': 4582, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1207': { 'ID': 4583, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1208': { 'ID': 4584, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1209': { 'ID': 4585, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1210': { 'ID': 4586, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1211': { 'ID': 4587, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1212': { 'ID': 4588, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1213': { 'ID': 4589, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1214': { 'ID': 4590, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1215': { 'ID': 4591, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1216': { 'ID': 4592, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1217': { 'ID': 4593, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1218': { 'ID': 4594, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1219': { 'ID': 4595, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1220': { 'ID': 4596, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1221': { 'ID': 4597, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1222': { 'ID': 4598, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1223': { 'ID': 4599, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1224': { 'ID': 4600, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1225': { 'ID': 4601, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1226': { 'ID': 4602, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1227': { 'ID': 4603, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1228': { 'ID': 4604, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1229': { 'ID': 4605, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1230': { 'ID': 4606, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1231': { 'ID': 4607, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1232': { 'ID': 4608, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1233': { 'ID': 4609, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1234': { 'ID': 4610, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1235': { 'ID': 4611, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1236': { 'ID': 4612, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1237': { 'ID': 4613, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1238': { 'ID': 4614, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1239': { 'ID': 4615, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1240': { 'ID': 4616, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1241': { 'ID': 4617, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1242': { 'ID': 4618, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1243': { 'ID': 4619, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1244': { 'ID': 4620, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1245': { 'ID': 4621, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1246': { 'ID': 4622, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1247': { 'ID': 4623, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1248': { 'ID': 4624, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1249': { 'ID': 4625, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1250': { 'ID': 4626, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1251': { 'ID': 4627, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1252': { 'ID': 4628, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1253': { 'ID': 4629, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1254': { 'ID': 4630, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1255': { 'ID': 4631, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1256': { 'ID': 4632, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1257': { 'ID': 4633, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1258': { 'ID': 4634, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1259': { 'ID': 4635, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1260': { 'ID': 4636, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1261': { 'ID': 4637, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1262': { 'ID': 4638, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1263': { 'ID': 4639, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1264': { 'ID': 4640, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1265': { 'ID': 4641, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1266': { 'ID': 4642, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1267': { 'ID': 4643, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1268': { 'ID': 4644, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1269': { 'ID': 4645, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1270': { 'ID': 4646, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1271': { 'ID': 4647, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1272': { 'ID': 4648, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1273': { 'ID': 4649, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1274': { 'ID': 4650, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1275': { 'ID': 4651, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1276': { 'ID': 4652, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1277': { 'ID': 4653, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1278': { 'ID': 4654, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1279': { 'ID': 4655, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1280': { 'ID': 4656, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1281': { 'ID': 4657, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1282': { 'ID': 4658, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1283': { 'ID': 4659, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1284': { 'ID': 4660, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1285': { 'ID': 4661, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1286': { 'ID': 4662, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1287': { 'ID': 4663, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1288': { 'ID': 4664, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1289': { 'ID': 4665, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1290': { 'ID': 4666, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1291': { 'ID': 4667, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1292': { 'ID': 4668, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1293': { 'ID': 4669, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1294': { 'ID': 4670, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1295': { 'ID': 4671, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1296': { 'ID': 4672, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1297': { 'ID': 4673, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1298': { 'ID': 4674, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1299': { 'ID': 4675, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1300': { 'ID': 4676, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1301': { 'ID': 4677, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1302': { 'ID': 4678, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1303': { 'ID': 4679, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1304': { 'ID': 4680, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1305': { 'ID': 4681, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1306': { 'ID': 4682, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1307': { 'ID': 4683, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1308': { 'ID': 4684, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1309': { 'ID': 4685, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1310': { 'ID': 4686, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1311': { 'ID': 4687, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1312': { 'ID': 4688, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1313': { 'ID': 4689, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1314': { 'ID': 4690, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1315': { 'ID': 4691, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1316': { 'ID': 4692, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1317': { 'ID': 4693, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1318': { 'ID': 4694, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1319': { 'ID': 4695, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1320': { 'ID': 4696, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1321': { 'ID': 4697, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1322': { 'ID': 4698, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1323': { 'ID': 4699, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1324': { 'ID': 4700, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1325': { 'ID': 4701, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1326': { 'ID': 4702, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1327': { 'ID': 4703, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1328': { 'ID': 4704, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1329': { 'ID': 4705, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1330': { 'ID': 4706, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1331': { 'ID': 4707, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1332': { 'ID': 4708, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1333': { 'ID': 4709, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1334': { 'ID': 4710, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1335': { 'ID': 4711, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1336': { 'ID': 4712, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1337': { 'ID': 4713, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1338': { 'ID': 4714, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1339': { 'ID': 4715, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1340': { 'ID': 4716, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1341': { 'ID': 4717, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1342': { 'ID': 4718, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1343': { 'ID': 4719, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1344': { 'ID': 4720, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1345': { 'ID': 4721, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1346': { 'ID': 4722, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1347': { 'ID': 4723, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1348': { 'ID': 4724, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1349': { 'ID': 4725, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1350': { 'ID': 4726, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1351': { 'ID': 4727, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1352': { 'ID': 4728, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1353': { 'ID': 4729, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1354': { 'ID': 4730, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1355': { 'ID': 4731, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1356': { 'ID': 4732, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1357': { 'ID': 4733, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1358': { 'ID': 4734, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1359': { 'ID': 4735, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1360': { 'ID': 4736, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1361': { 'ID': 4737, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1362': { 'ID': 4738, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1363': { 'ID': 4739, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1364': { 'ID': 4740, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1365': { 'ID': 4741, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1366': { 'ID': 4742, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1367': { 'ID': 4743, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1368': { 'ID': 4744, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1369': { 'ID': 4745, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1370': { 'ID': 4746, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1371': { 'ID': 4747, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1372': { 'ID': 4748, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1373': { 'ID': 4749, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1374': { 'ID': 4750, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1375': { 'ID': 4751, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1376': { 'ID': 4752, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1377': { 'ID': 4753, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1378': { 'ID': 4754, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1379': { 'ID': 4755, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1380': { 'ID': 4756, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1381': { 'ID': 4757, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1382': { 'ID': 4758, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1383': { 'ID': 4759, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1384': { 'ID': 4760, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1385': { 'ID': 4761, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1386': { 'ID': 4762, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1387': { 'ID': 4763, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1388': { 'ID': 4764, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1389': { 'ID': 4765, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1390': { 'ID': 4766, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1391': { 'ID': 4767, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1392': { 'ID': 4768, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1393': { 'ID': 4769, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1394': { 'ID': 4770, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1395': { 'ID': 4771, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1396': { 'ID': 4772, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1397': { 'ID': 4773, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1398': { 'ID': 4774, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1399': { 'ID': 4775, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1400': { 'ID': 4776, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1401': { 'ID': 4777, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1402': { 'ID': 4778, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1403': { 'ID': 4779, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1404': { 'ID': 4780, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1405': { 'ID': 4781, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1406': { 'ID': 4782, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1407': { 'ID': 4783, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1408': { 'ID': 4784, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1409': { 'ID': 4785, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1410': { 'ID': 4786, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1411': { 'ID': 4787, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1412': { 'ID': 4788, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1413': { 'ID': 4789, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1414': { 'ID': 4790, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1415': { 'ID': 4791, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1416': { 'ID': 4792, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1417': { 'ID': 4793, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1418': { 'ID': 4794, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1419': { 'ID': 4795, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1420': { 'ID': 4796, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1421': { 'ID': 4797, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1422': { 'ID': 4798, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1423': { 'ID': 4799, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1424': { 'ID': 4800, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1425': { 'ID': 4801, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1426': { 'ID': 4802, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1427': { 'ID': 4803, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1428': { 'ID': 4804, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1429': { 'ID': 4805, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1430': { 'ID': 4806, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1431': { 'ID': 4807, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1432': { 'ID': 4808, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1433': { 'ID': 4809, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1434': { 'ID': 4810, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1435': { 'ID': 4811, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1436': { 'ID': 4812, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1437': { 'ID': 4813, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1438': { 'ID': 4814, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1439': { 'ID': 4815, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1440': { 'ID': 4816, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1441': { 'ID': 4817, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1442': { 'ID': 4818, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1443': { 'ID': 4819, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1444': { 'ID': 4820, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1445': { 'ID': 4821, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1446': { 'ID': 4822, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1447': { 'ID': 4823, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1448': { 'ID': 4824, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1449': { 'ID': 4825, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1450': { 'ID': 4826, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1451': { 'ID': 4827, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1452': { 'ID': 4828, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1453': { 'ID': 4829, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1454': { 'ID': 4830, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1455': { 'ID': 4831, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1456': { 'ID': 4832, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1457': { 'ID': 4833, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1458': { 'ID': 4834, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1459': { 'ID': 4835, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1460': { 'ID': 4836, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1461': { 'ID': 4837, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1462': { 'ID': 4838, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1463': { 'ID': 4839, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1464': { 'ID': 4840, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1465': { 'ID': 4841, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1466': { 'ID': 4842, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1467': { 'ID': 4843, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1468': { 'ID': 4844, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1469': { 'ID': 4845, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1470': { 'ID': 4846, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1471': { 'ID': 4847, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1472': { 'ID': 4848, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1473': { 'ID': 4849, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1474': { 'ID': 4850, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1475': { 'ID': 4851, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1476': { 'ID': 4852, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1477': { 'ID': 4853, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1478': { 'ID': 4854, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1479': { 'ID': 4855, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1480': { 'ID': 4856, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1481': { 'ID': 4857, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1482': { 'ID': 4858, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1483': { 'ID': 4859, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1484': { 'ID': 4860, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1485': { 'ID': 4861, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1486': { 'ID': 4862, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1487': { 'ID': 4863, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1488': { 'ID': 4864, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1489': { 'ID': 4865, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1490': { 'ID': 4866, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1491': { 'ID': 4867, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1492': { 'ID': 4868, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1493': { 'ID': 4869, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1494': { 'ID': 4870, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1495': { 'ID': 4871, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1496': { 'ID': 4872, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1497': { 'ID': 4873, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1498': { 'ID': 4874, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1499': { 'ID': 4875, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1500': { 'ID': 4876, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1501': { 'ID': 4877, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1502': { 'ID': 4878, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1503': { 'ID': 4879, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1504': { 'ID': 4880, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1505': { 'ID': 4881, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1506': { 'ID': 4882, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1507': { 'ID': 4883, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1508': { 'ID': 4884, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1509': { 'ID': 4885, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1510': { 'ID': 4886, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1511': { 'ID': 4887, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1512': { 'ID': 4888, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1513': { 'ID': 4889, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1514': { 'ID': 4890, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1515': { 'ID': 4891, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1516': { 'ID': 4892, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1517': { 'ID': 4893, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1518': { 'ID': 4894, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1519': { 'ID': 4895, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1520': { 'ID': 4896, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1521': { 'ID': 4897, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1522': { 'ID': 4898, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1523': { 'ID': 4899, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1524': { 'ID': 4900, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1525': { 'ID': 4901, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1526': { 'ID': 4902, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1527': { 'ID': 4903, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1528': { 'ID': 4904, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1529': { 'ID': 4905, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1530': { 'ID': 4906, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1531': { 'ID': 4907, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1532': { 'ID': 4908, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1533': { 'ID': 4909, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1534': { 'ID': 4910, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1535': { 'ID': 4911, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1536': { 'ID': 4912, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1537': { 'ID': 4913, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1538': { 'ID': 4914, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1539': { 'ID': 4915, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1540': { 'ID': 4916, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1541': { 'ID': 4917, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1542': { 'ID': 4918, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1543': { 'ID': 4919, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1544': { 'ID': 4920, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1545': { 'ID': 4921, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1546': { 'ID': 4922, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1547': { 'ID': 4923, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1548': { 'ID': 4924, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1549': { 'ID': 4925, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1550': { 'ID': 4926, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1551': { 'ID': 4927, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1552': { 'ID': 4928, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1553': { 'ID': 4929, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1554': { 'ID': 4930, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1555': { 'ID': 4931, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1556': { 'ID': 4932, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1557': { 'ID': 4933, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1558': { 'ID': 4934, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1559': { 'ID': 4935, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1560': { 'ID': 4936, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1561': { 'ID': 4937, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1562': { 'ID': 4938, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1563': { 'ID': 4939, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1564': { 'ID': 4940, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1565': { 'ID': 4941, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1566': { 'ID': 4942, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1567': { 'ID': 4943, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1568': { 'ID': 4944, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1569': { 'ID': 4945, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1570': { 'ID': 4946, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1571': { 'ID': 4947, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1572': { 'ID': 4948, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1573': { 'ID': 4949, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1574': { 'ID': 4950, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1575': { 'ID': 4951, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1576': { 'ID': 4952, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1577': { 'ID': 4953, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1578': { 'ID': 4954, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1579': { 'ID': 4955, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1580': { 'ID': 4956, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1581': { 'ID': 4957, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1582': { 'ID': 4958, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1583': { 'ID': 4959, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1584': { 'ID': 4960, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1585': { 'ID': 4961, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1586': { 'ID': 4962, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1587': { 'ID': 4963, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1588': { 'ID': 4964, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1589': { 'ID': 4965, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1590': { 'ID': 4966, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1591': { 'ID': 4967, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1592': { 'ID': 4968, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1593': { 'ID': 4969, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1594': { 'ID': 4970, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1595': { 'ID': 4971, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1596': { 'ID': 4972, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1597': { 'ID': 4973, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1598': { 'ID': 4974, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1599': { 'ID': 4975, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1600': { 'ID': 4976, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1601': { 'ID': 4977, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1602': { 'ID': 4978, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1603': { 'ID': 4979, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1604': { 'ID': 4980, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1605': { 'ID': 4981, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1606': { 'ID': 4982, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1607': { 'ID': 4983, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1608': { 'ID': 4984, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1609': { 'ID': 4985, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1610': { 'ID': 4986, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1611': { 'ID': 4987, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1612': { 'ID': 4988, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1613': { 'ID': 4989, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1614': { 'ID': 4990, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1615': { 'ID': 4991, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1616': { 'ID': 4992, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1617': { 'ID': 4993, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1618': { 'ID': 4994, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1619': { 'ID': 4995, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1620': { 'ID': 4996, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1621': { 'ID': 4997, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1622': { 'ID': 4998, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1623': { 'ID': 4999, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1624': { 'ID': 5000, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1625': { 'ID': 5001, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1626': { 'ID': 5002, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1627': { 'ID': 5003, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1628': { 'ID': 5004, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1629': { 'ID': 5005, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1630': { 'ID': 5006, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1631': { 'ID': 5007, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1632': { 'ID': 5008, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1633': { 'ID': 5009, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1634': { 'ID': 5010, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1635': { 'ID': 5011, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1636': { 'ID': 5012, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1637': { 'ID': 5013, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1638': { 'ID': 5014, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1639': { 'ID': 5015, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1640': { 'ID': 5016, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1641': { 'ID': 5017, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1642': { 'ID': 5018, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1643': { 'ID': 5019, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1644': { 'ID': 5020, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1645': { 'ID': 5021, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1646': { 'ID': 5022, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1647': { 'ID': 5023, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1648': { 'ID': 5024, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1649': { 'ID': 5025, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1650': { 'ID': 5026, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1651': { 'ID': 5027, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1652': { 'ID': 5028, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1653': { 'ID': 5029, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1654': { 'ID': 5030, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1655': { 'ID': 5031, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1656': { 'ID': 5032, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1657': { 'ID': 5033, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1658': { 'ID': 5034, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1659': { 'ID': 5035, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1660': { 'ID': 5036, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1661': { 'ID': 5037, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1662': { 'ID': 5038, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1663': { 'ID': 5039, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1664': { 'ID': 5040, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1665': { 'ID': 5041, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1666': { 'ID': 5042, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1667': { 'ID': 5043, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1668': { 'ID': 5044, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1669': { 'ID': 5045, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1670': { 'ID': 5046, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1671': { 'ID': 5047, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1672': { 'ID': 5048, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1673': { 'ID': 5049, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1674': { 'ID': 5050, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1675': { 'ID': 5051, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1676': { 'ID': 5052, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1677': { 'ID': 5053, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1678': { 'ID': 5054, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1679': { 'ID': 5055, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1680': { 'ID': 5056, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1681': { 'ID': 5057, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1682': { 'ID': 5058, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1683': { 'ID': 5059, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1684': { 'ID': 5060, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1685': { 'ID': 5061, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1686': { 'ID': 5062, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1687': { 'ID': 5063, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1688': { 'ID': 5064, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1689': { 'ID': 5065, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1690': { 'ID': 5066, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1691': { 'ID': 5067, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1692': { 'ID': 5068, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1693': { 'ID': 5069, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1694': { 'ID': 5070, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1695': { 'ID': 5071, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1696': { 'ID': 5072, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1697': { 'ID': 5073, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1698': { 'ID': 5074, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1699': { 'ID': 5075, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1700': { 'ID': 5076, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1701': { 'ID': 5077, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1702': { 'ID': 5078, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1703': { 'ID': 5079, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1704': { 'ID': 5080, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1705': { 'ID': 5081, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1706': { 'ID': 5082, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1707': { 'ID': 5083, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1708': { 'ID': 5084, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1709': { 'ID': 5085, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1710': { 'ID': 5086, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1711': { 'ID': 5087, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1712': { 'ID': 5088, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1713': { 'ID': 5089, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1714': { 'ID': 5090, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1715': { 'ID': 5091, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1716': { 'ID': 5092, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1717': { 'ID': 5093, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1718': { 'ID': 5094, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1719': { 'ID': 5095, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1720': { 'ID': 5096, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1721': { 'ID': 5097, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1722': { 'ID': 5098, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1723': { 'ID': 5099, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1724': { 'ID': 5100, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1725': { 'ID': 5101, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1726': { 'ID': 5102, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1727': { 'ID': 5103, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1728': { 'ID': 5104, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1729': { 'ID': 5105, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1730': { 'ID': 5106, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1731': { 'ID': 5107, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1732': { 'ID': 5108, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1733': { 'ID': 5109, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1734': { 'ID': 5110, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1735': { 'ID': 5111, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1736': { 'ID': 5112, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1737': { 'ID': 5113, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1738': { 'ID': 5114, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1739': { 'ID': 5115, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1740': { 'ID': 5116, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1741': { 'ID': 5117, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1742': { 'ID': 5118, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1743': { 'ID': 5119, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1744': { 'ID': 5120, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1745': { 'ID': 5121, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1746': { 'ID': 5122, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1747': { 'ID': 5123, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1748': { 'ID': 5124, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1749': { 'ID': 5125, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1750': { 'ID': 5126, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1751': { 'ID': 5127, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1752': { 'ID': 5128, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1753': { 'ID': 5129, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1754': { 'ID': 5130, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1755': { 'ID': 5131, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1756': { 'ID': 5132, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1757': { 'ID': 5133, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1758': { 'ID': 5134, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1759': { 'ID': 5135, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1760': { 'ID': 5136, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1761': { 'ID': 5137, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1762': { 'ID': 5138, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1763': { 'ID': 5139, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1764': { 'ID': 5140, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1765': { 'ID': 5141, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1766': { 'ID': 5142, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1767': { 'ID': 5143, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1768': { 'ID': 5144, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1769': { 'ID': 5145, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1770': { 'ID': 5146, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1771': { 'ID': 5147, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1772': { 'ID': 5148, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1773': { 'ID': 5149, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1774': { 'ID': 5150, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1775': { 'ID': 5151, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1776': { 'ID': 5152, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1777': { 'ID': 5153, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1778': { 'ID': 5154, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1779': { 'ID': 5155, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1780': { 'ID': 5156, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1781': { 'ID': 5157, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1782': { 'ID': 5158, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1783': { 'ID': 5159, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1784': { 'ID': 5160, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1785': { 'ID': 5161, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1786': { 'ID': 5162, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1787': { 'ID': 5163, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1788': { 'ID': 5164, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1789': { 'ID': 5165, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1790': { 'ID': 5166, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1791': { 'ID': 5167, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1792': { 'ID': 5168, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1793': { 'ID': 5169, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1794': { 'ID': 5170, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1795': { 'ID': 5171, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1796': { 'ID': 5172, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1797': { 'ID': 5173, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1798': { 'ID': 5174, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1799': { 'ID': 5175, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1800': { 'ID': 5176, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1801': { 'ID': 5177, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1802': { 'ID': 5178, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1803': { 'ID': 5179, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1804': { 'ID': 5180, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1805': { 'ID': 5181, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1806': { 'ID': 5182, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1807': { 'ID': 5183, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1808': { 'ID': 5184, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1809': { 'ID': 5185, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1810': { 'ID': 5186, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1811': { 'ID': 5187, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1812': { 'ID': 5188, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1813': { 'ID': 5189, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1814': { 'ID': 5190, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1815': { 'ID': 5191, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1816': { 'ID': 5192, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1817': { 'ID': 5193, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1818': { 'ID': 5194, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1819': { 'ID': 5195, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1820': { 'ID': 5196, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1821': { 'ID': 5197, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1822': { 'ID': 5198, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1823': { 'ID': 5199, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1824': { 'ID': 5200, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1825': { 'ID': 5201, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1826': { 'ID': 5202, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1827': { 'ID': 5203, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1828': { 'ID': 5204, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1829': { 'ID': 5205, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1830': { 'ID': 5206, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1831': { 'ID': 5207, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1832': { 'ID': 5208, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1833': { 'ID': 5209, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1834': { 'ID': 5210, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1835': { 'ID': 5211, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1836': { 'ID': 5212, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1837': { 'ID': 5213, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1838': { 'ID': 5214, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1839': { 'ID': 5215, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1840': { 'ID': 5216, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1841': { 'ID': 5217, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1842': { 'ID': 5218, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1843': { 'ID': 5219, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1844': { 'ID': 5220, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1845': { 'ID': 5221, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1846': { 'ID': 5222, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1847': { 'ID': 5223, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1848': { 'ID': 5224, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1849': { 'ID': 5225, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1850': { 'ID': 5226, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1851': { 'ID': 5227, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1852': { 'ID': 5228, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1853': { 'ID': 5229, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1854': { 'ID': 5230, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1855': { 'ID': 5231, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1856': { 'ID': 5232, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1857': { 'ID': 5233, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1858': { 'ID': 5234, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1859': { 'ID': 5235, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1860': { 'ID': 5236, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1861': { 'ID': 5237, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1862': { 'ID': 5238, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1863': { 'ID': 5239, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1864': { 'ID': 5240, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1865': { 'ID': 5241, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1866': { 'ID': 5242, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1867': { 'ID': 5243, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1868': { 'ID': 5244, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1869': { 'ID': 5245, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1870': { 'ID': 5246, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1871': { 'ID': 5247, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1872': { 'ID': 5248, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1873': { 'ID': 5249, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1874': { 'ID': 5250, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1875': { 'ID': 5251, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1876': { 'ID': 5252, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1877': { 'ID': 5253, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1878': { 'ID': 5254, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1879': { 'ID': 5255, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1880': { 'ID': 5256, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1881': { 'ID': 5257, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1882': { 'ID': 5258, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1883': { 'ID': 5259, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1884': { 'ID': 5260, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1885': { 'ID': 5261, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1886': { 'ID': 5262, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1887': { 'ID': 5263, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1888': { 'ID': 5264, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1889': { 'ID': 5265, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1890': { 'ID': 5266, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1891': { 'ID': 5267, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1892': { 'ID': 5268, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1893': { 'ID': 5269, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1894': { 'ID': 5270, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1895': { 'ID': 5271, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1896': { 'ID': 5272, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1897': { 'ID': 5273, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1898': { 'ID': 5274, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1899': { 'ID': 5275, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1900': { 'ID': 5276, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1901': { 'ID': 5277, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1902': { 'ID': 5278, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1903': { 'ID': 5279, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1904': { 'ID': 5280, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1905': { 'ID': 5281, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1906': { 'ID': 5282, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1907': { 'ID': 5283, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1908': { 'ID': 5284, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1909': { 'ID': 5285, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1910': { 'ID': 5286, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1911': { 'ID': 5287, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1912': { 'ID': 5288, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1913': { 'ID': 5289, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1914': { 'ID': 5290, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1915': { 'ID': 5291, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1916': { 'ID': 5292, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1917': { 'ID': 5293, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1918': { 'ID': 5294, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1919': { 'ID': 5295, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1920': { 'ID': 5296, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1921': { 'ID': 5297, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1922': { 'ID': 5298, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1923': { 'ID': 5299, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1924': { 'ID': 5300, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1925': { 'ID': 5301, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1926': { 'ID': 5302, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1927': { 'ID': 5303, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1928': { 'ID': 5304, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1929': { 'ID': 5305, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1930': { 'ID': 5306, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1931': { 'ID': 5307, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1932': { 'ID': 5308, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1933': { 'ID': 5309, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1934': { 'ID': 5310, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1935': { 'ID': 5311, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1936': { 'ID': 5312, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1937': { 'ID': 5313, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1938': { 'ID': 5314, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1939': { 'ID': 5315, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1940': { 'ID': 5316, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1941': { 'ID': 5317, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1942': { 'ID': 5318, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1943': { 'ID': 5319, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1944': { 'ID': 5320, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1945': { 'ID': 5321, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1946': { 'ID': 5322, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1947': { 'ID': 5323, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1948': { 'ID': 5324, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1949': { 'ID': 5325, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1950': { 'ID': 5326, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1951': { 'ID': 5327, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1952': { 'ID': 5328, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1953': { 'ID': 5329, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1954': { 'ID': 5330, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1955': { 'ID': 5331, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1956': { 'ID': 5332, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1957': { 'ID': 5333, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1958': { 'ID': 5334, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1959': { 'ID': 5335, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1960': { 'ID': 5336, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1961': { 'ID': 5337, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1962': { 'ID': 5338, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1963': { 'ID': 5339, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1964': { 'ID': 5340, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1965': { 'ID': 5341, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1966': { 'ID': 5342, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1967': { 'ID': 5343, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1968': { 'ID': 5344, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1969': { 'ID': 5345, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1970': { 'ID': 5346, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1971': { 'ID': 5347, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1972': { 'ID': 5348, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1973': { 'ID': 5349, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1974': { 'ID': 5350, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1975': { 'ID': 5351, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1976': { 'ID': 5352, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1977': { 'ID': 5353, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1978': { 'ID': 5354, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1979': { 'ID': 5355, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1980': { 'ID': 5356, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1981': { 'ID': 5357, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1982': { 'ID': 5358, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1983': { 'ID': 5359, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1984': { 'ID': 5360, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1985': { 'ID': 5361, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1986': { 'ID': 5362, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1987': { 'ID': 5363, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1988': { 'ID': 5364, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1989': { 'ID': 5365, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1990': { 'ID': 5366, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1991': { 'ID': 5367, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1992': { 'ID': 5368, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1993': { 'ID': 5369, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1994': { 'ID': 5370, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1995': { 'ID': 5371, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1996': { 'ID': 5372, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1997': { 'ID': 5373, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1998': { 'ID': 5374, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1999': { 'ID': 5375, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2000': { 'ID': 5376, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2001': { 'ID': 5377, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2002': { 'ID': 5378, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2003': { 'ID': 5379, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2004': { 'ID': 5380, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2005': { 'ID': 5381, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2006': { 'ID': 5382, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2007': { 'ID': 5383, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2008': { 'ID': 5384, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2009': { 'ID': 5385, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2010': { 'ID': 5386, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2011': { 'ID': 5387, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2012': { 'ID': 5388, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2013': { 'ID': 5389, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2014': { 'ID': 5390, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2015': { 'ID': 5391, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2016': { 'ID': 5392, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2017': { 'ID': 5393, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2018': { 'ID': 5394, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2019': { 'ID': 5395, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2020': { 'ID': 5396, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2021': { 'ID': 5397, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2022': { 'ID': 5398, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2023': { 'ID': 5399, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2024': { 'ID': 5400, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2025': { 'ID': 5401, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2026': { 'ID': 5402, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2027': { 'ID': 5403, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2028': { 'ID': 5404, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2029': { 'ID': 5405, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2030': { 'ID': 5406, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2031': { 'ID': 5407, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2032': { 'ID': 5408, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2033': { 'ID': 5409, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2034': { 'ID': 5410, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2035': { 'ID': 5411, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2036': { 'ID': 5412, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2037': { 'ID': 5413, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2038': { 'ID': 5414, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2039': { 'ID': 5415, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2040': { 'ID': 5416, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2041': { 'ID': 5417, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2042': { 'ID': 5418, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2043': { 'ID': 5419, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2044': { 'ID': 5420, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2045': { 'ID': 5421, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2046': { 'ID': 5422, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2047': { 'ID': 5423, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2048': { 'ID': 5424, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2049': { 'ID': 5425, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2050': { 'ID': 5426, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2051': { 'ID': 5427, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2052': { 'ID': 5428, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2053': { 'ID': 5429, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2054': { 'ID': 5430, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2055': { 'ID': 5431, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2056': { 'ID': 5432, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2057': { 'ID': 5433, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2058': { 'ID': 5434, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2059': { 'ID': 5435, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2060': { 'ID': 5436, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2061': { 'ID': 5437, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2062': { 'ID': 5438, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2063': { 'ID': 5439, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2064': { 'ID': 5440, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2065': { 'ID': 5441, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2066': { 'ID': 5442, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2067': { 'ID': 5443, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2068': { 'ID': 5444, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2069': { 'ID': 5445, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2070': { 'ID': 5446, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2071': { 'ID': 5447, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2072': { 'ID': 5448, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2073': { 'ID': 5449, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2074': { 'ID': 5450, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2075': { 'ID': 5451, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2076': { 'ID': 5452, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2077': { 'ID': 5453, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2078': { 'ID': 5454, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2079': { 'ID': 5455, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2080': { 'ID': 5456, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2081': { 'ID': 5457, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2082': { 'ID': 5458, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2083': { 'ID': 5459, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2084': { 'ID': 5460, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2085': { 'ID': 5461, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2086': { 'ID': 5462, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2087': { 'ID': 5463, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2088': { 'ID': 5464, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2089': { 'ID': 5465, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2090': { 'ID': 5466, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2091': { 'ID': 5467, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2092': { 'ID': 5468, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2093': { 'ID': 5469, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2094': { 'ID': 5470, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2095': { 'ID': 5471, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2096': { 'ID': 5472, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2097': { 'ID': 5473, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2098': { 'ID': 5474, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2099': { 'ID': 5475, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2100': { 'ID': 5476, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2101': { 'ID': 5477, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2102': { 'ID': 5478, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2103': { 'ID': 5479, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2104': { 'ID': 5480, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2105': { 'ID': 5481, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2106': { 'ID': 5482, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2107': { 'ID': 5483, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2108': { 'ID': 5484, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2109': { 'ID': 5485, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2110': { 'ID': 5486, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2111': { 'ID': 5487, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2112': { 'ID': 5488, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2113': { 'ID': 5489, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2114': { 'ID': 5490, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2115': { 'ID': 5491, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2116': { 'ID': 5492, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2117': { 'ID': 5493, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2118': { 'ID': 5494, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2119': { 'ID': 5495, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2120': { 'ID': 5496, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2121': { 'ID': 5497, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2122': { 'ID': 5498, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2123': { 'ID': 5499, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2124': { 'ID': 5500, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2125': { 'ID': 5501, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2126': { 'ID': 5502, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2127': { 'ID': 5503, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2128': { 'ID': 5504, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2129': { 'ID': 5505, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2130': { 'ID': 5506, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2131': { 'ID': 5507, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2132': { 'ID': 5508, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2133': { 'ID': 5509, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2134': { 'ID': 5510, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2135': { 'ID': 5511, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2136': { 'ID': 5512, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2137': { 'ID': 5513, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2138': { 'ID': 5514, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2139': { 'ID': 5515, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2140': { 'ID': 5516, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2141': { 'ID': 5517, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2142': { 'ID': 5518, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2143': { 'ID': 5519, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2144': { 'ID': 5520, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2145': { 'ID': 5521, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2146': { 'ID': 5522, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2147': { 'ID': 5523, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2148': { 'ID': 5524, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2149': { 'ID': 5525, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2150': { 'ID': 5526, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2151': { 'ID': 5527, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2152': { 'ID': 5528, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2153': { 'ID': 5529, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2154': { 'ID': 5530, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2155': { 'ID': 5531, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2156': { 'ID': 5532, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2157': { 'ID': 5533, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2158': { 'ID': 5534, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2159': { 'ID': 5535, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2160': { 'ID': 5536, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2161': { 'ID': 5537, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2162': { 'ID': 5538, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2163': { 'ID': 5539, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2164': { 'ID': 5540, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2165': { 'ID': 5541, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2166': { 'ID': 5542, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2167': { 'ID': 5543, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2168': { 'ID': 5544, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2169': { 'ID': 5545, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2170': { 'ID': 5546, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2171': { 'ID': 5547, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2172': { 'ID': 5548, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2173': { 'ID': 5549, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2174': { 'ID': 5550, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2175': { 'ID': 5551, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2176': { 'ID': 5552, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2177': { 'ID': 5553, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2178': { 'ID': 5554, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2179': { 'ID': 5555, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2180': { 'ID': 5556, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2181': { 'ID': 5557, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2182': { 'ID': 5558, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2183': { 'ID': 5559, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2184': { 'ID': 5560, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2185': { 'ID': 5561, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2186': { 'ID': 5562, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2187': { 'ID': 5563, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2188': { 'ID': 5564, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2189': { 'ID': 5565, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2190': { 'ID': 5566, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2191': { 'ID': 5567, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2192': { 'ID': 5568, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2193': { 'ID': 5569, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2194': { 'ID': 5570, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2195': { 'ID': 5571, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2196': { 'ID': 5572, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2197': { 'ID': 5573, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2198': { 'ID': 5574, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2199': { 'ID': 5575, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2200': { 'ID': 5576, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2201': { 'ID': 5577, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2202': { 'ID': 5578, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2203': { 'ID': 5579, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2204': { 'ID': 5580, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2205': { 'ID': 5581, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2206': { 'ID': 5582, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2207': { 'ID': 5583, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2208': { 'ID': 5584, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2209': { 'ID': 5585, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2210': { 'ID': 5586, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2211': { 'ID': 5587, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2212': { 'ID': 5588, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2213': { 'ID': 5589, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2214': { 'ID': 5590, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2215': { 'ID': 5591, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2216': { 'ID': 5592, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2217': { 'ID': 5593, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2218': { 'ID': 5594, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2219': { 'ID': 5595, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2220': { 'ID': 5596, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2221': { 'ID': 5597, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2222': { 'ID': 5598, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2223': { 'ID': 5599, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2224': { 'ID': 5600, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2225': { 'ID': 5601, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2226': { 'ID': 5602, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2227': { 'ID': 5603, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2228': { 'ID': 5604, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2229': { 'ID': 5605, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2230': { 'ID': 5606, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2231': { 'ID': 5607, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2232': { 'ID': 5608, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2233': { 'ID': 5609, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2234': { 'ID': 5610, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2235': { 'ID': 5611, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2236': { 'ID': 5612, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2237': { 'ID': 5613, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2238': { 'ID': 5614, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2239': { 'ID': 5615, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2240': { 'ID': 5616, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2241': { 'ID': 5617, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2242': { 'ID': 5618, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2243': { 'ID': 5619, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2244': { 'ID': 5620, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2245': { 'ID': 5621, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2246': { 'ID': 5622, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2247': { 'ID': 5623, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2248': { 'ID': 5624, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2249': { 'ID': 5625, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2250': { 'ID': 5626, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2251': { 'ID': 5627, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2252': { 'ID': 5628, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2253': { 'ID': 5629, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2254': { 'ID': 5630, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2255': { 'ID': 5631, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2256': { 'ID': 5632, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2257': { 'ID': 5633, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2258': { 'ID': 5634, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2259': { 'ID': 5635, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2260': { 'ID': 5636, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2261': { 'ID': 5637, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2262': { 'ID': 5638, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2263': { 'ID': 5639, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2264': { 'ID': 5640, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2265': { 'ID': 5641, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2266': { 'ID': 5642, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2267': { 'ID': 5643, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2268': { 'ID': 5644, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2269': { 'ID': 5645, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2270': { 'ID': 5646, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2271': { 'ID': 5647, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2272': { 'ID': 5648, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2273': { 'ID': 5649, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2274': { 'ID': 5650, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2275': { 'ID': 5651, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2276': { 'ID': 5652, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2277': { 'ID': 5653, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2278': { 'ID': 5654, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2279': { 'ID': 5655, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2280': { 'ID': 5656, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2281': { 'ID': 5657, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2282': { 'ID': 5658, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2283': { 'ID': 5659, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2284': { 'ID': 5660, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2285': { 'ID': 5661, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2286': { 'ID': 5662, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2287': { 'ID': 5663, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2288': { 'ID': 5664, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2289': { 'ID': 5665, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2290': { 'ID': 5666, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2291': { 'ID': 5667, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2292': { 'ID': 5668, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2293': { 'ID': 5669, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2294': { 'ID': 5670, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2295': { 'ID': 5671, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2296': { 'ID': 5672, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2297': { 'ID': 5673, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2298': { 'ID': 5674, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2299': { 'ID': 5675, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2300': { 'ID': 5676, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2301': { 'ID': 5677, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2302': { 'ID': 5678, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2303': { 'ID': 5679, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2304': { 'ID': 5680, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2305': { 'ID': 5681, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2306': { 'ID': 5682, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2307': { 'ID': 5683, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2308': { 'ID': 5684, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2309': { 'ID': 5685, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2310': { 'ID': 5686, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2311': { 'ID': 5687, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2312': { 'ID': 5688, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2313': { 'ID': 5689, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2314': { 'ID': 5690, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2315': { 'ID': 5691, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2316': { 'ID': 5692, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2317': { 'ID': 5693, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2318': { 'ID': 5694, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2319': { 'ID': 5695, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2320': { 'ID': 5696, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2321': { 'ID': 5697, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2322': { 'ID': 5698, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2323': { 'ID': 5699, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2324': { 'ID': 5700, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2325': { 'ID': 5701, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2326': { 'ID': 5702, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2327': { 'ID': 5703, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2328': { 'ID': 5704, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2329': { 'ID': 5705, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2330': { 'ID': 5706, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2331': { 'ID': 5707, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2332': { 'ID': 5708, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2333': { 'ID': 5709, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2334': { 'ID': 5710, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2335': { 'ID': 5711, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2336': { 'ID': 5712, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2337': { 'ID': 5713, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2338': { 'ID': 5714, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2339': { 'ID': 5715, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2340': { 'ID': 5716, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2341': { 'ID': 5717, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2342': { 'ID': 5718, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2343': { 'ID': 5719, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2344': { 'ID': 5720, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2345': { 'ID': 5721, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2346': { 'ID': 5722, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2347': { 'ID': 5723, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2348': { 'ID': 5724, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2349': { 'ID': 5725, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2350': { 'ID': 5726, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2351': { 'ID': 5727, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2352': { 'ID': 5728, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2353': { 'ID': 5729, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2354': { 'ID': 5730, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2355': { 'ID': 5731, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2356': { 'ID': 5732, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2357': { 'ID': 5733, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2358': { 'ID': 5734, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2359': { 'ID': 5735, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2360': { 'ID': 5736, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2361': { 'ID': 5737, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2362': { 'ID': 5738, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2363': { 'ID': 5739, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2364': { 'ID': 5740, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2365': { 'ID': 5741, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2366': { 'ID': 5742, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2367': { 'ID': 5743, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2368': { 'ID': 5744, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2369': { 'ID': 5745, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2370': { 'ID': 5746, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2371': { 'ID': 5747, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2372': { 'ID': 5748, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2373': { 'ID': 5749, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2374': { 'ID': 5750, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2375': { 'ID': 5751, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2376': { 'ID': 5752, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2377': { 'ID': 5753, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2378': { 'ID': 5754, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2379': { 'ID': 5755, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2380': { 'ID': 5756, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2381': { 'ID': 5757, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2382': { 'ID': 5758, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2383': { 'ID': 5759, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2384': { 'ID': 5760, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2385': { 'ID': 5761, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2386': { 'ID': 5762, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2387': { 'ID': 5763, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2388': { 'ID': 5764, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2389': { 'ID': 5765, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2390': { 'ID': 5766, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2391': { 'ID': 5767, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2392': { 'ID': 5768, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2393': { 'ID': 5769, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2394': { 'ID': 5770, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2395': { 'ID': 5771, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2396': { 'ID': 5772, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2397': { 'ID': 5773, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2398': { 'ID': 5774, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2399': { 'ID': 5775, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2400': { 'ID': 5776, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2401': { 'ID': 5777, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2402': { 'ID': 5778, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2403': { 'ID': 5779, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2404': { 'ID': 5780, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2405': { 'ID': 5781, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2406': { 'ID': 5782, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2407': { 'ID': 5783, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2408': { 'ID': 5784, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2409': { 'ID': 5785, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2410': { 'ID': 5786, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2411': { 'ID': 5787, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2412': { 'ID': 5788, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2413': { 'ID': 5789, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2414': { 'ID': 5790, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2415': { 'ID': 5791, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2416': { 'ID': 5792, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2417': { 'ID': 5793, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2418': { 'ID': 5794, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2419': { 'ID': 5795, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2420': { 'ID': 5796, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2421': { 'ID': 5797, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2422': { 'ID': 5798, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2423': { 'ID': 5799, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2424': { 'ID': 5800, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2425': { 'ID': 5801, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2426': { 'ID': 5802, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2427': { 'ID': 5803, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2428': { 'ID': 5804, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2429': { 'ID': 5805, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2430': { 'ID': 5806, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2431': { 'ID': 5807, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2432': { 'ID': 5808, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2433': { 'ID': 5809, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2434': { 'ID': 5810, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2435': { 'ID': 5811, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2436': { 'ID': 5812, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2437': { 'ID': 5813, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2438': { 'ID': 5814, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2439': { 'ID': 5815, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2440': { 'ID': 5816, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2441': { 'ID': 5817, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2442': { 'ID': 5818, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2443': { 'ID': 5819, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2444': { 'ID': 5820, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2445': { 'ID': 5821, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2446': { 'ID': 5822, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2447': { 'ID': 5823, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2448': { 'ID': 5824, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2449': { 'ID': 5825, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2450': { 'ID': 5826, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2451': { 'ID': 5827, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2452': { 'ID': 5828, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2453': { 'ID': 5829, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2454': { 'ID': 5830, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2455': { 'ID': 5831, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2456': { 'ID': 5832, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2457': { 'ID': 5833, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2458': { 'ID': 5834, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2459': { 'ID': 5835, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2460': { 'ID': 5836, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2461': { 'ID': 5837, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2462': { 'ID': 5838, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2463': { 'ID': 5839, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2464': { 'ID': 5840, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2465': { 'ID': 5841, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2466': { 'ID': 5842, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2467': { 'ID': 5843, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2468': { 'ID': 5844, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2469': { 'ID': 5845, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2470': { 'ID': 5846, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2471': { 'ID': 5847, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2472': { 'ID': 5848, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2473': { 'ID': 5849, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2474': { 'ID': 5850, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2475': { 'ID': 5851, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2476': { 'ID': 5852, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2477': { 'ID': 5853, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2478': { 'ID': 5854, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2479': { 'ID': 5855, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2480': { 'ID': 5856, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2481': { 'ID': 5857, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2482': { 'ID': 5858, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2483': { 'ID': 5859, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2484': { 'ID': 5860, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2485': { 'ID': 5861, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2486': { 'ID': 5862, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2487': { 'ID': 5863, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2488': { 'ID': 5864, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2489': { 'ID': 5865, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2490': { 'ID': 5866, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2491': { 'ID': 5867, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2492': { 'ID': 5868, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2493': { 'ID': 5869, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2494': { 'ID': 5870, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2495': { 'ID': 5871, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2496': { 'ID': 5872, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2497': { 'ID': 5873, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2498': { 'ID': 5874, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2499': { 'ID': 5875, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2500': { 'ID': 5876, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2501': { 'ID': 5877, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2502': { 'ID': 5878, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2503': { 'ID': 5879, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2504': { 'ID': 5880, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2505': { 'ID': 5881, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2506': { 'ID': 5882, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2507': { 'ID': 5883, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2508': { 'ID': 5884, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2509': { 'ID': 5885, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2510': { 'ID': 5886, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2511': { 'ID': 5887, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2512': { 'ID': 5888, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2513': { 'ID': 5889, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2514': { 'ID': 5890, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2515': { 'ID': 5891, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2516': { 'ID': 5892, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2517': { 'ID': 5893, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2518': { 'ID': 5894, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2519': { 'ID': 5895, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2520': { 'ID': 5896, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2521': { 'ID': 5897, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2522': { 'ID': 5898, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2523': { 'ID': 5899, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2524': { 'ID': 5900, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2525': { 'ID': 5901, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2526': { 'ID': 5902, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2527': { 'ID': 5903, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2528': { 'ID': 5904, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2529': { 'ID': 5905, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2530': { 'ID': 5906, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2531': { 'ID': 5907, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2532': { 'ID': 5908, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2533': { 'ID': 5909, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2534': { 'ID': 5910, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2535': { 'ID': 5911, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2536': { 'ID': 5912, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2537': { 'ID': 5913, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2538': { 'ID': 5914, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2539': { 'ID': 5915, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2540': { 'ID': 5916, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2541': { 'ID': 5917, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2542': { 'ID': 5918, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2543': { 'ID': 5919, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2544': { 'ID': 5920, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2545': { 'ID': 5921, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2546': { 'ID': 5922, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2547': { 'ID': 5923, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2548': { 'ID': 5924, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2549': { 'ID': 5925, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2550': { 'ID': 5926, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2551': { 'ID': 5927, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2552': { 'ID': 5928, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2553': { 'ID': 5929, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2554': { 'ID': 5930, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2555': { 'ID': 5931, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2556': { 'ID': 5932, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2557': { 'ID': 5933, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2558': { 'ID': 5934, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2559': { 'ID': 5935, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2560': { 'ID': 5936, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2561': { 'ID': 5937, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2562': { 'ID': 5938, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2563': { 'ID': 5939, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2564': { 'ID': 5940, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2565': { 'ID': 5941, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2566': { 'ID': 5942, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2567': { 'ID': 5943, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2568': { 'ID': 5944, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2569': { 'ID': 5945, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2570': { 'ID': 5946, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2571': { 'ID': 5947, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2572': { 'ID': 5948, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2573': { 'ID': 5949, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2574': { 'ID': 5950, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2575': { 'ID': 5951, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2576': { 'ID': 5952, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2577': { 'ID': 5953, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2578': { 'ID': 5954, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2579': { 'ID': 5955, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2580': { 'ID': 5956, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2581': { 'ID': 5957, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2582': { 'ID': 5958, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2583': { 'ID': 5959, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2584': { 'ID': 5960, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2585': { 'ID': 5961, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2586': { 'ID': 5962, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2587': { 'ID': 5963, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2588': { 'ID': 5964, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2589': { 'ID': 5965, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2590': { 'ID': 5966, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2591': { 'ID': 5967, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2592': { 'ID': 5968, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2593': { 'ID': 5969, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2594': { 'ID': 5970, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2595': { 'ID': 5971, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2596': { 'ID': 5972, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2597': { 'ID': 5973, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2598': { 'ID': 5974, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2599': { 'ID': 5975, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2600': { 'ID': 5976, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2601': { 'ID': 5977, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2602': { 'ID': 5978, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2603': { 'ID': 5979, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2604': { 'ID': 5980, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2605': { 'ID': 5981, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2606': { 'ID': 5982, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2607': { 'ID': 5983, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2608': { 'ID': 5984, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2609': { 'ID': 5985, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2610': { 'ID': 5986, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2611': { 'ID': 5987, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2612': { 'ID': 5988, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2613': { 'ID': 5989, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2614': { 'ID': 5990, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2615': { 'ID': 5991, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2616': { 'ID': 5992, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2617': { 'ID': 5993, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2618': { 'ID': 5994, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2619': { 'ID': 5995, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2620': { 'ID': 5996, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2621': { 'ID': 5997, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2622': { 'ID': 5998, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2623': { 'ID': 5999, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2624': { 'ID': 6000, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2625': { 'ID': 6001, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2626': { 'ID': 6002, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2627': { 'ID': 6003, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2628': { 'ID': 6004, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2629': { 'ID': 6005, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2630': { 'ID': 6006, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2631': { 'ID': 6007, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2632': { 'ID': 6008, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2633': { 'ID': 6009, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2634': { 'ID': 6010, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2635': { 'ID': 6011, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2636': { 'ID': 6012, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2637': { 'ID': 6013, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2638': { 'ID': 6014, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2639': { 'ID': 6015, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2640': { 'ID': 6016, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2641': { 'ID': 6017, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2642': { 'ID': 6018, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2643': { 'ID': 6019, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2644': { 'ID': 6020, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2645': { 'ID': 6021, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2646': { 'ID': 6022, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2647': { 'ID': 6023, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2648': { 'ID': 6024, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2649': { 'ID': 6025, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2650': { 'ID': 6026, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2651': { 'ID': 6027, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2652': { 'ID': 6028, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2653': { 'ID': 6029, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2654': { 'ID': 6030, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2655': { 'ID': 6031, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2656': { 'ID': 6032, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2657': { 'ID': 6033, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2658': { 'ID': 6034, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2659': { 'ID': 6035, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2660': { 'ID': 6036, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2661': { 'ID': 6037, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2662': { 'ID': 6038, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2663': { 'ID': 6039, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2664': { 'ID': 6040, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2665': { 'ID': 6041, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2666': { 'ID': 6042, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2667': { 'ID': 6043, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2668': { 'ID': 6044, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2669': { 'ID': 6045, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2670': { 'ID': 6046, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'HR46400': { 'ID': 6399, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46401': { 'ID': 6400, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46402': { 'ID': 6401, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46403': { 'ID': 6402, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46404': { 'ID': 6403, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46405': { 'ID': 6404, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46406': { 'ID': 6405, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46407': { 'ID': 6406, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46408': { 'ID': 6407, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46409': { 'ID': 6408, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46410': { 'ID': 6409, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46411': { 'ID': 6410, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46412': { 'ID': 6411, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46413': { 'ID': 6412, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46414': { 'ID': 6413, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46415': { 'ID': 6414, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46416': { 'ID': 6415, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46417': { 'ID': 6416, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46418': { 'ID': 6417, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46419': { 'ID': 6418, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'Nr1WMZAdresse': { 'ID': 6469, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 255, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 255, 'Name': 'Zählerbusadresse WMZ1 (CO6, Fb10)' }, + 'Nr1WMZTyp': { 'ID': 6470, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 5, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 5, 'Name': 'Typenschlüssel (2=1434, 3=CAL3, 4=APAtO, 5=SLS)' }, + 'Nr1WMZAusl': { 'ID': 6471, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_Lesemodus', 'Buswert': 0, 'Busmin': 0, 'Busmax': 3, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 3, 'Name': 'Auslesemodus 0=24h, 1=Cont, 2=Coil(CL16)(CO6,Fb10)' }, + 'Nr2WMZAdresse': { 'ID': 6472, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 255, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 255, 'Name': 'Zählerbusadresse WMZ2 (CO6, Fb10)' }, + 'Nr2WMZTyp': { 'ID': 6473, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 5, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 5, 'Name': 'Typenschlüssel (2=1434, 3=CAL3, 4=APAtO, 5=SLS)' }, + 'Nr2WMZAusl': { 'ID': 6474, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_Lesemodus', 'Buswert': 0, 'Busmin': 0, 'Busmax': 3, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 3, 'Name': 'Auslesemodus 0=24h, 1=Cont, 2=Coil(CL17)(CO6,Fb10)' }, + 'Nr3WMZAdresse': { 'ID': 6475, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 255, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 255, 'Name': 'Zählerbusadresse WMZ3 (CO6, Fb10)' }, + 'Nr3WMZTyp': { 'ID': 6476, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 5, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 5, 'Name': 'Typenschlüssel (2=1434, 3=CAL3, 4=APAtO, 5=SLS)' }, + 'Nr3WMZAusl': { 'ID': 6477, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_Lesemodus', 'Buswert': 0, 'Busmin': 0, 'Busmax': 3, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 3, 'Name': 'Auslesemodus 0=24h, 1=Cont, 2=Coil(CL18)(CO6,Fb10)' }, + 'Nr4WMZAdresse': { 'ID': 6478, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 255, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 255, 'Name': 'Zählerbusadresse WMZ4 (CO6, Fb10)' }, + 'Nr4WMZTyp': { 'ID': 6479, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 5, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 5, 'Name': 'Typenschlüssel (2=1434, 3=CAL3, 4=APAtO, 5=SLS)' }, + 'Nr4WMZAusl': { 'ID': 6480, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_Lesemodus', 'Buswert': 0, 'Busmin': 0, 'Busmax': 3, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 3, 'Name': 'Auslesemodus 0=24h, 1=Cont, 2=Coil(CL252)(CO6Fb10)' }, + 'Nr5WMZAdresse': { 'ID': 6481, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 255, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 255, 'Name': 'Zählerbusadresse WMZ5 (CO6, Fb10)' }, + 'Nr5WMZTyp': { 'ID': 6482, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 5, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 5, 'Name': 'Typenschlüssel (2=1434, 3=CAL3, 4=APAtO, 5=SLS)' }, + 'Nr5WMZAusl': { 'ID': 6483, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_Lesemodus', 'Buswert': 0, 'Busmin': 0, 'Busmax': 3, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 3, 'Name': 'Auslesemodus 0=24h, 1=Cont, 2=Coil(CL253)(CO6Fb10)' }, + 'Nr6WMZAdresse': { 'ID': 6484, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 255, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 255, 'Name': 'Zählerbusadresse WMZ6 (CO6, Fb10)' }, + 'Nr6WMZTyp': { 'ID': 6485, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 5, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 5, 'Name': 'Typenschlüssel (2=1434, 3=CAL3, 4=APAtO, 5=SLS)' }, + 'Nr6WMZAusl': { 'ID': 6486, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_Lesemodus', 'Buswert': 0, 'Busmin': 0, 'Busmax': 3, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 3, 'Name': 'Auslesemodus 0=24h, 1=Cont, 2=Coil(CL254)(CO6Fb10)' }, + 'M-BusAusleseint': { 'ID': 6487, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 3, 'Busmax': 43200, 'Faktor': 1, 'Digits': 0, 'Einheit': 's', 'Wert': 0, 'Wertmin': 3, 'Wertmax': 43200, 'Name': 'M-Bus Ausleseintervall' }, + 'Unbekannt-2710': { 'ID': 6488, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2711': { 'ID': 6489, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Hardw-VersM-Bus': { 'ID': 6490, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Version', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Hardware-Version M-Bus-Platine' }, + 'Software-Version': { 'ID': 6491, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Version', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Software-Version M-Bus-Platine' }, + 'Unbekannt-2714': { 'ID': 6492, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Bootprog-Version': { 'ID': 6493, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Version', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Bootprogramm-Version M-Bus-Platine' }, + 'Unbekannt-2716': { 'ID': 6494, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2717': { 'ID': 6495, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2718': { 'ID': 6496, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2719': { 'ID': 6497, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2720': { 'ID': 6498, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr1SysWMZFLAG': { 'ID': 6499, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 32767000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 32767000, 'Name': 'WMZ1 Betriebszustand' }, + 'Nr1SysFSR': { 'ID': 6500, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 32767000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 32767000, 'Name': 'WMZ1 Fehlerstatus-Register' }, + 'Nr1VDatum': { 'ID': 6501, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ1 Lesedatum Volumen' }, + 'Nr1VZeit': { 'ID': 6502, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ1 Leseuhrzeit Volumen' }, + 'Nr1tBtre3': { 'ID': 6503, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ1 Betriebszeit x 10^3' }, + 'Nr1tBtre0': { 'ID': 6504, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ1 Betriebszeit x 10^0' }, + 'Nr1Qe4': { 'ID': 6505, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Durchfluß (10^4)' }, + 'Nr1Qe0': { 'ID': 6506, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Durchfluß (10^0)' }, + 'Nr1Qe-3': { 'ID': 6507, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Durchfluß (10^-3)' }, + 'Nr1QEinh': { 'ID': 6508, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Durchfluß, 0=m³/h, 1=l/h' }, + 'Nr1Ve4': { 'ID': 6509, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Volumen (10^4)' }, + 'Nr1Ve0': { 'ID': 6510, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Volumen (10^0)' }, + 'Nr1Ve-3': { 'ID': 6511, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Volumen (10^-3)' }, + 'Nr1VEinh': { 'ID': 6512, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Volumen, 0=m³, 1=l' }, + 'Nr1Pe4': { 'ID': 6513, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Leistung (10^4)' }, + 'Nr1Pe0': { 'ID': 6514, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Leistung (10^0)' }, + 'Nr1Pe-3': { 'ID': 6515, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Leistung (10^-3)' }, + 'Nr1PEinh': { 'ID': 6516, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Leistung, 0=kW, 1=MW' }, + 'Nr1We4': { 'ID': 6517, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Arbeit (10^4)' }, + 'Nr1We0': { 'ID': 6518, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Arbeit (10^0)' }, + 'Nr1We-3': { 'ID': 6519, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Arbeit (10^-3)' }, + 'Nr1WEinh': { 'ID': 6520, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ1 Einheit Arbeit, 0=MWh, 1=kWh, 2=GJ' }, + 'Nr1Hersteller-ID': { 'ID': 6521, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ1 Hersteller-Identifikation' }, + 'Nr1VLe0': { 'ID': 6522, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ1 Vorlauftemperatur (10^0)' }, + 'Nr1VLe-3': { 'ID': 6523, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Vorlauftemperatur (10^-3)' }, + 'Nr1VLEinh': { 'ID': 6524, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Vorlauftemperatur, 0=°C' }, + 'Nr1WMZ-Firmware': { 'ID': 6525, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Version', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65000000, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 650000, 'Name': 'WMZ1 Firmware-Version Zähler' }, + 'Nr1RLe0': { 'ID': 6526, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ1 Rücklauftemperatur (10^0)' }, + 'Nr1RLe-3': { 'ID': 6527, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Rücklauftemperatur (10^-3)' }, + 'Nr1RLEinh': { 'ID': 6528, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Rücklauftemperatur, 0=°C' }, + 'Unbekannt-2751': { 'ID': 6529, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr1SysAnsFail': { 'ID': 6530, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ1 Testregister für den internen Gebrauch' }, + 'Nr1SysZeroBack': { 'ID': 6531, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ1 Testregister für den internen Gebrauch' }, + 'Unbekannt-2754': { 'ID': 6532, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2755': { 'ID': 6533, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2756': { 'ID': 6534, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr1STagDatum': { 'ID': 6535, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ1 Lesedatum Stichtag' }, + 'Nr1STagZeit': { 'ID': 6536, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ1 Leseuhrzeit Stichtag' }, + 'Nr1WSTag1e4': { 'ID': 6537, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Arbeit Stichtag1 (10^4)' }, + 'Nr1WSTag1e0': { 'ID': 6538, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Arbeit Stichtag1 (10^0)' }, + 'Nr1WSTag1e-3': { 'ID': 6539, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Arbeit Stichtag1 (10^-3)' }, + 'Nr1WSTag1Einh': { 'ID': 6540, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ1 Einheit Arbeit Stichtag 1,0=MWh,1=kWh,2=GJ' }, + 'Nr1STag1Jahr': { 'ID': 6541, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ1 Jahr Stichtag 1' }, + 'Nr1STag1Datum': { 'ID': 6542, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ1 Datum Stichtag 1' }, + 'Nr1VSTag1e4': { 'ID': 6543, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Volumen Stichtag1 (10^4)' }, + 'Nr1VSTag1e0': { 'ID': 6544, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Volumen Stichtag1 (10^0)' }, + 'Nr1VSTag1e-3': { 'ID': 6545, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Volumen Stichtag1 (10^-3)' }, + 'Nr1VSTag1Einh': { 'ID': 6546, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Volumen Stichtag1, 0=m³, 1=l' }, + 'Nr1WSTag2e4': { 'ID': 6547, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Arbeit Stichtag2 (10^4)' }, + 'Nr1WSTag2e0': { 'ID': 6548, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Arbeit Stichtag2 (10^0)' }, + 'Nr1WSTag2e-3': { 'ID': 6549, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Arbeit Stichtag2 (10^-3)' }, + 'Nr1WSTag2Einh': { 'ID': 6550, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ1 Einheit Arbeit Stichtag 2,0=MWh,1=kWh,2=GJ' }, + 'Nr1STag2Jahr': { 'ID': 6551, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ1 Jahr Stichtag2' }, + 'Nr1STag2Datum': { 'ID': 6552, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ1 Datum Stichtag2' }, + 'Nr1VSTag2e4': { 'ID': 6553, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Volumen Stichtag2 (10^4)' }, + 'Nr1VSTag2e0': { 'ID': 6554, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Volumen Stichtag2 (10^0)' }, + 'Nr1VSTag2e-3': { 'ID': 6555, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Volumen Stichtag2 (10^-3)' }, + 'Nr1VSTag2Einh': { 'ID': 6556, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Volumen Stichtag2, 0=m³, 1=l' }, + 'Nr1WDev1e4': { 'ID': 6557, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Arbeit Device1 (10^4)' }, + 'Nr1WDev1e0': { 'ID': 6558, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Arbeit Device1 (10^0)' }, + 'Nr1WDev1e-3': { 'ID': 6559, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Arbeit Device1 (10^-3)' }, + 'Nr1WDev1Einh': { 'ID': 6560, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ1 Device1-Arbeit Einheit,0=MWh,1=kWh,2=GJ' }, + 'Nr1VDev1e4': { 'ID': 6561, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Volumen Device1 (10^4)' }, + 'Nr1VDev1e0': { 'ID': 6562, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Volumen Device1 (10^0)' }, + 'Nr1VDev1e-3': { 'ID': 6563, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Volumen Device1 (10^-3)' }, + 'Nr1VDev1Einh': { 'ID': 6564, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Volumen Device1, 0=m³, 1=l' }, + 'Nr1WDev2e4': { 'ID': 6565, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Arbeit Device2 (10^4)' }, + 'Nr1WDev2e0': { 'ID': 6566, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Arbeit Device2 (10^0)' }, + 'Nr1WDev2e-3': { 'ID': 6567, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Arbeit Device2 (10^-3)' }, + 'Nr1WDev2Einh': { 'ID': 6568, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ1 Einheit Arbeit Device2,0=MWh,1=kWh,2=GJ' }, + 'Nr1VDev2e4': { 'ID': 6569, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Volumen Device2 (10^4)' }, + 'Nr1VDev2e0': { 'ID': 6570, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Volumen Device2 (10^0)' }, + 'Nr1VDev2e-3': { 'ID': 6571, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Volumen Device2 (10^-3)' }, + 'Nr1VDev2Einh': { 'ID': 6572, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Volumen Device2, 0=m³, 1=l' }, + 'Nr1WTa1e4': { 'ID': 6573, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Arbeit Tarif1 (10^4)' }, + 'Nr1WTa1e0': { 'ID': 6574, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Arbeit Tarif1 (10^0)' }, + 'Nr1WTa1e-3': { 'ID': 6575, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Arbeit Tarif1 (10^-3)' }, + 'Nr1WTa1Einh': { 'ID': 6576, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ1 Einheit Arbeit Tarif1,0=MWh,1=kWh,2=GJ' }, + 'Nr1VTa1e4': { 'ID': 6577, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Volumen Tarif1 (10^4)' }, + 'Nr1VTa1e0': { 'ID': 6578, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Volumen Tarif1 (10^0)' }, + 'Nr1VTa1e-3': { 'ID': 6579, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Volumen Tarif1 (10^-3)' }, + 'Nr1VTa1Einh': { 'ID': 6580, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Volumen Tarif1, 0=m³, 1=l' }, + 'Nr1WTa2e4': { 'ID': 6581, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Arbeit Tarif2 (10^4)' }, + 'Nr1WTa2e0': { 'ID': 6582, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Arbeit Tarif2 (10^0)' }, + 'Nr1WTa2e-3': { 'ID': 6583, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Arbeit Tarif2 (10^-3)' }, + 'Nr1WTa2Einh': { 'ID': 6584, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ1 Einheit Arbeit Tarif2,0=MWh,1=kWh,2=GJ' }, + 'Nr1VTa2e4': { 'ID': 6585, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Volumen Tarif2 (10^4)' }, + 'Nr1VTa2e0': { 'ID': 6586, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Volumen Tarif2 (10^0)' }, + 'Nr1VTa2e-3': { 'ID': 6587, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Volumen Tarif2 (10^-3)' }, + 'Nr1VTa2Einh': { 'ID': 6588, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Volumen Tarif2, 0=m³, 1=l' }, + 'Nr1SysIDHB': { 'ID': 6589, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Identnummer obere 4 Stellen' }, + 'Nr1SysIDLB': { 'ID': 6590, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Identnummer untere 4 Stellen' }, + 'Nr1Dev1HCAe7': { 'ID': 6591, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ1 Device 1 Zählen ohne Einheit (10^7)' }, + 'Nr1Dev1HCAe4': { 'ID': 6592, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Device 1 Zählen ohne Einheit (10^4)' }, + 'Nr1Dev1HCAe0': { 'ID': 6593, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Device 1 Zählen ohne Einheit (10^0)' }, + 'Nr1Dev2HCAe7': { 'ID': 6594, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ1 Device 2 Zählen ohne Einheit (10^7)' }, + 'Nr1Dev2HCAe4': { 'ID': 6595, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Device 2 Zählen ohne Einheit (10^4)' }, + 'Nr1Dev2HCAe0': { 'ID': 6596, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Device 2 Zählen ohne Einheit (10^0)' }, + 'Nr1Dev3HCAe7': { 'ID': 6597, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ1 Device 3 Zählen ohne Einheit (10^7)' }, + 'Nr1Dev3HCAe4': { 'ID': 6598, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Device 3 Zählen ohne Einheit (10^4)' }, + 'Nr1Dev3HCAe0': { 'ID': 6599, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Device 3 Zählen ohne Einheit (10^0)' }, + 'Nr1QDev1Nr5e4': { 'ID': 6600, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Qmax Dev1 Speichernr5 10^4' }, + 'Nr1QDev1Nr5e0': { 'ID': 6601, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Qmax Dev1 Speichernr5 10^0' }, + 'Nr1QDev1Nr5e-3': { 'ID': 6602, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Qmax Dev1 Speichernr5 10^-3' }, + 'Nr1QDev1Nr5Einh': { 'ID': 6603, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit QmaxDev1Spnr5,0=m³/h,1=l/h' }, + 'Nr1Dev1Nr5Jahr': { 'ID': 6604, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ1 Jahr für Dev1maxStorNr5' }, + 'Nr1Dev1Nr5Datum': { 'ID': 6605, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ1 Datum für Dev1maxStorNr5' }, + 'Nr1Dev1Nr5Zeit': { 'ID': 6606, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ1 Uhrzeit für Dev1maxStorNr5' }, + 'Nr1PDev1Nr1e4': { 'ID': 6607, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Pmax für Dev1StorNr1 (10^4)' }, + 'Nr1PDev1Nr1e0': { 'ID': 6608, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Pmax für Dev1StorNr1 (10^0)' }, + 'Nr1PDev1Nr1e-3': { 'ID': 6609, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Pmax für Dev1StorNr1 (10^-3)' }, + 'Nr1PDev1Nr1Einh': { 'ID': 6610, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit PmaxDev1StorNr1, 0=kW, 1=MW' }, + 'Nr1Dev1Nr1Jahr': { 'ID': 6611, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ1 Jahr für Dev1maxStorNr1' }, + 'Nr1Dev1Nr1Datum': { 'ID': 6612, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ1 Datum für Dev1maxStorNr1' }, + 'Nr1Dev1Nr1Zeit': { 'ID': 6613, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ1 Uhrzeit für Dev1maxStorNr1' }, + 'Nr1Pmaxe4': { 'ID': 6614, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Leistung max (10^4)' }, + 'Nr1Pmaxe0': { 'ID': 6615, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Leistung max (10^0)' }, + 'Nr1Pmaxe-3': { 'ID': 6616, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Leistung max (10^-3)' }, + 'Nr1PmaxEinh': { 'ID': 6617, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Leistung max, 0=kW, 1=MW' }, + 'Nr1Qmaxe4': { 'ID': 6618, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Durchfluß max (10^4)' }, + 'Nr1Qmaxe0': { 'ID': 6619, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Durchfluß max (10^0)' }, + 'Nr1Qmaxe-3': { 'ID': 6620, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Durchfluß max (10^-3)' }, + 'Nr1QmaxEinh': { 'ID': 6621, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Durchfluß max,0=m³/h,1=l/h' }, + 'Unbekannt-2844': { 'ID': 6622, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr1VLmaxe0': { 'ID': 6623, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ1 Vorlauftemperatur max (10^0)' }, + 'Nr1VLmaxe-3': { 'ID': 6624, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Vorlauftemperatur max (10^-3)' }, + 'Nr1VLmaxEinh': { 'ID': 6625, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Vorlauftemperatur max, 0=°C' }, + 'Unbekannt-2848': { 'ID': 6626, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr1RLmaxe0': { 'ID': 6627, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ1 Rücklauftemperatur max (10^0)' }, + 'Nr1RLmaxe-3': { 'ID': 6628, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Rücklauftemperatur max (10^-3)' }, + 'Nr1RLmaxEinh': { 'ID': 6629, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Rücklauftemperatur max, 0=°C' }, + 'Nr1SysSlaveadr': { 'ID': 6630, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 255000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 255000, 'Name': 'WMZ1 echte WMZ-Adresse nach Zählerantwort' }, + 'Nr1DeltaTe0': { 'ID': 6631, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ1 Differenz (Vorlauf-Rücklauf) (10^0)' }, + 'Nr1DeltaTe-3': { 'ID': 6632, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Differenz (Vorlauf-Rücklauf) (10^-3)' }, + 'Nr1VTa3e4': { 'ID': 6633, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Volumen Tarif3 (10^4)' }, + 'Nr1VTa3e0': { 'ID': 6634, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Volumen Tarif3 (10^0)' }, + 'Nr1VTa3e-3': { 'ID': 6635, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Volumen Tarif3 (10^-3)' }, + 'Nr1VTa3Einh': { 'ID': 6636, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Volumen Tarif3, 0=m³, 1=l' }, + 'Nr1PTa1Nr24e4': { 'ID': 6637, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 P Tarif1StorNr24 (10^4)' }, + 'Nr1PTa1Nr24e0': { 'ID': 6638, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 P Tarif1StorNr24 (10^0)' }, + 'Nr1PTa1Nr24e-3': { 'ID': 6639, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 P Tarif1StorNr24 (10^-3)' }, + 'Nr1PTa1Nr24Einh': { 'ID': 6640, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit PTarif1StorNr24, 0=kW, 1=MW' }, + 'Nr1QTa1Nr24e4': { 'ID': 6641, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Q Tarif1StorNr24 (10^4)' }, + 'Nr1QTa1Nr24e0': { 'ID': 6642, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Q Tarif1StorNr24 (10^0)' }, + 'Nr1QTa1Nr24e-3': { 'ID': 6643, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Q Tarif1StorNr24 (10^-3)' }, + 'Nr1QTa1Nr24Einh': { 'ID': 6644, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 EinheitQTarif1StorNr24,0=m³/h,1=l/h' }, + 'Nr1tErrore3': { 'ID': 6645, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Zeit während Fehler (10^3)' }, + 'Nr1tErrore0': { 'ID': 6646, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Zeit während Fehler (10^0)' }, + 'Nr1tInfoe3': { 'ID': 6647, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Info (10^3)' }, + 'Nr1tInfoe0': { 'ID': 6648, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Info (10^0)' }, + 'Unbekannt-2871': { 'ID': 6649, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2872': { 'ID': 6650, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2873': { 'ID': 6651, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2874': { 'ID': 6652, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2875': { 'ID': 6653, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2876': { 'ID': 6654, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2877': { 'ID': 6655, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2878': { 'ID': 6656, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2879': { 'ID': 6657, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2880': { 'ID': 6658, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2881': { 'ID': 6659, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2882': { 'ID': 6660, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2883': { 'ID': 6661, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2884': { 'ID': 6662, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2885': { 'ID': 6663, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2886': { 'ID': 6664, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2887': { 'ID': 6665, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2888': { 'ID': 6666, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2889': { 'ID': 6667, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2890': { 'ID': 6668, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2891': { 'ID': 6669, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2892': { 'ID': 6670, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2893': { 'ID': 6671, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2894': { 'ID': 6672, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2895': { 'ID': 6673, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2896': { 'ID': 6674, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2897': { 'ID': 6675, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2898': { 'ID': 6676, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2899': { 'ID': 6677, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2900': { 'ID': 6678, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2901': { 'ID': 6679, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2902': { 'ID': 6680, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2903': { 'ID': 6681, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2904': { 'ID': 6682, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2905': { 'ID': 6683, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2906': { 'ID': 6684, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2907': { 'ID': 6685, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2908': { 'ID': 6686, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2909': { 'ID': 6687, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2910': { 'ID': 6688, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2911': { 'ID': 6689, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2912': { 'ID': 6690, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2913': { 'ID': 6691, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2914': { 'ID': 6692, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2915': { 'ID': 6693, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2916': { 'ID': 6694, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2917': { 'ID': 6695, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2918': { 'ID': 6696, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2919': { 'ID': 6697, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2920': { 'ID': 6698, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2921': { 'ID': 6699, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2922': { 'ID': 6700, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2923': { 'ID': 6701, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2924': { 'ID': 6702, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2925': { 'ID': 6703, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2926': { 'ID': 6704, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2927': { 'ID': 6705, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2928': { 'ID': 6706, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2929': { 'ID': 6707, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2930': { 'ID': 6708, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2931': { 'ID': 6709, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2932': { 'ID': 6710, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2933': { 'ID': 6711, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2934': { 'ID': 6712, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2935': { 'ID': 6713, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2936': { 'ID': 6714, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2937': { 'ID': 6715, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2938': { 'ID': 6716, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2939': { 'ID': 6717, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2940': { 'ID': 6718, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2941': { 'ID': 6719, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2942': { 'ID': 6720, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2943': { 'ID': 6721, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2944': { 'ID': 6722, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2945': { 'ID': 6723, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2946': { 'ID': 6724, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2947': { 'ID': 6725, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2948': { 'ID': 6726, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2949': { 'ID': 6727, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2950': { 'ID': 6728, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2951': { 'ID': 6729, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2952': { 'ID': 6730, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2953': { 'ID': 6731, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2954': { 'ID': 6732, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2955': { 'ID': 6733, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2956': { 'ID': 6734, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2957': { 'ID': 6735, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2958': { 'ID': 6736, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2959': { 'ID': 6737, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2960': { 'ID': 6738, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2961': { 'ID': 6739, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2962': { 'ID': 6740, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2963': { 'ID': 6741, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2964': { 'ID': 6742, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2965': { 'ID': 6743, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2966': { 'ID': 6744, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2967': { 'ID': 6745, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2968': { 'ID': 6746, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2969': { 'ID': 6747, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2970': { 'ID': 6748, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2971': { 'ID': 6749, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2972': { 'ID': 6750, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2973': { 'ID': 6751, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2974': { 'ID': 6752, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2975': { 'ID': 6753, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2976': { 'ID': 6754, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2977': { 'ID': 6755, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2978': { 'ID': 6756, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2979': { 'ID': 6757, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2980': { 'ID': 6758, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2981': { 'ID': 6759, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2982': { 'ID': 6760, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2983': { 'ID': 6761, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2984': { 'ID': 6762, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2985': { 'ID': 6763, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2986': { 'ID': 6764, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2987': { 'ID': 6765, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2988': { 'ID': 6766, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2989': { 'ID': 6767, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2990': { 'ID': 6768, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2991': { 'ID': 6769, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2992': { 'ID': 6770, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2993': { 'ID': 6771, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2994': { 'ID': 6772, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2995': { 'ID': 6773, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2996': { 'ID': 6774, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2997': { 'ID': 6775, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2998': { 'ID': 6776, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2999': { 'ID': 6777, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3000': { 'ID': 6778, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3001': { 'ID': 6779, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3002': { 'ID': 6780, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3003': { 'ID': 6781, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3004': { 'ID': 6782, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3005': { 'ID': 6783, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3006': { 'ID': 6784, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3007': { 'ID': 6785, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3008': { 'ID': 6786, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3009': { 'ID': 6787, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3010': { 'ID': 6788, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3011': { 'ID': 6789, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3012': { 'ID': 6790, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3013': { 'ID': 6791, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3014': { 'ID': 6792, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3015': { 'ID': 6793, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3016': { 'ID': 6794, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3017': { 'ID': 6795, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3018': { 'ID': 6796, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3019': { 'ID': 6797, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3020': { 'ID': 6798, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3021': { 'ID': 6799, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3022': { 'ID': 6800, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3023': { 'ID': 6801, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3024': { 'ID': 6802, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3025': { 'ID': 6803, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3026': { 'ID': 6804, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3027': { 'ID': 6805, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3028': { 'ID': 6806, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3029': { 'ID': 6807, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3030': { 'ID': 6808, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3031': { 'ID': 6809, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3032': { 'ID': 6810, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3033': { 'ID': 6811, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3034': { 'ID': 6812, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3035': { 'ID': 6813, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3036': { 'ID': 6814, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3037': { 'ID': 6815, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3038': { 'ID': 6816, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3039': { 'ID': 6817, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3040': { 'ID': 6818, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3041': { 'ID': 6819, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3042': { 'ID': 6820, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3043': { 'ID': 6821, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3044': { 'ID': 6822, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3045': { 'ID': 6823, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3046': { 'ID': 6824, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3047': { 'ID': 6825, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3048': { 'ID': 6826, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3049': { 'ID': 6827, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3050': { 'ID': 6828, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3051': { 'ID': 6829, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3052': { 'ID': 6830, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3053': { 'ID': 6831, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3054': { 'ID': 6832, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3055': { 'ID': 6833, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3056': { 'ID': 6834, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3057': { 'ID': 6835, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3058': { 'ID': 6836, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3059': { 'ID': 6837, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3060': { 'ID': 6838, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3061': { 'ID': 6839, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3062': { 'ID': 6840, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3063': { 'ID': 6841, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3064': { 'ID': 6842, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3065': { 'ID': 6843, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3066': { 'ID': 6844, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3067': { 'ID': 6845, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3068': { 'ID': 6846, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3069': { 'ID': 6847, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3070': { 'ID': 6848, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3071': { 'ID': 6849, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3072': { 'ID': 6850, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3073': { 'ID': 6851, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3074': { 'ID': 6852, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3075': { 'ID': 6853, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3076': { 'ID': 6854, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3077': { 'ID': 6855, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3078': { 'ID': 6856, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3079': { 'ID': 6857, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3080': { 'ID': 6858, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3081': { 'ID': 6859, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3082': { 'ID': 6860, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3083': { 'ID': 6861, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3084': { 'ID': 6862, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3085': { 'ID': 6863, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3086': { 'ID': 6864, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3087': { 'ID': 6865, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3088': { 'ID': 6866, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3089': { 'ID': 6867, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3090': { 'ID': 6868, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3091': { 'ID': 6869, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3092': { 'ID': 6870, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3093': { 'ID': 6871, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3094': { 'ID': 6872, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3095': { 'ID': 6873, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3096': { 'ID': 6874, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3097': { 'ID': 6875, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3098': { 'ID': 6876, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3099': { 'ID': 6877, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3100': { 'ID': 6878, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3101': { 'ID': 6879, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3102': { 'ID': 6880, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3103': { 'ID': 6881, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3104': { 'ID': 6882, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3105': { 'ID': 6883, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3106': { 'ID': 6884, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3107': { 'ID': 6885, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3108': { 'ID': 6886, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3109': { 'ID': 6887, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3110': { 'ID': 6888, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3111': { 'ID': 6889, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3112': { 'ID': 6890, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3113': { 'ID': 6891, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3114': { 'ID': 6892, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3115': { 'ID': 6893, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3116': { 'ID': 6894, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3117': { 'ID': 6895, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3118': { 'ID': 6896, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3119': { 'ID': 6897, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3120': { 'ID': 6898, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3121': { 'ID': 6899, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3122': { 'ID': 6900, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3123': { 'ID': 6901, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3124': { 'ID': 6902, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3125': { 'ID': 6903, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3126': { 'ID': 6904, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3127': { 'ID': 6905, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3128': { 'ID': 6906, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3129': { 'ID': 6907, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3130': { 'ID': 6908, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3131': { 'ID': 6909, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3132': { 'ID': 6910, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3133': { 'ID': 6911, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3134': { 'ID': 6912, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3135': { 'ID': 6913, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3136': { 'ID': 6914, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3137': { 'ID': 6915, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3138': { 'ID': 6916, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3139': { 'ID': 6917, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3140': { 'ID': 6918, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3141': { 'ID': 6919, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3142': { 'ID': 6920, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3143': { 'ID': 6921, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3144': { 'ID': 6922, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3145': { 'ID': 6923, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3146': { 'ID': 6924, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3147': { 'ID': 6925, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3148': { 'ID': 6926, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3149': { 'ID': 6927, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3150': { 'ID': 6928, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3151': { 'ID': 6929, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3152': { 'ID': 6930, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3153': { 'ID': 6931, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3154': { 'ID': 6932, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3155': { 'ID': 6933, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3156': { 'ID': 6934, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3157': { 'ID': 6935, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3158': { 'ID': 6936, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3159': { 'ID': 6937, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3160': { 'ID': 6938, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3161': { 'ID': 6939, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3162': { 'ID': 6940, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3163': { 'ID': 6941, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3164': { 'ID': 6942, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3165': { 'ID': 6943, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3166': { 'ID': 6944, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3167': { 'ID': 6945, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3168': { 'ID': 6946, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3169': { 'ID': 6947, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3170': { 'ID': 6948, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3171': { 'ID': 6949, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3172': { 'ID': 6950, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3173': { 'ID': 6951, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3174': { 'ID': 6952, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3175': { 'ID': 6953, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3176': { 'ID': 6954, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3177': { 'ID': 6955, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3178': { 'ID': 6956, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3179': { 'ID': 6957, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3180': { 'ID': 6958, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3181': { 'ID': 6959, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3182': { 'ID': 6960, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3183': { 'ID': 6961, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3184': { 'ID': 6962, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3185': { 'ID': 6963, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3186': { 'ID': 6964, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3187': { 'ID': 6965, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3188': { 'ID': 6966, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3189': { 'ID': 6967, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3190': { 'ID': 6968, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3191': { 'ID': 6969, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3192': { 'ID': 6970, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3193': { 'ID': 6971, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3194': { 'ID': 6972, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3195': { 'ID': 6973, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3196': { 'ID': 6974, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3197': { 'ID': 6975, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3198': { 'ID': 6976, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3199': { 'ID': 6977, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3200': { 'ID': 6978, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3201': { 'ID': 6979, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3202': { 'ID': 6980, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3203': { 'ID': 6981, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3204': { 'ID': 6982, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3205': { 'ID': 6983, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3206': { 'ID': 6984, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3207': { 'ID': 6985, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3208': { 'ID': 6986, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3209': { 'ID': 6987, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3210': { 'ID': 6988, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3211': { 'ID': 6989, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3212': { 'ID': 6990, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3213': { 'ID': 6991, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3214': { 'ID': 6992, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3215': { 'ID': 6993, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3216': { 'ID': 6994, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3217': { 'ID': 6995, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3218': { 'ID': 6996, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3219': { 'ID': 6997, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3220': { 'ID': 6998, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr2SysWMZFLAG': { 'ID': 6999, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 32767000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 32767000, 'Name': 'WMZ2 Betriebszustand' }, + 'Nr2SysFSR': { 'ID': 7000, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 32767000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 32767000, 'Name': 'WMZ2 Fehlerstatus-Register' }, + 'Nr2VDatum': { 'ID': 7001, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ2 Lesedatum Volumen' }, + 'Nr2VZeit': { 'ID': 7002, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ2 Leseuhrzeit Volumen' }, + 'Nr2tBtre3': { 'ID': 7003, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ2 Betriebszeit x 10^3' }, + 'Nr2tBtre0': { 'ID': 7004, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ2 Betriebszeit x 10^0' }, + 'Nr2Qe4': { 'ID': 7005, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Durchfluß (10^4)' }, + 'Nr2Qe0': { 'ID': 7006, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Durchfluß (10^0)' }, + 'Nr2Qe-3': { 'ID': 7007, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Durchfluß (10^-3)' }, + 'Nr2QEinh': { 'ID': 7008, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Durchfluß, 0=m³/h, 1=l/h' }, + 'Nr2Ve4': { 'ID': 7009, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Volumen (10^4)' }, + 'Nr2Ve0': { 'ID': 7010, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Volumen (10^0)' }, + 'Nr2Ve-3': { 'ID': 7011, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Volumen (10^-3)' }, + 'Nr2VEinh': { 'ID': 7012, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Volumen, 0=m³, 1=l' }, + 'Nr2Pe4': { 'ID': 7013, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Leistung (10^4)' }, + 'Nr2Pe0': { 'ID': 7014, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Leistung (10^0)' }, + 'Nr2Pe-3': { 'ID': 7015, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Leistung (10^-3)' }, + 'Nr2PEinh': { 'ID': 7016, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Leistung, 0=kW, 1=MW' }, + 'Nr2We4': { 'ID': 7017, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Arbeit (10^4)' }, + 'Nr2We0': { 'ID': 7018, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Arbeit (10^0)' }, + 'Nr2We-3': { 'ID': 7019, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Arbeit (10^-3)' }, + 'Nr2WEinh': { 'ID': 7020, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ2 Einheit Arbeit, 0=MWh, 1=kWh, 2=GJ' }, + 'Nr2Hersteller-ID': { 'ID': 7021, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ2 Hersteller-Identifikation' }, + 'Nr2VLe0': { 'ID': 7022, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ2 Vorlauftemperatur (10^0)' }, + 'Nr2VLe-3': { 'ID': 7023, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Vorlauftemperatur (10^-3)' }, + 'Nr2VLEinh': { 'ID': 7024, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Vorlauftemperatur, 0=°C' }, + 'Nr2WMZ-Firmware': { 'ID': 7025, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Version', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65000000, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 650000, 'Name': 'WMZ2 Firmware-Version Zähler' }, + 'Nr2RLe0': { 'ID': 7026, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ2 Rücklauftemperatur (10^0)' }, + 'Nr2RLe-3': { 'ID': 7027, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Rücklauftemperatur (10^-3)' }, + 'Nr2RLEinh': { 'ID': 7028, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Rücklauftemperatur, 0=°C' }, + 'Unbekannt-3251': { 'ID': 7029, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr2SysAnsFail': { 'ID': 7030, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ2 Testregister für den internen Gebrauch' }, + 'Nr2SysZeroBack': { 'ID': 7031, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ2 Testregister für den internen Gebrauch' }, + 'Unbekannt-3254': { 'ID': 7032, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3255': { 'ID': 7033, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3256': { 'ID': 7034, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr2STagDatum': { 'ID': 7035, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ2 Lesedatum Stichtag' }, + 'Nr2STagZeit': { 'ID': 7036, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ2 Leseuhrzeit Stichtag' }, + 'Nr2WSTag1e4': { 'ID': 7037, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Arbeit Stichtag1 (10^4)' }, + 'Nr2WSTag1e0': { 'ID': 7038, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Arbeit Stichtag1 (10^0)' }, + 'Nr2WSTag1e-3': { 'ID': 7039, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Arbeit Stichtag1 (10^-3)' }, + 'Nr2WSTag1Einh': { 'ID': 7040, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ2 Einheit Arbeit Stichtag 1,0=MWh,1=kWh,2=GJ' }, + 'Nr2STag1Jahr': { 'ID': 7041, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ2 Jahr Stichtag 1' }, + 'Nr2STag1Datum': { 'ID': 7042, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ2 Datum Stichtag 1' }, + 'Nr2VSTag1e4': { 'ID': 7043, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Volumen Stichtag1 (10^4)' }, + 'Nr2VSTag1e0': { 'ID': 7044, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Volumen Stichtag1 (10^0)' }, + 'Nr2VSTag1e-3': { 'ID': 7045, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Volumen Stichtag1 (10^-3)' }, + 'Nr2VSTag1Einh': { 'ID': 7046, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Volumen Stichtag1, 0=m³, 1=l' }, + 'Nr2WSTag2e4': { 'ID': 7047, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Arbeit Stichtag2 (10^4)' }, + 'Nr2WSTag2e0': { 'ID': 7048, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Arbeit Stichtag2 (10^0)' }, + 'Nr2WSTag2e-3': { 'ID': 7049, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Arbeit Stichtag2 (10^-3)' }, + 'Nr2WSTag2Einh': { 'ID': 7050, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ2 Einheit Arbeit Stichtag 2,0=MWh,1=kWh,2=GJ' }, + 'Nr2STag2Jahr': { 'ID': 7051, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ2 Jahr Stichtag2' }, + 'Nr2STag2Datum': { 'ID': 7052, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ2 Datum Stichtag2' }, + 'Nr2VSTag2e4': { 'ID': 7053, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Volumen Stichtag2 (10^4)' }, + 'Nr2VSTag2e0': { 'ID': 7054, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Volumen Stichtag2 (10^0)' }, + 'Nr2VSTag2e-3': { 'ID': 7055, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Volumen Stichtag2 (10^-3)' }, + 'Nr2VSTag2Einh': { 'ID': 7056, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Volumen Stichtag2, 0=m³, 1=l' }, + 'Nr2WDev1e4': { 'ID': 7057, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Arbeit Device1 (10^4)' }, + 'Nr2WDev1e0': { 'ID': 7058, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Arbeit Device1 (10^0)' }, + 'Nr2WDev1e-3': { 'ID': 7059, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Arbeit Device1 (10^-3)' }, + 'Nr2WDev1Einh': { 'ID': 7060, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ2 Device1-Arbeit Einheit,0=MWh,1=kWh,2=GJ' }, + 'Nr2VDev1e4': { 'ID': 7061, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Volumen Device1 (10^4)' }, + 'Nr2VDev1e0': { 'ID': 7062, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Volumen Device1 (10^0)' }, + 'Nr2VDev1e-3': { 'ID': 7063, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Volumen Device1 (10^-3)' }, + 'Nr2VDev1Einh': { 'ID': 7064, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Volumen Device1, 0=m³, 1=l' }, + 'Nr2WDev2e4': { 'ID': 7065, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Arbeit Device2 (10^4)' }, + 'Nr2WDev2e0': { 'ID': 7066, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Arbeit Device2 (10^0)' }, + 'Nr2WDev2e-3': { 'ID': 7067, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Arbeit Device2 (10^-3)' }, + 'Nr2WDev2Einh': { 'ID': 7068, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ2 Einheit Arbeit Device2,0=MWh,1=kWh,2=GJ' }, + 'Nr2VDev2e4': { 'ID': 7069, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Volumen Device2 (10^4)' }, + 'Nr2VDev2e0': { 'ID': 7070, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Volumen Device2 (10^0)' }, + 'Nr2VDev2e-3': { 'ID': 7071, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Volumen Device2 (10^-3)' }, + 'Nr2VDev2Einh': { 'ID': 7072, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Volumen Device2, 0=m³, 1=l' }, + 'Nr2WTa1e4': { 'ID': 7073, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Arbeit Tarif1 (10^4)' }, + 'Nr2WTa1e0': { 'ID': 7074, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Arbeit Tarif1 (10^0)' }, + 'Nr2WTa1e-3': { 'ID': 7075, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Arbeit Tarif1 (10^-3)' }, + 'Nr2WTa1Einh': { 'ID': 7076, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ2 Einheit Arbeit Tarif1,0=MWh,1=kWh,2=GJ' }, + 'Nr2VTa1e4': { 'ID': 7077, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Volumen Tarif1 (10^4)' }, + 'Nr2VTa1e0': { 'ID': 7078, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Volumen Tarif1 (10^0)' }, + 'Nr2VTa1e-3': { 'ID': 7079, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Volumen Tarif1 (10^-3)' }, + 'Nr2VTa1Einh': { 'ID': 7080, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Volumen Tarif1, 0=m³, 1=l' }, + 'Nr2WTa2e4': { 'ID': 7081, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Arbeit Tarif2 (10^4)' }, + 'Nr2WTa2e0': { 'ID': 7082, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Arbeit Tarif2 (10^0)' }, + 'Nr2WTa2e-3': { 'ID': 7083, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Arbeit Tarif2 (10^-3)' }, + 'Nr2WTa2Einh': { 'ID': 7084, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ2 Einheit Arbeit Tarif2,0=MWh,1=kWh,2=GJ' }, + 'Nr2VTa2e4': { 'ID': 7085, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Volumen Tarif2 (10^4)' }, + 'Nr2VTa2e0': { 'ID': 7086, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Volumen Tarif2 (10^0)' }, + 'Nr2VTa2e-3': { 'ID': 7087, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Volumen Tarif2 (10^-3)' }, + 'Nr2VTa2Einh': { 'ID': 7088, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Volumen Tarif2, 0=m³, 1=l' }, + 'Nr2SysIDHB': { 'ID': 7089, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Identnummer obere 4 Stellen' }, + 'Nr2SysIDLB': { 'ID': 7090, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Identnummer untere 4 Stellen' }, + 'Nr2Dev1HCAe7': { 'ID': 7091, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ2 Device 1 Zählen ohne Einheit (10^7)' }, + 'Nr2Dev1HCAe4': { 'ID': 7092, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Device 1 Zählen ohne Einheit (10^4)' }, + 'Nr2Dev1HCAe0': { 'ID': 7093, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Device 1 Zählen ohne Einheit (10^0)' }, + 'Nr2Dev2HCAe7': { 'ID': 7094, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ2 Device 2 Zählen ohne Einheit (10^7)' }, + 'Nr2Dev2HCAe4': { 'ID': 7095, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Device 2 Zählen ohne Einheit (10^4)' }, + 'Nr2Dev2HCAe0': { 'ID': 7096, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Device 2 Zählen ohne Einheit (10^0)' }, + 'Nr2Dev3HCAe7': { 'ID': 7097, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ2 Device 3 Zählen ohne Einheit (10^7)' }, + 'Nr2Dev3HCAe4': { 'ID': 7098, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Device 3 Zählen ohne Einheit (10^4)' }, + 'Nr2Dev3HCAe0': { 'ID': 7099, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Device 3 Zählen ohne Einheit (10^0)' }, + 'Nr2QDev1Nr5e4': { 'ID': 7100, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Qmax Dev1 Speichernr5 10^4' }, + 'Nr2QDev1Nr5e0': { 'ID': 7101, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Qmax Dev1 Speichernr5 10^0' }, + 'Nr2QDev1Nr5e-3': { 'ID': 7102, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Qmax Dev1 Speichernr5 10^-3' }, + 'Nr2QDev1Nr5Einh': { 'ID': 7103, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit QmaxDev1Spnr5,0=m³/h,1=l/h' }, + 'Nr2Dev1Nr5Jahr': { 'ID': 7104, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ2 Jahr für Dev1maxStorNr5' }, + 'Nr2Dev1Nr5Datum': { 'ID': 7105, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ2 Datum für Dev1maxStorNr5' }, + 'Nr2Dev1Nr5Zeit': { 'ID': 7106, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ2 Uhrzeit für Dev1maxStorNr5' }, + 'Nr2PDev1Nr1e4': { 'ID': 7107, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Pmax für Dev1StorNr1 (10^4)' }, + 'Nr2PDev1Nr1e0': { 'ID': 7108, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Pmax für Dev1StorNr1 (10^0)' }, + 'Nr2PDev1Nr1e-3': { 'ID': 7109, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Pmax für Dev1StorNr1 (10^-3)' }, + 'Nr2PDev1Nr1Einh': { 'ID': 7110, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit PmaxDev1StorNr1, 0=kW, 1=MW' }, + 'Nr2Dev1Nr1Jahr': { 'ID': 7111, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ2 Jahr für Dev1maxStorNr1' }, + 'Nr2Dev1Nr1Datum': { 'ID': 7112, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ2 Datum für Dev1maxStorNr1' }, + 'Nr2Dev1Nr1Zeit': { 'ID': 7113, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ2 Uhrzeit für Dev1maxStorNr1' }, + 'Nr2Pmaxe4': { 'ID': 7114, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Leistung max (10^4)' }, + 'Nr2Pmaxe0': { 'ID': 7115, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Leistung max (10^0)' }, + 'Nr2Pmaxe-3': { 'ID': 7116, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Leistung max (10^-3)' }, + 'Nr2PmaxEinh': { 'ID': 7117, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Leistung max, 0=kW, 1=MW' }, + 'Nr2Qmaxe4': { 'ID': 7118, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Durchfluß max (10^4)' }, + 'Nr2Qmaxe0': { 'ID': 7119, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Durchfluß max (10^0)' }, + 'Nr2Qmaxe-3': { 'ID': 7120, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Durchfluß max (10^-3)' }, + 'Nr2QmaxEinh': { 'ID': 7121, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Durchfluß max,0=m³/h,1=l/h' }, + 'Unbekannt-3344': { 'ID': 7122, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr2VLmaxe0': { 'ID': 7123, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ2 Vorlauftemperatur max (10^0)' }, + 'Nr2VLmaxe-3': { 'ID': 7124, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Vorlauftemperatur max (10^-3)' }, + 'Nr2VLmaxEinh': { 'ID': 7125, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Vorlauftemperatur max, 0=°C' }, + 'Unbekannt-3348': { 'ID': 7126, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr2RLmaxe0': { 'ID': 7127, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ2 Rücklauftemperatur max (10^0)' }, + 'Nr2RLmaxe-3': { 'ID': 7128, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Rücklauftemperatur max (10^-3)' }, + 'Nr2RLmaxEinh': { 'ID': 7129, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Rücklauftemperatur max, 0=°C' }, + 'Nr2SysSlaveadr': { 'ID': 7130, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 255000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 255000, 'Name': 'WMZ2 echte WMZ-Adresse nach Zählerantwort' }, + 'Nr2DeltaTe0': { 'ID': 7131, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ2 Differenz (Vorlauf-Rücklauf) (10^0)' }, + 'Nr2DeltaTe-3': { 'ID': 7132, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Differenz (Vorlauf-Rücklauf) (10^-3)' }, + 'Nr2VTa3e4': { 'ID': 7133, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Volumen Tarif3 (10^4)' }, + 'Nr2VTa3e0': { 'ID': 7134, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Volumen Tarif3 (10^0)' }, + 'Nr2VTa3e-3': { 'ID': 7135, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Volumen Tarif3 (10^-3)' }, + 'Nr2VTa3Einh': { 'ID': 7136, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Volumen Tarif3, 0=m³, 1=l' }, + 'Nr2PTa1Nr24e4': { 'ID': 7137, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 P Tarif1StorNr24 (10^4)' }, + 'Nr2PTa1Nr24e0': { 'ID': 7138, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 P Tarif1StorNr24 (10^0)' }, + 'Nr2PTa1Nr24e-3': { 'ID': 7139, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 P Tarif1StorNr24 (10^-3)' }, + 'Nr2PTa1Nr24Einh': { 'ID': 7140, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit PTarif1StorNr24, 0=kW, 1=MW' }, + 'Nr2QTa1Nr24e4': { 'ID': 7141, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Q Tarif1StorNr24 (10^4)' }, + 'Nr2QTa1Nr24e0': { 'ID': 7142, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Q Tarif1StorNr24 (10^0)' }, + 'Nr2QTa1Nr24e-3': { 'ID': 7143, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Q Tarif1StorNr24 (10^-3)' }, + 'Nr2QTa1Nr24Einh': { 'ID': 7144, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 EinheitQTarif1StorNr24,0=m³/h,1=l/h' }, + 'Nr2tErrore3': { 'ID': 7145, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Zeit während Fehler (10^3)' }, + 'Nr2tErrore0': { 'ID': 7146, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Zeit während Fehler (10^0)' }, + 'Nr2tInfoe3': { 'ID': 7147, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Info (10^3)' }, + 'Nr2tInfoe0': { 'ID': 7148, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Info (10^0)' }, + 'Unbekannt-3371': { 'ID': 7149, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3372': { 'ID': 7150, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3373': { 'ID': 7151, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3374': { 'ID': 7152, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3375': { 'ID': 7153, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3376': { 'ID': 7154, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3377': { 'ID': 7155, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3378': { 'ID': 7156, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3379': { 'ID': 7157, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3380': { 'ID': 7158, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3381': { 'ID': 7159, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3382': { 'ID': 7160, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3383': { 'ID': 7161, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3384': { 'ID': 7162, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3385': { 'ID': 7163, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3386': { 'ID': 7164, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3387': { 'ID': 7165, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3388': { 'ID': 7166, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3389': { 'ID': 7167, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3390': { 'ID': 7168, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3391': { 'ID': 7169, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3392': { 'ID': 7170, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3393': { 'ID': 7171, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3394': { 'ID': 7172, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3395': { 'ID': 7173, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3396': { 'ID': 7174, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3397': { 'ID': 7175, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3398': { 'ID': 7176, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3399': { 'ID': 7177, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3400': { 'ID': 7178, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3401': { 'ID': 7179, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3402': { 'ID': 7180, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3403': { 'ID': 7181, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3404': { 'ID': 7182, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3405': { 'ID': 7183, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3406': { 'ID': 7184, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3407': { 'ID': 7185, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3408': { 'ID': 7186, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3409': { 'ID': 7187, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3410': { 'ID': 7188, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3411': { 'ID': 7189, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3412': { 'ID': 7190, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3413': { 'ID': 7191, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3414': { 'ID': 7192, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3415': { 'ID': 7193, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3416': { 'ID': 7194, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3417': { 'ID': 7195, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3418': { 'ID': 7196, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3419': { 'ID': 7197, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3420': { 'ID': 7198, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3421': { 'ID': 7199, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3422': { 'ID': 7200, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3423': { 'ID': 7201, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3424': { 'ID': 7202, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3425': { 'ID': 7203, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3426': { 'ID': 7204, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3427': { 'ID': 7205, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3428': { 'ID': 7206, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3429': { 'ID': 7207, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3430': { 'ID': 7208, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3431': { 'ID': 7209, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3432': { 'ID': 7210, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3433': { 'ID': 7211, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3434': { 'ID': 7212, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3435': { 'ID': 7213, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3436': { 'ID': 7214, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3437': { 'ID': 7215, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3438': { 'ID': 7216, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3439': { 'ID': 7217, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3440': { 'ID': 7218, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3441': { 'ID': 7219, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3442': { 'ID': 7220, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3443': { 'ID': 7221, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3444': { 'ID': 7222, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3445': { 'ID': 7223, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3446': { 'ID': 7224, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3447': { 'ID': 7225, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3448': { 'ID': 7226, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3449': { 'ID': 7227, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3450': { 'ID': 7228, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3451': { 'ID': 7229, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3452': { 'ID': 7230, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3453': { 'ID': 7231, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3454': { 'ID': 7232, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3455': { 'ID': 7233, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3456': { 'ID': 7234, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3457': { 'ID': 7235, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3458': { 'ID': 7236, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3459': { 'ID': 7237, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3460': { 'ID': 7238, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3461': { 'ID': 7239, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3462': { 'ID': 7240, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3463': { 'ID': 7241, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3464': { 'ID': 7242, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3465': { 'ID': 7243, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3466': { 'ID': 7244, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3467': { 'ID': 7245, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3468': { 'ID': 7246, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3469': { 'ID': 7247, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3470': { 'ID': 7248, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3471': { 'ID': 7249, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3472': { 'ID': 7250, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3473': { 'ID': 7251, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3474': { 'ID': 7252, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3475': { 'ID': 7253, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3476': { 'ID': 7254, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3477': { 'ID': 7255, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3478': { 'ID': 7256, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3479': { 'ID': 7257, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3480': { 'ID': 7258, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3481': { 'ID': 7259, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3482': { 'ID': 7260, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3483': { 'ID': 7261, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3484': { 'ID': 7262, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3485': { 'ID': 7263, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3486': { 'ID': 7264, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3487': { 'ID': 7265, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3488': { 'ID': 7266, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3489': { 'ID': 7267, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3490': { 'ID': 7268, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3491': { 'ID': 7269, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3492': { 'ID': 7270, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3493': { 'ID': 7271, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3494': { 'ID': 7272, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3495': { 'ID': 7273, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3496': { 'ID': 7274, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3497': { 'ID': 7275, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3498': { 'ID': 7276, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3499': { 'ID': 7277, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3500': { 'ID': 7278, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3501': { 'ID': 7279, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3502': { 'ID': 7280, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3503': { 'ID': 7281, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3504': { 'ID': 7282, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3505': { 'ID': 7283, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3506': { 'ID': 7284, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3507': { 'ID': 7285, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3508': { 'ID': 7286, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3509': { 'ID': 7287, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3510': { 'ID': 7288, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3511': { 'ID': 7289, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3512': { 'ID': 7290, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3513': { 'ID': 7291, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3514': { 'ID': 7292, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3515': { 'ID': 7293, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3516': { 'ID': 7294, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3517': { 'ID': 7295, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3518': { 'ID': 7296, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3519': { 'ID': 7297, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3520': { 'ID': 7298, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3521': { 'ID': 7299, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3522': { 'ID': 7300, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3523': { 'ID': 7301, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3524': { 'ID': 7302, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3525': { 'ID': 7303, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3526': { 'ID': 7304, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3527': { 'ID': 7305, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3528': { 'ID': 7306, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3529': { 'ID': 7307, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3530': { 'ID': 7308, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3531': { 'ID': 7309, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3532': { 'ID': 7310, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3533': { 'ID': 7311, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3534': { 'ID': 7312, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3535': { 'ID': 7313, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3536': { 'ID': 7314, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3537': { 'ID': 7315, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3538': { 'ID': 7316, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3539': { 'ID': 7317, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3540': { 'ID': 7318, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3541': { 'ID': 7319, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3542': { 'ID': 7320, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3543': { 'ID': 7321, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3544': { 'ID': 7322, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3545': { 'ID': 7323, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3546': { 'ID': 7324, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3547': { 'ID': 7325, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3548': { 'ID': 7326, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3549': { 'ID': 7327, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3550': { 'ID': 7328, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3551': { 'ID': 7329, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3552': { 'ID': 7330, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3553': { 'ID': 7331, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3554': { 'ID': 7332, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3555': { 'ID': 7333, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3556': { 'ID': 7334, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3557': { 'ID': 7335, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3558': { 'ID': 7336, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3559': { 'ID': 7337, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3560': { 'ID': 7338, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3561': { 'ID': 7339, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3562': { 'ID': 7340, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3563': { 'ID': 7341, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3564': { 'ID': 7342, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3565': { 'ID': 7343, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3566': { 'ID': 7344, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3567': { 'ID': 7345, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3568': { 'ID': 7346, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3569': { 'ID': 7347, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3570': { 'ID': 7348, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3571': { 'ID': 7349, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3572': { 'ID': 7350, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3573': { 'ID': 7351, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3574': { 'ID': 7352, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3575': { 'ID': 7353, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3576': { 'ID': 7354, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3577': { 'ID': 7355, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3578': { 'ID': 7356, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3579': { 'ID': 7357, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3580': { 'ID': 7358, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3581': { 'ID': 7359, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3582': { 'ID': 7360, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3583': { 'ID': 7361, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3584': { 'ID': 7362, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3585': { 'ID': 7363, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3586': { 'ID': 7364, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3587': { 'ID': 7365, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3588': { 'ID': 7366, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3589': { 'ID': 7367, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3590': { 'ID': 7368, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3591': { 'ID': 7369, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3592': { 'ID': 7370, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3593': { 'ID': 7371, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3594': { 'ID': 7372, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3595': { 'ID': 7373, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3596': { 'ID': 7374, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3597': { 'ID': 7375, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3598': { 'ID': 7376, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3599': { 'ID': 7377, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3600': { 'ID': 7378, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3601': { 'ID': 7379, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3602': { 'ID': 7380, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3603': { 'ID': 7381, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3604': { 'ID': 7382, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3605': { 'ID': 7383, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3606': { 'ID': 7384, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3607': { 'ID': 7385, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3608': { 'ID': 7386, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3609': { 'ID': 7387, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3610': { 'ID': 7388, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3611': { 'ID': 7389, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3612': { 'ID': 7390, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3613': { 'ID': 7391, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3614': { 'ID': 7392, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3615': { 'ID': 7393, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3616': { 'ID': 7394, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3617': { 'ID': 7395, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3618': { 'ID': 7396, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3619': { 'ID': 7397, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3620': { 'ID': 7398, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3621': { 'ID': 7399, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3622': { 'ID': 7400, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3623': { 'ID': 7401, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3624': { 'ID': 7402, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3625': { 'ID': 7403, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3626': { 'ID': 7404, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3627': { 'ID': 7405, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3628': { 'ID': 7406, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3629': { 'ID': 7407, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3630': { 'ID': 7408, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3631': { 'ID': 7409, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3632': { 'ID': 7410, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3633': { 'ID': 7411, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3634': { 'ID': 7412, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3635': { 'ID': 7413, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3636': { 'ID': 7414, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3637': { 'ID': 7415, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3638': { 'ID': 7416, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3639': { 'ID': 7417, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3640': { 'ID': 7418, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3641': { 'ID': 7419, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3642': { 'ID': 7420, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3643': { 'ID': 7421, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3644': { 'ID': 7422, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3645': { 'ID': 7423, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3646': { 'ID': 7424, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3647': { 'ID': 7425, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3648': { 'ID': 7426, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3649': { 'ID': 7427, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3650': { 'ID': 7428, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3651': { 'ID': 7429, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3652': { 'ID': 7430, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3653': { 'ID': 7431, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3654': { 'ID': 7432, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3655': { 'ID': 7433, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3656': { 'ID': 7434, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3657': { 'ID': 7435, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3658': { 'ID': 7436, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3659': { 'ID': 7437, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3660': { 'ID': 7438, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3661': { 'ID': 7439, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3662': { 'ID': 7440, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3663': { 'ID': 7441, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3664': { 'ID': 7442, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3665': { 'ID': 7443, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3666': { 'ID': 7444, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3667': { 'ID': 7445, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3668': { 'ID': 7446, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3669': { 'ID': 7447, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3670': { 'ID': 7448, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3671': { 'ID': 7449, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3672': { 'ID': 7450, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3673': { 'ID': 7451, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3674': { 'ID': 7452, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3675': { 'ID': 7453, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3676': { 'ID': 7454, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3677': { 'ID': 7455, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3678': { 'ID': 7456, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3679': { 'ID': 7457, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3680': { 'ID': 7458, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3681': { 'ID': 7459, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3682': { 'ID': 7460, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3683': { 'ID': 7461, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3684': { 'ID': 7462, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3685': { 'ID': 7463, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3686': { 'ID': 7464, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3687': { 'ID': 7465, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3688': { 'ID': 7466, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3689': { 'ID': 7467, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3690': { 'ID': 7468, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3691': { 'ID': 7469, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3692': { 'ID': 7470, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3693': { 'ID': 7471, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3694': { 'ID': 7472, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3695': { 'ID': 7473, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3696': { 'ID': 7474, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3697': { 'ID': 7475, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3698': { 'ID': 7476, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3699': { 'ID': 7477, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3700': { 'ID': 7478, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3701': { 'ID': 7479, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3702': { 'ID': 7480, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3703': { 'ID': 7481, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3704': { 'ID': 7482, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3705': { 'ID': 7483, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3706': { 'ID': 7484, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3707': { 'ID': 7485, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3708': { 'ID': 7486, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3709': { 'ID': 7487, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3710': { 'ID': 7488, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3711': { 'ID': 7489, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3712': { 'ID': 7490, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3713': { 'ID': 7491, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3714': { 'ID': 7492, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3715': { 'ID': 7493, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3716': { 'ID': 7494, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3717': { 'ID': 7495, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3718': { 'ID': 7496, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3719': { 'ID': 7497, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3720': { 'ID': 7498, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr3SysWMZFLAG': { 'ID': 7499, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 32767000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 32767000, 'Name': 'WMZ3 Betriebszustand' }, + 'Nr3SysFSR': { 'ID': 7500, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 32767000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 32767000, 'Name': 'WMZ3 Fehlerstatus-Register' }, + 'Nr3VDatum': { 'ID': 7501, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ3 Lesedatum Volumen' }, + 'Nr3VZeit': { 'ID': 7502, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ3 Leseuhrzeit Volumen' }, + 'Nr3tBtre3': { 'ID': 7503, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ3 Betriebszeit x 10^3' }, + 'Nr3tBtre0': { 'ID': 7504, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ3 Betriebszeit x 10^0' }, + 'Nr3Qe4': { 'ID': 7505, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Durchfluß (10^4)' }, + 'Nr3Qe0': { 'ID': 7506, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Durchfluß (10^0)' }, + 'Nr3Qe-3': { 'ID': 7507, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Durchfluß (10^-3)' }, + 'Nr3QEinh': { 'ID': 7508, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Durchfluß, 0=m³/h, 1=l/h' }, + 'Nr3Ve4': { 'ID': 7509, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Volumen (10^4)' }, + 'Nr3Ve0': { 'ID': 7510, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Volumen (10^0)' }, + 'Nr3Ve-3': { 'ID': 7511, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Volumen (10^-3)' }, + 'Nr3VEinh': { 'ID': 7512, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Volumen, 0=m³, 1=l' }, + 'Nr3Pe4': { 'ID': 7513, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Leistung (10^4)' }, + 'Nr3Pe0': { 'ID': 7514, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Leistung (10^0)' }, + 'Nr3Pe-3': { 'ID': 7515, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Leistung (10^-3)' }, + 'Nr3PEinh': { 'ID': 7516, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Leistung, 0=kW, 1=MW' }, + 'Nr3We4': { 'ID': 7517, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Arbeit (10^4)' }, + 'Nr3We0': { 'ID': 7518, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Arbeit (10^0)' }, + 'Nr3We-3': { 'ID': 7519, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Arbeit (10^-3)' }, + 'Nr3WEinh': { 'ID': 7520, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ3 Einheit Arbeit, 0=MWh, 1=kWh, 2=GJ' }, + 'Nr3Hersteller-ID': { 'ID': 7521, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ3 Hersteller-Identifikation' }, + 'Nr3VLe0': { 'ID': 7522, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ3 Vorlauftemperatur (10^0)' }, + 'Nr3VLe-3': { 'ID': 7523, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Vorlauftemperatur (10^-3)' }, + 'Nr3VLEinh': { 'ID': 7524, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Vorlauftemperatur, 0=°C' }, + 'Nr3WMZ-Firmware': { 'ID': 7525, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Version', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65000000, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 650000, 'Name': 'WMZ3 Firmware-Version Zähler' }, + 'Nr3RLe0': { 'ID': 7526, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ3 Rücklauftemperatur (10^0)' }, + 'Nr3RLe-3': { 'ID': 7527, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Rücklauftemperatur (10^-3)' }, + 'Nr3RLEinh': { 'ID': 7528, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Rücklauftemperatur, 0=°C' }, + 'Unbekannt-3751': { 'ID': 7529, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr3SysAnsFail': { 'ID': 7530, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ3 Testregister für den internen Gebrauch' }, + 'Nr3SysZeroBack': { 'ID': 7531, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ3 Testregister für den internen Gebrauch' }, + 'Unbekannt-3754': { 'ID': 7532, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3755': { 'ID': 7533, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3756': { 'ID': 7534, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr3STagDatum': { 'ID': 7535, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ3 Lesedatum Stichtag' }, + 'Nr3STagZeit': { 'ID': 7536, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ3 Leseuhrzeit Stichtag' }, + 'Nr3WSTag1e4': { 'ID': 7537, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Arbeit Stichtag1 (10^4)' }, + 'Nr3WSTag1e0': { 'ID': 7538, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Arbeit Stichtag1 (10^0)' }, + 'Nr3WSTag1e-3': { 'ID': 7539, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Arbeit Stichtag1 (10^-3)' }, + 'Nr3WSTag1Einh': { 'ID': 7540, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ3 Einheit Arbeit Stichtag 1,0=MWh,1=kWh,2=GJ' }, + 'Nr3STag1Jahr': { 'ID': 7541, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ3 Jahr Stichtag 1' }, + 'Nr3STag1Datum': { 'ID': 7542, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ3 Datum Stichtag 1' }, + 'Nr3VSTag1e4': { 'ID': 7543, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Volumen Stichtag1 (10^4)' }, + 'Nr3VSTag1e0': { 'ID': 7544, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Volumen Stichtag1 (10^0)' }, + 'Nr3VSTag1e-3': { 'ID': 7545, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Volumen Stichtag1 (10^-3)' }, + 'Nr3VSTag1Einh': { 'ID': 7546, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Volumen Stichtag1, 0=m³, 1=l' }, + 'Nr3WSTag2e4': { 'ID': 7547, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Arbeit Stichtag2 (10^4)' }, + 'Nr3WSTag2e0': { 'ID': 7548, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Arbeit Stichtag2 (10^0)' }, + 'Nr3WSTag2e-3': { 'ID': 7549, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Arbeit Stichtag2 (10^-3)' }, + 'Nr3WSTag2Einh': { 'ID': 7550, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ3 Einheit Arbeit Stichtag 2,0=MWh,1=kWh,2=GJ' }, + 'Nr3STag2Jahr': { 'ID': 7551, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ3 Jahr Stichtag2' }, + 'Nr3STag2Datum': { 'ID': 7552, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ3 Datum Stichtag2' }, + 'Nr3VSTag2e4': { 'ID': 7553, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Volumen Stichtag2 (10^4)' }, + 'Nr3VSTag2e0': { 'ID': 7554, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Volumen Stichtag2 (10^0)' }, + 'Nr3VSTag2e-3': { 'ID': 7555, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Volumen Stichtag2 (10^-3)' }, + 'Nr3VSTag2Einh': { 'ID': 7556, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Volumen Stichtag2, 0=m³, 1=l' }, + 'Nr3WDev1e4': { 'ID': 7557, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Arbeit Device1 (10^4)' }, + 'Nr3WDev1e0': { 'ID': 7558, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Arbeit Device1 (10^0)' }, + 'Nr3WDev1e-3': { 'ID': 7559, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Arbeit Device1 (10^-3)' }, + 'Nr3WDev1Einh': { 'ID': 7560, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ3 Device1-Arbeit Einheit,0=MWh,1=kWh,2=GJ' }, + 'Nr3VDev1e4': { 'ID': 7561, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Volumen Device1 (10^4)' }, + 'Nr3VDev1e0': { 'ID': 7562, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Volumen Device1 (10^0)' }, + 'Nr3VDev1e-3': { 'ID': 7563, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Volumen Device1 (10^-3)' }, + 'Nr3VDev1Einh': { 'ID': 7564, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Volumen Device1, 0=m³, 1=l' }, + 'Nr3WDev2e4': { 'ID': 7565, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Arbeit Device2 (10^4)' }, + 'Nr3WDev2e0': { 'ID': 7566, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Arbeit Device2 (10^0)' }, + 'Nr3WDev2e-3': { 'ID': 7567, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Arbeit Device2 (10^-3)' }, + 'Nr3WDev2Einh': { 'ID': 7568, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ3 Einheit Arbeit Device2,0=MWh,1=kWh,2=GJ' }, + 'Nr3VDev2e4': { 'ID': 7569, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Volumen Device2 (10^4)' }, + 'Nr3VDev2e0': { 'ID': 7570, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Volumen Device2 (10^0)' }, + 'Nr3VDev2e-3': { 'ID': 7571, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Volumen Device2 (10^-3)' }, + 'Nr3VDev2Einh': { 'ID': 7572, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Volumen Device2, 0=m³, 1=l' }, + 'Nr3WTa1e4': { 'ID': 7573, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Arbeit Tarif1 (10^4)' }, + 'Nr3WTa1e0': { 'ID': 7574, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Arbeit Tarif1 (10^0)' }, + 'Nr3WTa1e-3': { 'ID': 7575, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Arbeit Tarif1 (10^-3)' }, + 'Nr3WTa1Einh': { 'ID': 7576, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ3 Einheit Arbeit Tarif1,0=MWh,1=kWh,2=GJ' }, + 'Nr3VTa1e4': { 'ID': 7577, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Volumen Tarif1 (10^4)' }, + 'Nr3VTa1e0': { 'ID': 7578, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Volumen Tarif1 (10^0)' }, + 'Nr3VTa1e-3': { 'ID': 7579, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Volumen Tarif1 (10^-3)' }, + 'Nr3VTa1Einh': { 'ID': 7580, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Volumen Tarif1, 0=m³, 1=l' }, + 'Nr3WTa2e4': { 'ID': 7581, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Arbeit Tarif2 (10^4)' }, + 'Nr3WTa2e0': { 'ID': 7582, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Arbeit Tarif2 (10^0)' }, + 'Nr3WTa2e-3': { 'ID': 7583, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Arbeit Tarif2 (10^-3)' }, + 'Nr3WTa2Einh': { 'ID': 7584, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ3 Einheit Arbeit Tarif2,0=MWh,1=kWh,2=GJ' }, + 'Nr3VTa2e4': { 'ID': 7585, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Volumen Tarif2 (10^4)' }, + 'Nr3VTa2e0': { 'ID': 7586, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Volumen Tarif2 (10^0)' }, + 'Nr3VTa2e-3': { 'ID': 7587, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Volumen Tarif2 (10^-3)' }, + 'Nr3VTa2Einh': { 'ID': 7588, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Volumen Tarif2, 0=m³, 1=l' }, + 'Nr3SysIDHB': { 'ID': 7589, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Identnummer obere 4 Stellen' }, + 'Nr3SysIDLB': { 'ID': 7590, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Identnummer untere 4 Stellen' }, + 'Nr3Dev1HCAe7': { 'ID': 7591, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ3 Device 1 Zählen ohne Einheit (10^7)' }, + 'Nr3Dev1HCAe4': { 'ID': 7592, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Device 1 Zählen ohne Einheit (10^4)' }, + 'Nr3Dev1HCAe0': { 'ID': 7593, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Device 1 Zählen ohne Einheit (10^0)' }, + 'Nr3Dev2HCAe7': { 'ID': 7594, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ3 Device 2 Zählen ohne Einheit (10^7)' }, + 'Nr3Dev2HCAe4': { 'ID': 7595, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Device 2 Zählen ohne Einheit (10^4)' }, + 'Nr3Dev2HCAe0': { 'ID': 7596, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Device 2 Zählen ohne Einheit (10^0)' }, + 'Nr3Dev3HCAe7': { 'ID': 7597, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ3 Device 3 Zählen ohne Einheit (10^7)' }, + 'Nr3Dev3HCAe4': { 'ID': 7598, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Device 3 Zählen ohne Einheit (10^4)' }, + 'Nr3Dev3HCAe0': { 'ID': 7599, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Device 3 Zählen ohne Einheit (10^0)' }, + 'Nr3QDev1Nr5e4': { 'ID': 7600, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Qmax Dev1 Speichernr5 10^4' }, + 'Nr3QDev1Nr5e0': { 'ID': 7601, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Qmax Dev1 Speichernr5 10^0' }, + 'Nr3QDev1Nr5e-3': { 'ID': 7602, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Qmax Dev1 Speichernr5 10^-3' }, + 'Nr3QDev1Nr5Einh': { 'ID': 7603, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit QmaxDev1Spnr5,0=m³/h,1=l/h' }, + 'Nr3Dev1Nr5Jahr': { 'ID': 7604, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ3 Jahr für Dev1maxStorNr5' }, + 'Nr3Dev1Nr5Datum': { 'ID': 7605, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ3 Datum für Dev1maxStorNr5' }, + 'Nr3Dev1Nr5Zeit': { 'ID': 7606, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ3 Uhrzeit für Dev1maxStorNr5' }, + 'Nr3PDev1Nr1e4': { 'ID': 7607, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Pmax für Dev1StorNr1 (10^4)' }, + 'Nr3PDev1Nr1e0': { 'ID': 7608, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Pmax für Dev1StorNr1 (10^0)' }, + 'Nr3PDev1Nr1e-3': { 'ID': 7609, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Pmax für Dev1StorNr1 (10^-3)' }, + 'Nr3PDev1Nr1Einh': { 'ID': 7610, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit PmaxDev1StorNr1, 0=kW, 1=MW' }, + 'Nr3Dev1Nr1Jahr': { 'ID': 7611, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ3 Jahr für Dev1maxStorNr1' }, + 'Nr3Dev1Nr1Datum': { 'ID': 7612, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ3 Datum für Dev1maxStorNr1' }, + 'Nr3Dev1Nr1Zeit': { 'ID': 7613, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ3 Uhrzeit für Dev1maxStorNr1' }, + 'Nr3Pmaxe4': { 'ID': 7614, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Leistung max (10^4)' }, + 'Nr3Pmaxe0': { 'ID': 7615, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Leistung max (10^0)' }, + 'Nr3Pmaxe-3': { 'ID': 7616, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Leistung max (10^-3)' }, + 'Nr3PmaxEinh': { 'ID': 7617, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Leistung max, 0=kW, 1=MW' }, + 'Nr3Qmaxe4': { 'ID': 7618, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Durchfluß max (10^4)' }, + 'Nr3Qmaxe0': { 'ID': 7619, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Durchfluß max (10^0)' }, + 'Nr3Qmaxe-3': { 'ID': 7620, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Durchfluß max (10^-3)' }, + 'Nr3QmaxEinh': { 'ID': 7621, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Durchfluß max,0=m³/h,1=l/h' }, + 'Unbekannt-3844': { 'ID': 7622, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr3VLmaxe0': { 'ID': 7623, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ3 Vorlauftemperatur max (10^0)' }, + 'Nr3VLmaxe-3': { 'ID': 7624, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Vorlauftemperatur max (10^-3)' }, + 'Nr3VLmaxEinh': { 'ID': 7625, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Vorlauftemperatur max, 0=°C' }, + 'Unbekannt-3848': { 'ID': 7626, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr3RLmaxe0': { 'ID': 7627, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ3 Rücklauftemperatur max (10^0)' }, + 'Nr3RLmaxe-3': { 'ID': 7628, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Rücklauftemperatur max (10^-3)' }, + 'Nr3RLmaxEinh': { 'ID': 7629, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Rücklauftemperatur max, 0=°C' }, + 'Nr3SysSlaveadr': { 'ID': 7630, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 255000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 255000, 'Name': 'WMZ3 echte WMZ-Adresse nach Zählerantwort' }, + 'Nr3DeltaTe0': { 'ID': 7631, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ3 Differenz (Vorlauf-Rücklauf) (10^0)' }, + 'Nr3DeltaTe-3': { 'ID': 7632, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Differenz (Vorlauf-Rücklauf) (10^-3)' }, + 'Nr3VTa3e4': { 'ID': 7633, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Volumen Tarif3 (10^4)' }, + 'Nr3VTa3e0': { 'ID': 7634, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Volumen Tarif3 (10^0)' }, + 'Nr3VTa3e-3': { 'ID': 7635, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Volumen Tarif3 (10^-3)' }, + 'Nr3VTa3Einh': { 'ID': 7636, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Volumen Tarif3, 0=m³, 1=l' }, + 'Nr3PTa1Nr24e4': { 'ID': 7637, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 P Tarif1StorNr24 (10^4)' }, + 'Nr3PTa1Nr24e0': { 'ID': 7638, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 P Tarif1StorNr24 (10^0)' }, + 'Nr3PTa1Nr24e-3': { 'ID': 7639, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 P Tarif1StorNr24 (10^-3)' }, + 'Nr3PTa1Nr24Einh': { 'ID': 7640, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit PTarif1StorNr24, 0=kW, 1=MW' }, + 'Nr3QTa1Nr24e4': { 'ID': 7641, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Q Tarif1StorNr24 (10^4)' }, + 'Nr3QTa1Nr24e0': { 'ID': 7642, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Q Tarif1StorNr24 (10^0)' }, + 'Nr3QTa1Nr24e-3': { 'ID': 7643, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Q Tarif1StorNr24 (10^-3)' }, + 'Nr3QTa1Nr24Einh': { 'ID': 7644, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 EinheitQTarif1StorNr24,0=m³/h,1=l/h' }, + 'Nr3tErrore3': { 'ID': 7645, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Zeit während Fehler (10^3)' }, + 'Nr3tErrore0': { 'ID': 7646, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Zeit während Fehler (10^0)' }, + 'Nr3tInfoe3': { 'ID': 7647, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Info (10^3)' }, + 'Nr3tInfoe0': { 'ID': 7648, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Info (10^0)' }, + 'Unbekannt-3871': { 'ID': 7649, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3872': { 'ID': 7650, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3873': { 'ID': 7651, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3874': { 'ID': 7652, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3875': { 'ID': 7653, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3876': { 'ID': 7654, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3877': { 'ID': 7655, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3878': { 'ID': 7656, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3879': { 'ID': 7657, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3880': { 'ID': 7658, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3881': { 'ID': 7659, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3882': { 'ID': 7660, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3883': { 'ID': 7661, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3884': { 'ID': 7662, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3885': { 'ID': 7663, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3886': { 'ID': 7664, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3887': { 'ID': 7665, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3888': { 'ID': 7666, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3889': { 'ID': 7667, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3890': { 'ID': 7668, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3891': { 'ID': 7669, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3892': { 'ID': 7670, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3893': { 'ID': 7671, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3894': { 'ID': 7672, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3895': { 'ID': 7673, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3896': { 'ID': 7674, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3897': { 'ID': 7675, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3898': { 'ID': 7676, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3899': { 'ID': 7677, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3900': { 'ID': 7678, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3901': { 'ID': 7679, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3902': { 'ID': 7680, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3903': { 'ID': 7681, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3904': { 'ID': 7682, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3905': { 'ID': 7683, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3906': { 'ID': 7684, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3907': { 'ID': 7685, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3908': { 'ID': 7686, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3909': { 'ID': 7687, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3910': { 'ID': 7688, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3911': { 'ID': 7689, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3912': { 'ID': 7690, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3913': { 'ID': 7691, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3914': { 'ID': 7692, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3915': { 'ID': 7693, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3916': { 'ID': 7694, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3917': { 'ID': 7695, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3918': { 'ID': 7696, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3919': { 'ID': 7697, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3920': { 'ID': 7698, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3921': { 'ID': 7699, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3922': { 'ID': 7700, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3923': { 'ID': 7701, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3924': { 'ID': 7702, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3925': { 'ID': 7703, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3926': { 'ID': 7704, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3927': { 'ID': 7705, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3928': { 'ID': 7706, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3929': { 'ID': 7707, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3930': { 'ID': 7708, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3931': { 'ID': 7709, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3932': { 'ID': 7710, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3933': { 'ID': 7711, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3934': { 'ID': 7712, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3935': { 'ID': 7713, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3936': { 'ID': 7714, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3937': { 'ID': 7715, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3938': { 'ID': 7716, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3939': { 'ID': 7717, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3940': { 'ID': 7718, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3941': { 'ID': 7719, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3942': { 'ID': 7720, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3943': { 'ID': 7721, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3944': { 'ID': 7722, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3945': { 'ID': 7723, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3946': { 'ID': 7724, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3947': { 'ID': 7725, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3948': { 'ID': 7726, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3949': { 'ID': 7727, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3950': { 'ID': 7728, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3951': { 'ID': 7729, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3952': { 'ID': 7730, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3953': { 'ID': 7731, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3954': { 'ID': 7732, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3955': { 'ID': 7733, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3956': { 'ID': 7734, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3957': { 'ID': 7735, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3958': { 'ID': 7736, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3959': { 'ID': 7737, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3960': { 'ID': 7738, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3961': { 'ID': 7739, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3962': { 'ID': 7740, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3963': { 'ID': 7741, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3964': { 'ID': 7742, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3965': { 'ID': 7743, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3966': { 'ID': 7744, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3967': { 'ID': 7745, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3968': { 'ID': 7746, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3969': { 'ID': 7747, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3970': { 'ID': 7748, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3971': { 'ID': 7749, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3972': { 'ID': 7750, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3973': { 'ID': 7751, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3974': { 'ID': 7752, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3975': { 'ID': 7753, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3976': { 'ID': 7754, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3977': { 'ID': 7755, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3978': { 'ID': 7756, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3979': { 'ID': 7757, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3980': { 'ID': 7758, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3981': { 'ID': 7759, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3982': { 'ID': 7760, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3983': { 'ID': 7761, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3984': { 'ID': 7762, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3985': { 'ID': 7763, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3986': { 'ID': 7764, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3987': { 'ID': 7765, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3988': { 'ID': 7766, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3989': { 'ID': 7767, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3990': { 'ID': 7768, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3991': { 'ID': 7769, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3992': { 'ID': 7770, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3993': { 'ID': 7771, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3994': { 'ID': 7772, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3995': { 'ID': 7773, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3996': { 'ID': 7774, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3997': { 'ID': 7775, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3998': { 'ID': 7776, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3999': { 'ID': 7777, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4000': { 'ID': 7778, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4001': { 'ID': 7779, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4002': { 'ID': 7780, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4003': { 'ID': 7781, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4004': { 'ID': 7782, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4005': { 'ID': 7783, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4006': { 'ID': 7784, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4007': { 'ID': 7785, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4008': { 'ID': 7786, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4009': { 'ID': 7787, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4010': { 'ID': 7788, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4011': { 'ID': 7789, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4012': { 'ID': 7790, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4013': { 'ID': 7791, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4014': { 'ID': 7792, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4015': { 'ID': 7793, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4016': { 'ID': 7794, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4017': { 'ID': 7795, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4018': { 'ID': 7796, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4019': { 'ID': 7797, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4020': { 'ID': 7798, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4021': { 'ID': 7799, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4022': { 'ID': 7800, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4023': { 'ID': 7801, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4024': { 'ID': 7802, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4025': { 'ID': 7803, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4026': { 'ID': 7804, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4027': { 'ID': 7805, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4028': { 'ID': 7806, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4029': { 'ID': 7807, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4030': { 'ID': 7808, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4031': { 'ID': 7809, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4032': { 'ID': 7810, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4033': { 'ID': 7811, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4034': { 'ID': 7812, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4035': { 'ID': 7813, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4036': { 'ID': 7814, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4037': { 'ID': 7815, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4038': { 'ID': 7816, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4039': { 'ID': 7817, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4040': { 'ID': 7818, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4041': { 'ID': 7819, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4042': { 'ID': 7820, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4043': { 'ID': 7821, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4044': { 'ID': 7822, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4045': { 'ID': 7823, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4046': { 'ID': 7824, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4047': { 'ID': 7825, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4048': { 'ID': 7826, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4049': { 'ID': 7827, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4050': { 'ID': 7828, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4051': { 'ID': 7829, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4052': { 'ID': 7830, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4053': { 'ID': 7831, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4054': { 'ID': 7832, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4055': { 'ID': 7833, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4056': { 'ID': 7834, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4057': { 'ID': 7835, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4058': { 'ID': 7836, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4059': { 'ID': 7837, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4060': { 'ID': 7838, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4061': { 'ID': 7839, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4062': { 'ID': 7840, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4063': { 'ID': 7841, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4064': { 'ID': 7842, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4065': { 'ID': 7843, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4066': { 'ID': 7844, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4067': { 'ID': 7845, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4068': { 'ID': 7846, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4069': { 'ID': 7847, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4070': { 'ID': 7848, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4071': { 'ID': 7849, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4072': { 'ID': 7850, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4073': { 'ID': 7851, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4074': { 'ID': 7852, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4075': { 'ID': 7853, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4076': { 'ID': 7854, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4077': { 'ID': 7855, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4078': { 'ID': 7856, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4079': { 'ID': 7857, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4080': { 'ID': 7858, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4081': { 'ID': 7859, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4082': { 'ID': 7860, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4083': { 'ID': 7861, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4084': { 'ID': 7862, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4085': { 'ID': 7863, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4086': { 'ID': 7864, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4087': { 'ID': 7865, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4088': { 'ID': 7866, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4089': { 'ID': 7867, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4090': { 'ID': 7868, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4091': { 'ID': 7869, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4092': { 'ID': 7870, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4093': { 'ID': 7871, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4094': { 'ID': 7872, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4095': { 'ID': 7873, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4096': { 'ID': 7874, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4097': { 'ID': 7875, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4098': { 'ID': 7876, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4099': { 'ID': 7877, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4100': { 'ID': 7878, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4101': { 'ID': 7879, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4102': { 'ID': 7880, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4103': { 'ID': 7881, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4104': { 'ID': 7882, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4105': { 'ID': 7883, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4106': { 'ID': 7884, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4107': { 'ID': 7885, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4108': { 'ID': 7886, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4109': { 'ID': 7887, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4110': { 'ID': 7888, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4111': { 'ID': 7889, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4112': { 'ID': 7890, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4113': { 'ID': 7891, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4114': { 'ID': 7892, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4115': { 'ID': 7893, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4116': { 'ID': 7894, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4117': { 'ID': 7895, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4118': { 'ID': 7896, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4119': { 'ID': 7897, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4120': { 'ID': 7898, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4121': { 'ID': 7899, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4122': { 'ID': 7900, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4123': { 'ID': 7901, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4124': { 'ID': 7902, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4125': { 'ID': 7903, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4126': { 'ID': 7904, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4127': { 'ID': 7905, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4128': { 'ID': 7906, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4129': { 'ID': 7907, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4130': { 'ID': 7908, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4131': { 'ID': 7909, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4132': { 'ID': 7910, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4133': { 'ID': 7911, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4134': { 'ID': 7912, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4135': { 'ID': 7913, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4136': { 'ID': 7914, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4137': { 'ID': 7915, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4138': { 'ID': 7916, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4139': { 'ID': 7917, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4140': { 'ID': 7918, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4141': { 'ID': 7919, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4142': { 'ID': 7920, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4143': { 'ID': 7921, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4144': { 'ID': 7922, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4145': { 'ID': 7923, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4146': { 'ID': 7924, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4147': { 'ID': 7925, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4148': { 'ID': 7926, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4149': { 'ID': 7927, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4150': { 'ID': 7928, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4151': { 'ID': 7929, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4152': { 'ID': 7930, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4153': { 'ID': 7931, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4154': { 'ID': 7932, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4155': { 'ID': 7933, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4156': { 'ID': 7934, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4157': { 'ID': 7935, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4158': { 'ID': 7936, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4159': { 'ID': 7937, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4160': { 'ID': 7938, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4161': { 'ID': 7939, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4162': { 'ID': 7940, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4163': { 'ID': 7941, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4164': { 'ID': 7942, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4165': { 'ID': 7943, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4166': { 'ID': 7944, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4167': { 'ID': 7945, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4168': { 'ID': 7946, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4169': { 'ID': 7947, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4170': { 'ID': 7948, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4171': { 'ID': 7949, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4172': { 'ID': 7950, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4173': { 'ID': 7951, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4174': { 'ID': 7952, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4175': { 'ID': 7953, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4176': { 'ID': 7954, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4177': { 'ID': 7955, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4178': { 'ID': 7956, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4179': { 'ID': 7957, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4180': { 'ID': 7958, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4181': { 'ID': 7959, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4182': { 'ID': 7960, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4183': { 'ID': 7961, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4184': { 'ID': 7962, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4185': { 'ID': 7963, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4186': { 'ID': 7964, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4187': { 'ID': 7965, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4188': { 'ID': 7966, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4189': { 'ID': 7967, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4190': { 'ID': 7968, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4191': { 'ID': 7969, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4192': { 'ID': 7970, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4193': { 'ID': 7971, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4194': { 'ID': 7972, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4195': { 'ID': 7973, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4196': { 'ID': 7974, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4197': { 'ID': 7975, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4198': { 'ID': 7976, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4199': { 'ID': 7977, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4200': { 'ID': 7978, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4201': { 'ID': 7979, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4202': { 'ID': 7980, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4203': { 'ID': 7981, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4204': { 'ID': 7982, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4205': { 'ID': 7983, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4206': { 'ID': 7984, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4207': { 'ID': 7985, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4208': { 'ID': 7986, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4209': { 'ID': 7987, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4210': { 'ID': 7988, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4211': { 'ID': 7989, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4212': { 'ID': 7990, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4213': { 'ID': 7991, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4214': { 'ID': 7992, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4215': { 'ID': 7993, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4216': { 'ID': 7994, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4217': { 'ID': 7995, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4218': { 'ID': 7996, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4219': { 'ID': 7997, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4220': { 'ID': 7998, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr4SysWMZFLAG': { 'ID': 7999, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 32767000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 32767000, 'Name': 'WMZ4 Betriebszustand' }, + 'Nr4SysFSR': { 'ID': 8000, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 32767000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 32767000, 'Name': 'WMZ4 Fehlerstatus-Register' }, + 'Nr4VDatum': { 'ID': 8001, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ4 Lesedatum Volumen' }, + 'Nr4VZeit': { 'ID': 8002, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ4 Leseuhrzeit Volumen' }, + 'Nr4tBtre3': { 'ID': 8003, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ4 Betriebszeit x 10^3' }, + 'Nr4tBtre0': { 'ID': 8004, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ4 Betriebszeit x 10^0' }, + 'Nr4Qe4': { 'ID': 8005, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Durchfluß (10^4)' }, + 'Nr4Qe0': { 'ID': 8006, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Durchfluß (10^0)' }, + 'Nr4Qe-3': { 'ID': 8007, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Durchfluß (10^-3)' }, + 'Nr4QEinh': { 'ID': 8008, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Durchfluß, 0=m³/h, 1=l/h' }, + 'Nr4Ve4': { 'ID': 8009, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Volumen (10^4)' }, + 'Nr4Ve0': { 'ID': 8010, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Volumen (10^0)' }, + 'Nr4Ve-3': { 'ID': 8011, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Volumen (10^-3)' }, + 'Nr4VEinh': { 'ID': 8012, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Volumen, 0=m³, 1=l' }, + 'Nr4Pe4': { 'ID': 8013, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Leistung (10^4)' }, + 'Nr4Pe0': { 'ID': 8014, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Leistung (10^0)' }, + 'Nr4Pe-3': { 'ID': 8015, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Leistung (10^-3)' }, + 'Nr4PEinh': { 'ID': 8016, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Leistung, 0=kW, 1=MW' }, + 'Nr4We4': { 'ID': 8017, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Arbeit (10^4)' }, + 'Nr4We0': { 'ID': 8018, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Arbeit (10^0)' }, + 'Nr4We-3': { 'ID': 8019, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Arbeit (10^-3)' }, + 'Nr4WEinh': { 'ID': 8020, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ4 Einheit Arbeit, 0=MWh, 1=kWh, 2=GJ' }, + 'Nr4Hersteller-ID': { 'ID': 8021, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ4 Hersteller-Identifikation' }, + 'Nr4VLe0': { 'ID': 8022, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ4 Vorlauftemperatur (10^0)' }, + 'Nr4VLe-3': { 'ID': 8023, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Vorlauftemperatur (10^-3)' }, + 'Nr4VLEinh': { 'ID': 8024, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Vorlauftemperatur, 0=°C' }, + 'Nr4WMZ-Firmware': { 'ID': 8025, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Version', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65000000, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 650000, 'Name': 'WMZ4 Firmware-Version Zähler' }, + 'Nr4RLe0': { 'ID': 8026, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ4 Rücklauftemperatur (10^0)' }, + 'Nr4RLe-3': { 'ID': 8027, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Rücklauftemperatur (10^-3)' }, + 'Nr4RLEinh': { 'ID': 8028, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Rücklauftemperatur, 0=°C' }, + 'Unbekannt-4251': { 'ID': 8029, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr4SysAnsFail': { 'ID': 8030, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ4 Testregister für den internen Gebrauch' }, + 'Nr4SysZeroBack': { 'ID': 8031, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ4 Testregister für den internen Gebrauch' }, + 'Unbekannt-4254': { 'ID': 8032, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4255': { 'ID': 8033, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4256': { 'ID': 8034, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr4STagDatum': { 'ID': 8035, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ4 Lesedatum Stichtag' }, + 'Nr4STagZeit': { 'ID': 8036, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ4 Leseuhrzeit Stichtag' }, + 'Nr4WSTag1e4': { 'ID': 8037, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Arbeit Stichtag1 (10^4)' }, + 'Nr4WSTag1e0': { 'ID': 8038, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Arbeit Stichtag1 (10^0)' }, + 'Nr4WSTag1e-3': { 'ID': 8039, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Arbeit Stichtag1 (10^-3)' }, + 'Nr4WSTag1Einh': { 'ID': 8040, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ4 Einheit Arbeit Stichtag 1,0=MWh,1=kWh,2=GJ' }, + 'Nr4STag1Jahr': { 'ID': 8041, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ4 Jahr Stichtag 1' }, + 'Nr4STag1Datum': { 'ID': 8042, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ4 Datum Stichtag 1' }, + 'Nr4VSTag1e4': { 'ID': 8043, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Volumen Stichtag1 (10^4)' }, + 'Nr4VSTag1e0': { 'ID': 8044, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Volumen Stichtag1 (10^0)' }, + 'Nr4VSTag1e-3': { 'ID': 8045, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Volumen Stichtag1 (10^-3)' }, + 'Nr4VSTag1Einh': { 'ID': 8046, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Volumen Stichtag1, 0=m³, 1=l' }, + 'Nr4WSTag2e4': { 'ID': 8047, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Arbeit Stichtag2 (10^4)' }, + 'Nr4WSTag2e0': { 'ID': 8048, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Arbeit Stichtag2 (10^0)' }, + 'Nr4WSTag2e-3': { 'ID': 8049, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Arbeit Stichtag2 (10^-3)' }, + 'Nr4WSTag2Einh': { 'ID': 8050, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ4 Einheit Arbeit Stichtag 2,0=MWh,1=kWh,2=GJ' }, + 'Nr4STag2Jahr': { 'ID': 8051, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ4 Jahr Stichtag2' }, + 'Nr4STag2Datum': { 'ID': 8052, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ4 Datum Stichtag2' }, + 'Nr4VSTag2e4': { 'ID': 8053, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Volumen Stichtag2 (10^4)' }, + 'Nr4VSTag2e0': { 'ID': 8054, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Volumen Stichtag2 (10^0)' }, + 'Nr4VSTag2e-3': { 'ID': 8055, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Volumen Stichtag2 (10^-3)' }, + 'Nr4VSTag2Einh': { 'ID': 8056, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Volumen Stichtag2, 0=m³, 1=l' }, + 'Nr4WDev1e4': { 'ID': 8057, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Arbeit Device1 (10^4)' }, + 'Nr4WDev1e0': { 'ID': 8058, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Arbeit Device1 (10^0)' }, + 'Nr4WDev1e-3': { 'ID': 8059, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Arbeit Device1 (10^-3)' }, + 'Nr4WDev1Einh': { 'ID': 8060, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ4 Device1-Arbeit Einheit,0=MWh,1=kWh,2=GJ' }, + 'Nr4VDev1e4': { 'ID': 8061, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Volumen Device1 (10^4)' }, + 'Nr4VDev1e0': { 'ID': 8062, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Volumen Device1 (10^0)' }, + 'Nr4VDev1e-3': { 'ID': 8063, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Volumen Device1 (10^-3)' }, + 'Nr4VDev1Einh': { 'ID': 8064, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Volumen Device1, 0=m³, 1=l' }, + 'Nr4WDev2e4': { 'ID': 8065, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Arbeit Device2 (10^4)' }, + 'Nr4WDev2e0': { 'ID': 8066, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Arbeit Device2 (10^0)' }, + 'Nr4WDev2e-3': { 'ID': 8067, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Arbeit Device2 (10^-3)' }, + 'Nr4WDev2Einh': { 'ID': 8068, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ4 Einheit Arbeit Device2,0=MWh,1=kWh,2=GJ' }, + 'Nr4VDev2e4': { 'ID': 8069, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Volumen Device2 (10^4)' }, + 'Nr4VDev2e0': { 'ID': 8070, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Volumen Device2 (10^0)' }, + 'Nr4VDev2e-3': { 'ID': 8071, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Volumen Device2 (10^-3)' }, + 'Nr4VDev2Einh': { 'ID': 8072, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Volumen Device2, 0=m³, 1=l' }, + 'Nr4WTa1e4': { 'ID': 8073, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Arbeit Tarif1 (10^4)' }, + 'Nr4WTa1e0': { 'ID': 8074, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Arbeit Tarif1 (10^0)' }, + 'Nr4WTa1e-3': { 'ID': 8075, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Arbeit Tarif1 (10^-3)' }, + 'Nr4WTa1Einh': { 'ID': 8076, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ4 Einheit Arbeit Tarif1,0=MWh,1=kWh,2=GJ' }, + 'Nr4VTa1e4': { 'ID': 8077, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Volumen Tarif1 (10^4)' }, + 'Nr4VTa1e0': { 'ID': 8078, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Volumen Tarif1 (10^0)' }, + 'Nr4VTa1e-3': { 'ID': 8079, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Volumen Tarif1 (10^-3)' }, + 'Nr4VTa1Einh': { 'ID': 8080, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Volumen Tarif1, 0=m³, 1=l' }, + 'Nr4WTa2e4': { 'ID': 8081, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Arbeit Tarif2 (10^4)' }, + 'Nr4WTa2e0': { 'ID': 8082, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Arbeit Tarif2 (10^0)' }, + 'Nr4WTa2e-3': { 'ID': 8083, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Arbeit Tarif2 (10^-3)' }, + 'Nr4WTa2Einh': { 'ID': 8084, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ4 Einheit Arbeit Tarif2,0=MWh,1=kWh,2=GJ' }, + 'Nr4VTa2e4': { 'ID': 8085, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Volumen Tarif2 (10^4)' }, + 'Nr4VTa2e0': { 'ID': 8086, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Volumen Tarif2 (10^0)' }, + 'Nr4VTa2e-3': { 'ID': 8087, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Volumen Tarif2 (10^-3)' }, + 'Nr4VTa2Einh': { 'ID': 8088, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Volumen Tarif2, 0=m³, 1=l' }, + 'Nr4SysIDHB': { 'ID': 8089, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Identnummer obere 4 Stellen' }, + 'Nr4SysIDLB': { 'ID': 8090, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Identnummer untere 4 Stellen' }, + 'Nr4Dev1HCAe7': { 'ID': 8091, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ4 Device 1 Zählen ohne Einheit (10^7)' }, + 'Nr4Dev1HCAe4': { 'ID': 8092, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Device 1 Zählen ohne Einheit (10^4)' }, + 'Nr4Dev1HCAe0': { 'ID': 8093, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Device 1 Zählen ohne Einheit (10^0)' }, + 'Nr4Dev2HCAe7': { 'ID': 8094, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ4 Device 2 Zählen ohne Einheit (10^7)' }, + 'Nr4Dev2HCAe4': { 'ID': 8095, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Device 2 Zählen ohne Einheit (10^4)' }, + 'Nr4Dev2HCAe0': { 'ID': 8096, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Device 2 Zählen ohne Einheit (10^0)' }, + 'Nr4Dev3HCAe7': { 'ID': 8097, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ4 Device 3 Zählen ohne Einheit (10^7)' }, + 'Nr4Dev3HCAe4': { 'ID': 8098, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Device 3 Zählen ohne Einheit (10^4)' }, + 'Nr4Dev3HCAe0': { 'ID': 8099, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Device 3 Zählen ohne Einheit (10^0)' }, + 'Nr4QDev1Nr5e4': { 'ID': 8100, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Qmax Dev1 Speichernr5 10^4' }, + 'Nr4QDev1Nr5e0': { 'ID': 8101, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Qmax Dev1 Speichernr5 10^0' }, + 'Nr4QDev1Nr5e-3': { 'ID': 8102, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Qmax Dev1 Speichernr5 10^-3' }, + 'Nr4QDev1Nr5Einh': { 'ID': 8103, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit QmaxDev1Spnr5,0=m³/h,1=l/h' }, + 'Nr4Dev1Nr5Jahr': { 'ID': 8104, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ4 Jahr für Dev1maxStorNr5' }, + 'Nr4Dev1Nr5Datum': { 'ID': 8105, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ4 Datum für Dev1maxStorNr5' }, + 'Nr4Dev1Nr5Zeit': { 'ID': 8106, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ4 Uhrzeit für Dev1maxStorNr5' }, + 'Nr4PDev1Nr1e4': { 'ID': 8107, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Pmax für Dev1StorNr1 (10^4)' }, + 'Nr4PDev1Nr1e0': { 'ID': 8108, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Pmax für Dev1StorNr1 (10^0)' }, + 'Nr4PDev1Nr1e-3': { 'ID': 8109, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Pmax für Dev1StorNr1 (10^-3)' }, + 'Nr4PDev1Nr1Einh': { 'ID': 8110, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit PmaxDev1StorNr1, 0=kW, 1=MW' }, + 'Nr4Dev1Nr1Jahr': { 'ID': 8111, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ4 Jahr für Dev1maxStorNr1' }, + 'Nr4Dev1Nr1Datum': { 'ID': 8112, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ4 Datum für Dev1maxStorNr1' }, + 'Nr4Dev1Nr1Zeit': { 'ID': 8113, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ4 Uhrzeit für Dev1maxStorNr1' }, + 'Nr4Pmaxe4': { 'ID': 8114, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Leistung max (10^4)' }, + 'Nr4Pmaxe0': { 'ID': 8115, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Leistung max (10^0)' }, + 'Nr4Pmaxe-3': { 'ID': 8116, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Leistung max (10^-3)' }, + 'Nr4PmaxEinh': { 'ID': 8117, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Leistung max, 0=kW, 1=MW' }, + 'Nr4Qmaxe4': { 'ID': 8118, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Durchfluß max (10^4)' }, + 'Nr4Qmaxe0': { 'ID': 8119, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Durchfluß max (10^0)' }, + 'Nr4Qmaxe-3': { 'ID': 8120, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Durchfluß max (10^-3)' }, + 'Nr4QmaxEinh': { 'ID': 8121, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Durchfluß max,0=m³/h,1=l/h' }, + 'Unbekannt-4344': { 'ID': 8122, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr4VLmaxe0': { 'ID': 8123, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ4 Vorlauftemperatur max (10^0)' }, + 'Nr4VLmaxe-3': { 'ID': 8124, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Vorlauftemperatur max (10^-3)' }, + 'Nr4VLmaxEinh': { 'ID': 8125, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Vorlauftemperatur max, 0=°C' }, + 'Unbekannt-4348': { 'ID': 8126, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr4RLmaxe0': { 'ID': 8127, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ4 Rücklauftemperatur max (10^0)' }, + 'Nr4RLmaxe-3': { 'ID': 8128, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Rücklauftemperatur max (10^-3)' }, + 'Nr4RLmaxEinh': { 'ID': 8129, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Rücklauftemperatur max, 0=°C' }, + 'Nr4SysSlaveadr': { 'ID': 8130, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 255000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 255000, 'Name': 'WMZ4 echte WMZ-Adresse nach Zählerantwort' }, + 'Nr4DeltaTe0': { 'ID': 8131, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ4 Differenz (Vorlauf-Rücklauf) (10^0)' }, + 'Nr4DeltaTe-3': { 'ID': 8132, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Differenz (Vorlauf-Rücklauf) (10^-3)' }, + 'Nr4VTa3e4': { 'ID': 8133, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Volumen Tarif3 (10^4)' }, + 'Nr4VTa3e0': { 'ID': 8134, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Volumen Tarif3 (10^0)' }, + 'Nr4VTa3e-3': { 'ID': 8135, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Volumen Tarif3 (10^-3)' }, + 'Nr4VTa3Einh': { 'ID': 8136, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Volumen Tarif3, 0=m³, 1=l' }, + 'Nr4PTa1Nr24e4': { 'ID': 8137, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 P Tarif1StorNr24 (10^4)' }, + 'Nr4PTa1Nr24e0': { 'ID': 8138, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 P Tarif1StorNr24 (10^0)' }, + 'Nr4PTa1Nr24e-3': { 'ID': 8139, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 P Tarif1StorNr24 (10^-3)' }, + 'Nr4PTa1Nr24Einh': { 'ID': 8140, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit PTarif1StorNr24, 0=kW, 1=MW' }, + 'Nr4QTa1Nr24e4': { 'ID': 8141, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Q Tarif1StorNr24 (10^4)' }, + 'Nr4QTa1Nr24e0': { 'ID': 8142, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Q Tarif1StorNr24 (10^0)' }, + 'Nr4QTa1Nr24e-3': { 'ID': 8143, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Q Tarif1StorNr24 (10^-3)' }, + 'Nr4QTa1Nr24Einh': { 'ID': 8144, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 EinheitQTarif1StorNr24,0=m³/h,1=l/h' }, + 'Nr4tErrore3': { 'ID': 8145, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Zeit während Fehler (10^3)' }, + 'Nr4tErrore0': { 'ID': 8146, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Zeit während Fehler (10^0)' }, + 'Nr4tInfoe3': { 'ID': 8147, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Info (10^3)' }, + 'Nr4tInfoe0': { 'ID': 8148, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Info (10^0)' }, + 'Unbekannt-4371': { 'ID': 8149, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4372': { 'ID': 8150, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4373': { 'ID': 8151, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4374': { 'ID': 8152, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4375': { 'ID': 8153, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4376': { 'ID': 8154, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4377': { 'ID': 8155, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4378': { 'ID': 8156, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4379': { 'ID': 8157, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4380': { 'ID': 8158, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4381': { 'ID': 8159, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4382': { 'ID': 8160, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4383': { 'ID': 8161, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4384': { 'ID': 8162, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4385': { 'ID': 8163, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4386': { 'ID': 8164, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4387': { 'ID': 8165, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4388': { 'ID': 8166, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4389': { 'ID': 8167, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4390': { 'ID': 8168, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4391': { 'ID': 8169, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4392': { 'ID': 8170, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4393': { 'ID': 8171, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4394': { 'ID': 8172, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4395': { 'ID': 8173, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4396': { 'ID': 8174, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4397': { 'ID': 8175, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4398': { 'ID': 8176, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4399': { 'ID': 8177, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4400': { 'ID': 8178, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4401': { 'ID': 8179, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4402': { 'ID': 8180, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4403': { 'ID': 8181, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4404': { 'ID': 8182, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4405': { 'ID': 8183, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4406': { 'ID': 8184, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4407': { 'ID': 8185, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4408': { 'ID': 8186, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4409': { 'ID': 8187, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4410': { 'ID': 8188, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4411': { 'ID': 8189, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4412': { 'ID': 8190, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4413': { 'ID': 8191, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4414': { 'ID': 8192, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4415': { 'ID': 8193, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4416': { 'ID': 8194, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4417': { 'ID': 8195, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4418': { 'ID': 8196, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4419': { 'ID': 8197, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4420': { 'ID': 8198, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4421': { 'ID': 8199, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4422': { 'ID': 8200, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4423': { 'ID': 8201, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4424': { 'ID': 8202, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4425': { 'ID': 8203, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4426': { 'ID': 8204, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4427': { 'ID': 8205, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4428': { 'ID': 8206, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4429': { 'ID': 8207, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4430': { 'ID': 8208, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4431': { 'ID': 8209, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4432': { 'ID': 8210, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4433': { 'ID': 8211, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4434': { 'ID': 8212, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4435': { 'ID': 8213, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4436': { 'ID': 8214, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4437': { 'ID': 8215, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4438': { 'ID': 8216, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4439': { 'ID': 8217, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4440': { 'ID': 8218, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4441': { 'ID': 8219, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4442': { 'ID': 8220, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4443': { 'ID': 8221, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4444': { 'ID': 8222, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4445': { 'ID': 8223, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4446': { 'ID': 8224, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4447': { 'ID': 8225, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4448': { 'ID': 8226, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4449': { 'ID': 8227, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4450': { 'ID': 8228, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4451': { 'ID': 8229, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4452': { 'ID': 8230, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4453': { 'ID': 8231, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4454': { 'ID': 8232, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4455': { 'ID': 8233, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4456': { 'ID': 8234, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4457': { 'ID': 8235, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4458': { 'ID': 8236, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4459': { 'ID': 8237, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4460': { 'ID': 8238, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4461': { 'ID': 8239, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4462': { 'ID': 8240, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4463': { 'ID': 8241, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4464': { 'ID': 8242, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4465': { 'ID': 8243, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4466': { 'ID': 8244, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4467': { 'ID': 8245, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4468': { 'ID': 8246, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4469': { 'ID': 8247, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4470': { 'ID': 8248, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4471': { 'ID': 8249, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4472': { 'ID': 8250, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4473': { 'ID': 8251, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4474': { 'ID': 8252, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4475': { 'ID': 8253, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4476': { 'ID': 8254, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4477': { 'ID': 8255, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4478': { 'ID': 8256, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4479': { 'ID': 8257, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4480': { 'ID': 8258, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4481': { 'ID': 8259, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4482': { 'ID': 8260, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4483': { 'ID': 8261, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4484': { 'ID': 8262, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4485': { 'ID': 8263, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4486': { 'ID': 8264, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4487': { 'ID': 8265, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4488': { 'ID': 8266, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4489': { 'ID': 8267, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4490': { 'ID': 8268, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4491': { 'ID': 8269, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4492': { 'ID': 8270, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4493': { 'ID': 8271, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4494': { 'ID': 8272, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4495': { 'ID': 8273, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4496': { 'ID': 8274, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4497': { 'ID': 8275, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4498': { 'ID': 8276, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4499': { 'ID': 8277, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4500': { 'ID': 8278, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4501': { 'ID': 8279, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4502': { 'ID': 8280, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4503': { 'ID': 8281, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4504': { 'ID': 8282, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4505': { 'ID': 8283, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4506': { 'ID': 8284, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4507': { 'ID': 8285, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4508': { 'ID': 8286, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4509': { 'ID': 8287, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4510': { 'ID': 8288, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4511': { 'ID': 8289, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4512': { 'ID': 8290, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4513': { 'ID': 8291, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4514': { 'ID': 8292, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4515': { 'ID': 8293, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4516': { 'ID': 8294, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4517': { 'ID': 8295, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4518': { 'ID': 8296, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4519': { 'ID': 8297, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4520': { 'ID': 8298, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4521': { 'ID': 8299, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4522': { 'ID': 8300, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4523': { 'ID': 8301, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4524': { 'ID': 8302, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4525': { 'ID': 8303, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4526': { 'ID': 8304, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4527': { 'ID': 8305, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4528': { 'ID': 8306, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4529': { 'ID': 8307, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4530': { 'ID': 8308, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4531': { 'ID': 8309, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4532': { 'ID': 8310, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4533': { 'ID': 8311, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4534': { 'ID': 8312, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4535': { 'ID': 8313, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4536': { 'ID': 8314, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4537': { 'ID': 8315, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4538': { 'ID': 8316, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4539': { 'ID': 8317, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4540': { 'ID': 8318, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4541': { 'ID': 8319, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4542': { 'ID': 8320, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4543': { 'ID': 8321, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4544': { 'ID': 8322, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4545': { 'ID': 8323, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4546': { 'ID': 8324, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4547': { 'ID': 8325, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4548': { 'ID': 8326, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4549': { 'ID': 8327, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4550': { 'ID': 8328, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4551': { 'ID': 8329, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4552': { 'ID': 8330, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4553': { 'ID': 8331, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4554': { 'ID': 8332, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4555': { 'ID': 8333, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4556': { 'ID': 8334, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4557': { 'ID': 8335, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4558': { 'ID': 8336, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4559': { 'ID': 8337, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4560': { 'ID': 8338, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4561': { 'ID': 8339, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4562': { 'ID': 8340, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4563': { 'ID': 8341, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4564': { 'ID': 8342, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4565': { 'ID': 8343, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4566': { 'ID': 8344, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4567': { 'ID': 8345, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4568': { 'ID': 8346, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4569': { 'ID': 8347, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4570': { 'ID': 8348, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4571': { 'ID': 8349, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4572': { 'ID': 8350, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4573': { 'ID': 8351, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4574': { 'ID': 8352, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4575': { 'ID': 8353, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4576': { 'ID': 8354, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4577': { 'ID': 8355, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4578': { 'ID': 8356, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4579': { 'ID': 8357, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4580': { 'ID': 8358, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4581': { 'ID': 8359, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4582': { 'ID': 8360, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4583': { 'ID': 8361, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4584': { 'ID': 8362, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4585': { 'ID': 8363, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4586': { 'ID': 8364, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4587': { 'ID': 8365, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4588': { 'ID': 8366, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4589': { 'ID': 8367, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4590': { 'ID': 8368, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4591': { 'ID': 8369, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4592': { 'ID': 8370, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4593': { 'ID': 8371, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4594': { 'ID': 8372, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4595': { 'ID': 8373, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4596': { 'ID': 8374, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4597': { 'ID': 8375, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4598': { 'ID': 8376, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4599': { 'ID': 8377, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4600': { 'ID': 8378, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4601': { 'ID': 8379, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4602': { 'ID': 8380, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4603': { 'ID': 8381, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4604': { 'ID': 8382, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4605': { 'ID': 8383, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4606': { 'ID': 8384, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4607': { 'ID': 8385, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4608': { 'ID': 8386, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4609': { 'ID': 8387, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4610': { 'ID': 8388, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4611': { 'ID': 8389, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4612': { 'ID': 8390, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4613': { 'ID': 8391, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4614': { 'ID': 8392, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4615': { 'ID': 8393, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4616': { 'ID': 8394, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4617': { 'ID': 8395, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4618': { 'ID': 8396, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4619': { 'ID': 8397, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4620': { 'ID': 8398, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4621': { 'ID': 8399, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4622': { 'ID': 8400, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4623': { 'ID': 8401, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4624': { 'ID': 8402, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4625': { 'ID': 8403, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4626': { 'ID': 8404, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4627': { 'ID': 8405, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4628': { 'ID': 8406, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4629': { 'ID': 8407, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4630': { 'ID': 8408, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4631': { 'ID': 8409, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4632': { 'ID': 8410, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4633': { 'ID': 8411, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4634': { 'ID': 8412, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4635': { 'ID': 8413, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4636': { 'ID': 8414, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4637': { 'ID': 8415, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4638': { 'ID': 8416, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4639': { 'ID': 8417, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4640': { 'ID': 8418, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4641': { 'ID': 8419, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4642': { 'ID': 8420, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4643': { 'ID': 8421, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4644': { 'ID': 8422, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4645': { 'ID': 8423, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4646': { 'ID': 8424, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4647': { 'ID': 8425, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4648': { 'ID': 8426, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4649': { 'ID': 8427, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4650': { 'ID': 8428, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4651': { 'ID': 8429, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4652': { 'ID': 8430, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4653': { 'ID': 8431, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4654': { 'ID': 8432, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4655': { 'ID': 8433, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4656': { 'ID': 8434, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4657': { 'ID': 8435, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4658': { 'ID': 8436, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4659': { 'ID': 8437, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4660': { 'ID': 8438, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4661': { 'ID': 8439, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4662': { 'ID': 8440, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4663': { 'ID': 8441, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4664': { 'ID': 8442, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4665': { 'ID': 8443, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4666': { 'ID': 8444, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4667': { 'ID': 8445, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4668': { 'ID': 8446, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4669': { 'ID': 8447, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4670': { 'ID': 8448, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4671': { 'ID': 8449, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4672': { 'ID': 8450, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4673': { 'ID': 8451, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4674': { 'ID': 8452, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4675': { 'ID': 8453, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4676': { 'ID': 8454, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4677': { 'ID': 8455, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4678': { 'ID': 8456, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4679': { 'ID': 8457, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4680': { 'ID': 8458, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4681': { 'ID': 8459, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4682': { 'ID': 8460, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4683': { 'ID': 8461, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4684': { 'ID': 8462, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4685': { 'ID': 8463, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4686': { 'ID': 8464, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4687': { 'ID': 8465, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4688': { 'ID': 8466, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4689': { 'ID': 8467, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4690': { 'ID': 8468, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4691': { 'ID': 8469, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4692': { 'ID': 8470, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4693': { 'ID': 8471, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4694': { 'ID': 8472, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4695': { 'ID': 8473, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4696': { 'ID': 8474, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4697': { 'ID': 8475, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4698': { 'ID': 8476, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4699': { 'ID': 8477, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4700': { 'ID': 8478, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4701': { 'ID': 8479, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4702': { 'ID': 8480, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4703': { 'ID': 8481, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4704': { 'ID': 8482, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4705': { 'ID': 8483, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4706': { 'ID': 8484, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4707': { 'ID': 8485, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4708': { 'ID': 8486, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4709': { 'ID': 8487, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4710': { 'ID': 8488, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4711': { 'ID': 8489, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4712': { 'ID': 8490, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4713': { 'ID': 8491, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4714': { 'ID': 8492, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4715': { 'ID': 8493, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4716': { 'ID': 8494, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4717': { 'ID': 8495, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4718': { 'ID': 8496, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4719': { 'ID': 8497, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4720': { 'ID': 8498, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr5SysWMZFLAG': { 'ID': 8499, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 32767000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 32767000, 'Name': 'WMZ5 Betriebszustand' }, + 'Nr5SysFSR': { 'ID': 8500, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 32767000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 32767000, 'Name': 'WMZ5 Fehlerstatus-Register' }, + 'Nr5VDatum': { 'ID': 8501, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ5 Lesedatum Volumen' }, + 'Nr5VZeit': { 'ID': 8502, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ5 Leseuhrzeit Volumen' }, + 'Nr5tBtre3': { 'ID': 8503, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ5 Betriebszeit x 10^3' }, + 'Nr5tBtre0': { 'ID': 8504, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ5 Betriebszeit x 10^0' }, + 'Nr5Qe4': { 'ID': 8505, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Durchfluß (10^4)' }, + 'Nr5Qe0': { 'ID': 8506, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Durchfluß (10^0)' }, + 'Nr5Qe-3': { 'ID': 8507, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Durchfluß (10^-3)' }, + 'Nr5QEinh': { 'ID': 8508, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Durchfluß, 0=m³/h, 1=l/h' }, + 'Nr5Ve4': { 'ID': 8509, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Volumen (10^4)' }, + 'Nr5Ve0': { 'ID': 8510, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Volumen (10^0)' }, + 'Nr5Ve-3': { 'ID': 8511, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Volumen (10^-3)' }, + 'Nr5VEinh': { 'ID': 8512, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Volumen, 0=m³, 1=l' }, + 'Nr5Pe4': { 'ID': 8513, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Leistung (10^4)' }, + 'Nr5Pe0': { 'ID': 8514, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Leistung (10^0)' }, + 'Nr5Pe-3': { 'ID': 8515, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Leistung (10^-3)' }, + 'Nr5PEinh': { 'ID': 8516, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Leistung, 0=kW, 1=MW' }, + 'Nr5We4': { 'ID': 8517, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Arbeit (10^4)' }, + 'Nr5We0': { 'ID': 8518, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Arbeit (10^0)' }, + 'Nr5We-3': { 'ID': 8519, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Arbeit (10^-3)' }, + 'Nr5WEinh': { 'ID': 8520, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ5 Einheit Arbeit, 0=MWh, 1=kWh, 2=GJ' }, + 'Nr5Hersteller-ID': { 'ID': 8521, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ5 Hersteller-Identifikation' }, + 'Nr5VLe0': { 'ID': 8522, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ5 Vorlauftemperatur (10^0)' }, + 'Nr5VLe-3': { 'ID': 8523, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Vorlauftemperatur (10^-3)' }, + 'Nr5VLEinh': { 'ID': 8524, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Vorlauftemperatur, 0=°C' }, + 'Nr5WMZ-Firmware': { 'ID': 8525, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Version', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65000000, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 650000, 'Name': 'WMZ5 Firmware-Version Zähler' }, + 'Nr5RLe0': { 'ID': 8526, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ5 Rücklauftemperatur (10^0)' }, + 'Nr5RLe-3': { 'ID': 8527, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Rücklauftemperatur (10^-3)' }, + 'Nr5RLEinh': { 'ID': 8528, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Rücklauftemperatur, 0=°C' }, + 'Unbekannt-4751': { 'ID': 8529, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr5SysAnsFail': { 'ID': 8530, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ5 Testregister für den internen Gebrauch' }, + 'Nr5SysZeroBack': { 'ID': 8531, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ5 Testregister für den internen Gebrauch' }, + 'Unbekannt-4754': { 'ID': 8532, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4755': { 'ID': 8533, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4756': { 'ID': 8534, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr5STagDatum': { 'ID': 8535, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ5 Lesedatum Stichtag' }, + 'Nr5STagZeit': { 'ID': 8536, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ5 Leseuhrzeit Stichtag' }, + 'Nr5WSTag1e4': { 'ID': 8537, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Arbeit Stichtag1 (10^4)' }, + 'Nr5WSTag1e0': { 'ID': 8538, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Arbeit Stichtag1 (10^0)' }, + 'Nr5WSTag1e-3': { 'ID': 8539, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Arbeit Stichtag1 (10^-3)' }, + 'Nr5WSTag1Einh': { 'ID': 8540, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ5 Einheit Arbeit Stichtag 1,0=MWh,1=kWh,2=GJ' }, + 'Nr5STag1Jahr': { 'ID': 8541, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ5 Jahr Stichtag 1' }, + 'Nr5STag1Datum': { 'ID': 8542, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ5 Datum Stichtag 1' }, + 'Nr5VSTag1e4': { 'ID': 8543, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Volumen Stichtag1 (10^4)' }, + 'Nr5VSTag1e0': { 'ID': 8544, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Volumen Stichtag1 (10^0)' }, + 'Nr5VSTag1e-3': { 'ID': 8545, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Volumen Stichtag1 (10^-3)' }, + 'Nr5VSTag1Einh': { 'ID': 8546, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Volumen Stichtag1, 0=m³, 1=l' }, + 'Nr5WSTag2e4': { 'ID': 8547, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Arbeit Stichtag2 (10^4)' }, + 'Nr5WSTag2e0': { 'ID': 8548, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Arbeit Stichtag2 (10^0)' }, + 'Nr5WSTag2e-3': { 'ID': 8549, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Arbeit Stichtag2 (10^-3)' }, + 'Nr5WSTag2Einh': { 'ID': 8550, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ5 Einheit Arbeit Stichtag 2,0=MWh,1=kWh,2=GJ' }, + 'Nr5STag2Jahr': { 'ID': 8551, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ5 Jahr Stichtag2' }, + 'Nr5STag2Datum': { 'ID': 8552, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ5 Datum Stichtag2' }, + 'Nr5VSTag2e4': { 'ID': 8553, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Volumen Stichtag2 (10^4)' }, + 'Nr5VSTag2e0': { 'ID': 8554, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Volumen Stichtag2 (10^0)' }, + 'Nr5VSTag2e-3': { 'ID': 8555, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Volumen Stichtag2 (10^-3)' }, + 'Nr5VSTag2Einh': { 'ID': 8556, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Volumen Stichtag2, 0=m³, 1=l' }, + 'Nr5WDev1e4': { 'ID': 8557, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Arbeit Device1 (10^4)' }, + 'Nr5WDev1e0': { 'ID': 8558, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Arbeit Device1 (10^0)' }, + 'Nr5WDev1e-3': { 'ID': 8559, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Arbeit Device1 (10^-3)' }, + 'Nr5WDev1Einh': { 'ID': 8560, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ5 Device1-Arbeit Einheit,0=MWh,1=kWh,2=GJ' }, + 'Nr5VDev1e4': { 'ID': 8561, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Volumen Device1 (10^4)' }, + 'Nr5VDev1e0': { 'ID': 8562, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Volumen Device1 (10^0)' }, + 'Nr5VDev1e-3': { 'ID': 8563, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Volumen Device1 (10^-3)' }, + 'Nr5VDev1Einh': { 'ID': 8564, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Volumen Device1, 0=m³, 1=l' }, + 'Nr5WDev2e4': { 'ID': 8565, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Arbeit Device2 (10^4)' }, + 'Nr5WDev2e0': { 'ID': 8566, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Arbeit Device2 (10^0)' }, + 'Nr5WDev2e-3': { 'ID': 8567, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Arbeit Device2 (10^-3)' }, + 'Nr5WDev2Einh': { 'ID': 8568, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ5 Einheit Arbeit Device2,0=MWh,1=kWh,2=GJ' }, + 'Nr5VDev2e4': { 'ID': 8569, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Volumen Device2 (10^4)' }, + 'Nr5VDev2e0': { 'ID': 8570, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Volumen Device2 (10^0)' }, + 'Nr5VDev2e-3': { 'ID': 8571, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Volumen Device2 (10^-3)' }, + 'Nr5VDev2Einh': { 'ID': 8572, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Volumen Device2, 0=m³, 1=l' }, + 'Nr5WTa1e4': { 'ID': 8573, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Arbeit Tarif1 (10^4)' }, + 'Nr5WTa1e0': { 'ID': 8574, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Arbeit Tarif1 (10^0)' }, + 'Nr5WTa1e-3': { 'ID': 8575, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Arbeit Tarif1 (10^-3)' }, + 'Nr5WTa1Einh': { 'ID': 8576, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ5 Einheit Arbeit Tarif1,0=MWh,1=kWh,2=GJ' }, + 'Nr5VTa1e4': { 'ID': 8577, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Volumen Tarif1 (10^4)' }, + 'Nr5VTa1e0': { 'ID': 8578, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Volumen Tarif1 (10^0)' }, + 'Nr5VTa1e-3': { 'ID': 8579, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Volumen Tarif1 (10^-3)' }, + 'Nr5VTa1Einh': { 'ID': 8580, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Volumen Tarif1, 0=m³, 1=l' }, + 'Nr5WTa2e4': { 'ID': 8581, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Arbeit Tarif2 (10^4)' }, + 'Nr5WTa2e0': { 'ID': 8582, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Arbeit Tarif2 (10^0)' }, + 'Nr5WTa2e-3': { 'ID': 8583, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Arbeit Tarif2 (10^-3)' }, + 'Nr5WTa2Einh': { 'ID': 8584, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ5 Einheit Arbeit Tarif2,0=MWh,1=kWh,2=GJ' }, + 'Nr5VTa2e4': { 'ID': 8585, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Volumen Tarif2 (10^4)' }, + 'Nr5VTa2e0': { 'ID': 8586, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Volumen Tarif2 (10^0)' }, + 'Nr5VTa2e-3': { 'ID': 8587, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Volumen Tarif2 (10^-3)' }, + 'Nr5VTa2Einh': { 'ID': 8588, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Volumen Tarif2, 0=m³, 1=l' }, + 'Nr5SysIDHB': { 'ID': 8589, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Identnummer obere 4 Stellen' }, + 'Nr5SysIDLB': { 'ID': 8590, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Identnummer untere 4 Stellen' }, + 'Nr5Dev1HCAe7': { 'ID': 8591, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ5 Device 1 Zählen ohne Einheit (10^7)' }, + 'Nr5Dev1HCAe4': { 'ID': 8592, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Device 1 Zählen ohne Einheit (10^4)' }, + 'Nr5Dev1HCAe0': { 'ID': 8593, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Device 1 Zählen ohne Einheit (10^0)' }, + 'Nr5Dev2HCAe7': { 'ID': 8594, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ5 Device 2 Zählen ohne Einheit (10^7)' }, + 'Nr5Dev2HCAe4': { 'ID': 8595, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Device 2 Zählen ohne Einheit (10^4)' }, + 'Nr5Dev2HCAe0': { 'ID': 8596, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Device 2 Zählen ohne Einheit (10^0)' }, + 'Nr5Dev3HCAe7': { 'ID': 8597, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ5 Device 3 Zählen ohne Einheit (10^7)' }, + 'Nr5Dev3HCAe4': { 'ID': 8598, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Device 3 Zählen ohne Einheit (10^4)' }, + 'Nr5Dev3HCAe0': { 'ID': 8599, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Device 3 Zählen ohne Einheit (10^0)' }, + 'Nr5QDev1Nr5e4': { 'ID': 8600, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Qmax Dev1 Speichernr5 10^4' }, + 'Nr5QDev1Nr5e0': { 'ID': 8601, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Qmax Dev1 Speichernr5 10^0' }, + 'Nr5QDev1Nr5e-3': { 'ID': 8602, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Qmax Dev1 Speichernr5 10^-3' }, + 'Nr5QDev1Nr5Einh': { 'ID': 8603, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit QmaxDev1Spnr5,0=m³/h,1=l/h' }, + 'Nr5Dev1Nr5Jahr': { 'ID': 8604, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ5 Jahr für Dev1maxStorNr5' }, + 'Nr5Dev1Nr5Datum': { 'ID': 8605, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ5 Datum für Dev1maxStorNr5' }, + 'Nr5Dev1Nr5Zeit': { 'ID': 8606, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ5 Uhrzeit für Dev1maxStorNr5' }, + 'Nr5PDev1Nr1e4': { 'ID': 8607, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Pmax für Dev1StorNr1 (10^4)' }, + 'Nr5PDev1Nr1e0': { 'ID': 8608, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Pmax für Dev1StorNr1 (10^0)' }, + 'Nr5PDev1Nr1e-3': { 'ID': 8609, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Pmax für Dev1StorNr1 (10^-3)' }, + 'Nr5PDev1Nr1Einh': { 'ID': 8610, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit PmaxDev1StorNr1, 0=kW, 1=MW' }, + 'Nr5Dev1Nr1Jahr': { 'ID': 8611, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ5 Jahr für Dev1maxStorNr1' }, + 'Nr5Dev1Nr1Datum': { 'ID': 8612, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ5 Datum für Dev1maxStorNr1' }, + 'Nr5Dev1Nr1Zeit': { 'ID': 8613, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ5 Uhrzeit für Dev1maxStorNr1' }, + 'Nr5Pmaxe4': { 'ID': 8614, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Leistung max (10^4)' }, + 'Nr5Pmaxe0': { 'ID': 8615, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Leistung max (10^0)' }, + 'Nr5Pmaxe-3': { 'ID': 8616, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Leistung max (10^-3)' }, + 'Nr5PmaxEinh': { 'ID': 8617, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Leistung max, 0=kW, 1=MW' }, + 'Nr5Qmaxe4': { 'ID': 8618, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Durchfluß max (10^4)' }, + 'Nr5Qmaxe0': { 'ID': 8619, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Durchfluß max (10^0)' }, + 'Nr5Qmaxe-3': { 'ID': 8620, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Durchfluß max (10^-3)' }, + 'Nr5QmaxEinh': { 'ID': 8621, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Durchfluß max,0=m³/h,1=l/h' }, + 'Unbekannt-4844': { 'ID': 8622, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr5VLmaxe0': { 'ID': 8623, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ5 Vorlauftemperatur max (10^0)' }, + 'Nr5VLmaxe-3': { 'ID': 8624, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Vorlauftemperatur max (10^-3)' }, + 'Nr5VLmaxEinh': { 'ID': 8625, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Vorlauftemperatur max, 0=°C' }, + 'Unbekannt-4848': { 'ID': 8626, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr5RLmaxe0': { 'ID': 8627, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ5 Rücklauftemperatur max (10^0)' }, + 'Nr5RLmaxe-3': { 'ID': 8628, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Rücklauftemperatur max (10^-3)' }, + 'Nr5RLmaxEinh': { 'ID': 8629, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Rücklauftemperatur max, 0=°C' }, + 'Nr5SysSlaveadr': { 'ID': 8630, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 255000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 255000, 'Name': 'WMZ5 echte WMZ-Adresse nach Zählerantwort' }, + 'Nr5DeltaTe0': { 'ID': 8631, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ5 Differenz (Vorlauf-Rücklauf) (10^0)' }, + 'Nr5DeltaTe-3': { 'ID': 8632, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Differenz (Vorlauf-Rücklauf) (10^-3)' }, + 'Nr5VTa3e4': { 'ID': 8633, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Volumen Tarif3 (10^4)' }, + 'Nr5VTa3e0': { 'ID': 8634, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Volumen Tarif3 (10^0)' }, + 'Nr5VTa3e-3': { 'ID': 8635, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Volumen Tarif3 (10^-3)' }, + 'Nr5VTa3Einh': { 'ID': 8636, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Volumen Tarif3, 0=m³, 1=l' }, + 'Nr5PTa1Nr24e4': { 'ID': 8637, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 P Tarif1StorNr24 (10^4)' }, + 'Nr5PTa1Nr24e0': { 'ID': 8638, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 P Tarif1StorNr24 (10^0)' }, + 'Nr5PTa1Nr24e-3': { 'ID': 8639, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 P Tarif1StorNr24 (10^-3)' }, + 'Nr5PTa1Nr24Einh': { 'ID': 8640, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit PTarif1StorNr24, 0=kW, 1=MW' }, + 'Nr5QTa1Nr24e4': { 'ID': 8641, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Q Tarif1StorNr24 (10^4)' }, + 'Nr5QTa1Nr24e0': { 'ID': 8642, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Q Tarif1StorNr24 (10^0)' }, + 'Nr5QTa1Nr24e-3': { 'ID': 8643, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Q Tarif1StorNr24 (10^-3)' }, + 'Nr5QTa1Nr24Einh': { 'ID': 8644, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 EinheitQTarif1StorNr24,0=m³/h,1=l/h' }, + 'Nr5tErrore3': { 'ID': 8645, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Zeit während Fehler (10^3)' }, + 'Nr5tErrore0': { 'ID': 8646, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Zeit während Fehler (10^0)' }, + 'Nr5tInfoe3': { 'ID': 8647, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Info (10^3)' }, + 'Nr5tInfoe0': { 'ID': 8648, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Info (10^0)' }, + 'Unbekannt-4871': { 'ID': 8649, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4872': { 'ID': 8650, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4873': { 'ID': 8651, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4874': { 'ID': 8652, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4875': { 'ID': 8653, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4876': { 'ID': 8654, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4877': { 'ID': 8655, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4878': { 'ID': 8656, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4879': { 'ID': 8657, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4880': { 'ID': 8658, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4881': { 'ID': 8659, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4882': { 'ID': 8660, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4883': { 'ID': 8661, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4884': { 'ID': 8662, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4885': { 'ID': 8663, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4886': { 'ID': 8664, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4887': { 'ID': 8665, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4888': { 'ID': 8666, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4889': { 'ID': 8667, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4890': { 'ID': 8668, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4891': { 'ID': 8669, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4892': { 'ID': 8670, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4893': { 'ID': 8671, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4894': { 'ID': 8672, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4895': { 'ID': 8673, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4896': { 'ID': 8674, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4897': { 'ID': 8675, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4898': { 'ID': 8676, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4899': { 'ID': 8677, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4900': { 'ID': 8678, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4901': { 'ID': 8679, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4902': { 'ID': 8680, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4903': { 'ID': 8681, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4904': { 'ID': 8682, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4905': { 'ID': 8683, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4906': { 'ID': 8684, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4907': { 'ID': 8685, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4908': { 'ID': 8686, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4909': { 'ID': 8687, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4910': { 'ID': 8688, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4911': { 'ID': 8689, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4912': { 'ID': 8690, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4913': { 'ID': 8691, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4914': { 'ID': 8692, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4915': { 'ID': 8693, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4916': { 'ID': 8694, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4917': { 'ID': 8695, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4918': { 'ID': 8696, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4919': { 'ID': 8697, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4920': { 'ID': 8698, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4921': { 'ID': 8699, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4922': { 'ID': 8700, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4923': { 'ID': 8701, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4924': { 'ID': 8702, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4925': { 'ID': 8703, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4926': { 'ID': 8704, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4927': { 'ID': 8705, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4928': { 'ID': 8706, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4929': { 'ID': 8707, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4930': { 'ID': 8708, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4931': { 'ID': 8709, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4932': { 'ID': 8710, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4933': { 'ID': 8711, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4934': { 'ID': 8712, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4935': { 'ID': 8713, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4936': { 'ID': 8714, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4937': { 'ID': 8715, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4938': { 'ID': 8716, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4939': { 'ID': 8717, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4940': { 'ID': 8718, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4941': { 'ID': 8719, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4942': { 'ID': 8720, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4943': { 'ID': 8721, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4944': { 'ID': 8722, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4945': { 'ID': 8723, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4946': { 'ID': 8724, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4947': { 'ID': 8725, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4948': { 'ID': 8726, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4949': { 'ID': 8727, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4950': { 'ID': 8728, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4951': { 'ID': 8729, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4952': { 'ID': 8730, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4953': { 'ID': 8731, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4954': { 'ID': 8732, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4955': { 'ID': 8733, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4956': { 'ID': 8734, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4957': { 'ID': 8735, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4958': { 'ID': 8736, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4959': { 'ID': 8737, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4960': { 'ID': 8738, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4961': { 'ID': 8739, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4962': { 'ID': 8740, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4963': { 'ID': 8741, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4964': { 'ID': 8742, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4965': { 'ID': 8743, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4966': { 'ID': 8744, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4967': { 'ID': 8745, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4968': { 'ID': 8746, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4969': { 'ID': 8747, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4970': { 'ID': 8748, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4971': { 'ID': 8749, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4972': { 'ID': 8750, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4973': { 'ID': 8751, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4974': { 'ID': 8752, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4975': { 'ID': 8753, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4976': { 'ID': 8754, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4977': { 'ID': 8755, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4978': { 'ID': 8756, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4979': { 'ID': 8757, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4980': { 'ID': 8758, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4981': { 'ID': 8759, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4982': { 'ID': 8760, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4983': { 'ID': 8761, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4984': { 'ID': 8762, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4985': { 'ID': 8763, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4986': { 'ID': 8764, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4987': { 'ID': 8765, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4988': { 'ID': 8766, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4989': { 'ID': 8767, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4990': { 'ID': 8768, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4991': { 'ID': 8769, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4992': { 'ID': 8770, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4993': { 'ID': 8771, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4994': { 'ID': 8772, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4995': { 'ID': 8773, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4996': { 'ID': 8774, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4997': { 'ID': 8775, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4998': { 'ID': 8776, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4999': { 'ID': 8777, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5000': { 'ID': 8778, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5001': { 'ID': 8779, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5002': { 'ID': 8780, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5003': { 'ID': 8781, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5004': { 'ID': 8782, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5005': { 'ID': 8783, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5006': { 'ID': 8784, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5007': { 'ID': 8785, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5008': { 'ID': 8786, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5009': { 'ID': 8787, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5010': { 'ID': 8788, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5011': { 'ID': 8789, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5012': { 'ID': 8790, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5013': { 'ID': 8791, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5014': { 'ID': 8792, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5015': { 'ID': 8793, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5016': { 'ID': 8794, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5017': { 'ID': 8795, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5018': { 'ID': 8796, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5019': { 'ID': 8797, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5020': { 'ID': 8798, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5021': { 'ID': 8799, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5022': { 'ID': 8800, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5023': { 'ID': 8801, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5024': { 'ID': 8802, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5025': { 'ID': 8803, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5026': { 'ID': 8804, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5027': { 'ID': 8805, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5028': { 'ID': 8806, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5029': { 'ID': 8807, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5030': { 'ID': 8808, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5031': { 'ID': 8809, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5032': { 'ID': 8810, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5033': { 'ID': 8811, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5034': { 'ID': 8812, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5035': { 'ID': 8813, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5036': { 'ID': 8814, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5037': { 'ID': 8815, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5038': { 'ID': 8816, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5039': { 'ID': 8817, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5040': { 'ID': 8818, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5041': { 'ID': 8819, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5042': { 'ID': 8820, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5043': { 'ID': 8821, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5044': { 'ID': 8822, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5045': { 'ID': 8823, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5046': { 'ID': 8824, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5047': { 'ID': 8825, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5048': { 'ID': 8826, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5049': { 'ID': 8827, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5050': { 'ID': 8828, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5051': { 'ID': 8829, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5052': { 'ID': 8830, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5053': { 'ID': 8831, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5054': { 'ID': 8832, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5055': { 'ID': 8833, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5056': { 'ID': 8834, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5057': { 'ID': 8835, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5058': { 'ID': 8836, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5059': { 'ID': 8837, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5060': { 'ID': 8838, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5061': { 'ID': 8839, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5062': { 'ID': 8840, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5063': { 'ID': 8841, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5064': { 'ID': 8842, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5065': { 'ID': 8843, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5066': { 'ID': 8844, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5067': { 'ID': 8845, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5068': { 'ID': 8846, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5069': { 'ID': 8847, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5070': { 'ID': 8848, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5071': { 'ID': 8849, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5072': { 'ID': 8850, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5073': { 'ID': 8851, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5074': { 'ID': 8852, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5075': { 'ID': 8853, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5076': { 'ID': 8854, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5077': { 'ID': 8855, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5078': { 'ID': 8856, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5079': { 'ID': 8857, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5080': { 'ID': 8858, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5081': { 'ID': 8859, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5082': { 'ID': 8860, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5083': { 'ID': 8861, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5084': { 'ID': 8862, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5085': { 'ID': 8863, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5086': { 'ID': 8864, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5087': { 'ID': 8865, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5088': { 'ID': 8866, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5089': { 'ID': 8867, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5090': { 'ID': 8868, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5091': { 'ID': 8869, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5092': { 'ID': 8870, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5093': { 'ID': 8871, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5094': { 'ID': 8872, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5095': { 'ID': 8873, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5096': { 'ID': 8874, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5097': { 'ID': 8875, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5098': { 'ID': 8876, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5099': { 'ID': 8877, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5100': { 'ID': 8878, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5101': { 'ID': 8879, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5102': { 'ID': 8880, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5103': { 'ID': 8881, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5104': { 'ID': 8882, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5105': { 'ID': 8883, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5106': { 'ID': 8884, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5107': { 'ID': 8885, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5108': { 'ID': 8886, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5109': { 'ID': 8887, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5110': { 'ID': 8888, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5111': { 'ID': 8889, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5112': { 'ID': 8890, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5113': { 'ID': 8891, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5114': { 'ID': 8892, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5115': { 'ID': 8893, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5116': { 'ID': 8894, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5117': { 'ID': 8895, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5118': { 'ID': 8896, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5119': { 'ID': 8897, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5120': { 'ID': 8898, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5121': { 'ID': 8899, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5122': { 'ID': 8900, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5123': { 'ID': 8901, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5124': { 'ID': 8902, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5125': { 'ID': 8903, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5126': { 'ID': 8904, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5127': { 'ID': 8905, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5128': { 'ID': 8906, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5129': { 'ID': 8907, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5130': { 'ID': 8908, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5131': { 'ID': 8909, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5132': { 'ID': 8910, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5133': { 'ID': 8911, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5134': { 'ID': 8912, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5135': { 'ID': 8913, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5136': { 'ID': 8914, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5137': { 'ID': 8915, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5138': { 'ID': 8916, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5139': { 'ID': 8917, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5140': { 'ID': 8918, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5141': { 'ID': 8919, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5142': { 'ID': 8920, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5143': { 'ID': 8921, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5144': { 'ID': 8922, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5145': { 'ID': 8923, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5146': { 'ID': 8924, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5147': { 'ID': 8925, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5148': { 'ID': 8926, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5149': { 'ID': 8927, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5150': { 'ID': 8928, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5151': { 'ID': 8929, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5152': { 'ID': 8930, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5153': { 'ID': 8931, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5154': { 'ID': 8932, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5155': { 'ID': 8933, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5156': { 'ID': 8934, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5157': { 'ID': 8935, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5158': { 'ID': 8936, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5159': { 'ID': 8937, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5160': { 'ID': 8938, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5161': { 'ID': 8939, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5162': { 'ID': 8940, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5163': { 'ID': 8941, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5164': { 'ID': 8942, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5165': { 'ID': 8943, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5166': { 'ID': 8944, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5167': { 'ID': 8945, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5168': { 'ID': 8946, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5169': { 'ID': 8947, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5170': { 'ID': 8948, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5171': { 'ID': 8949, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5172': { 'ID': 8950, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5173': { 'ID': 8951, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5174': { 'ID': 8952, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5175': { 'ID': 8953, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5176': { 'ID': 8954, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5177': { 'ID': 8955, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5178': { 'ID': 8956, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5179': { 'ID': 8957, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5180': { 'ID': 8958, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5181': { 'ID': 8959, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5182': { 'ID': 8960, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5183': { 'ID': 8961, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5184': { 'ID': 8962, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5185': { 'ID': 8963, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5186': { 'ID': 8964, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5187': { 'ID': 8965, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5188': { 'ID': 8966, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5189': { 'ID': 8967, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5190': { 'ID': 8968, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5191': { 'ID': 8969, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5192': { 'ID': 8970, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5193': { 'ID': 8971, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5194': { 'ID': 8972, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5195': { 'ID': 8973, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5196': { 'ID': 8974, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5197': { 'ID': 8975, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5198': { 'ID': 8976, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5199': { 'ID': 8977, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5200': { 'ID': 8978, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5201': { 'ID': 8979, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5202': { 'ID': 8980, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5203': { 'ID': 8981, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5204': { 'ID': 8982, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5205': { 'ID': 8983, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5206': { 'ID': 8984, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5207': { 'ID': 8985, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5208': { 'ID': 8986, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5209': { 'ID': 8987, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5210': { 'ID': 8988, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5211': { 'ID': 8989, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5212': { 'ID': 8990, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5213': { 'ID': 8991, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5214': { 'ID': 8992, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5215': { 'ID': 8993, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5216': { 'ID': 8994, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5217': { 'ID': 8995, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5218': { 'ID': 8996, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5219': { 'ID': 8997, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5220': { 'ID': 8998, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr6SysWMZFLAG': { 'ID': 8999, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 32767000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 32767000, 'Name': 'WMZ6 Betriebszustand' }, + 'Nr6SysFSR': { 'ID': 9000, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 32767000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 32767000, 'Name': 'WMZ6 Fehlerstatus-Register' }, + 'Nr6VDatum': { 'ID': 9001, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ6 Lesedatum Volumen' }, + 'Nr6VZeit': { 'ID': 9002, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ6 Leseuhrzeit Volumen' }, + 'Nr6tBtre3': { 'ID': 9003, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ6 Betriebszeit x 10^3' }, + 'Nr6tBtre0': { 'ID': 9004, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ6 Betriebszeit x 10^0' }, + 'Nr6Qe4': { 'ID': 9005, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Durchfluß (10^4)' }, + 'Nr6Qe0': { 'ID': 9006, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Durchfluß (10^0)' }, + 'Nr6Qe-3': { 'ID': 9007, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Durchfluß (10^-3)' }, + 'Nr6QEinh': { 'ID': 9008, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Durchfluß, 0=m³/h, 1=l/h' }, + 'Nr6Ve4': { 'ID': 9009, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Volumen (10^4)' }, + 'Nr6Ve0': { 'ID': 9010, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Volumen (10^0)' }, + 'Nr6Ve-3': { 'ID': 9011, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Volumen (10^-3)' }, + 'Nr6VEinh': { 'ID': 9012, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Volumen, 0=m³, 1=l' }, + 'Nr6Pe4': { 'ID': 9013, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Leistung (10^4)' }, + 'Nr6Pe0': { 'ID': 9014, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Leistung (10^0)' }, + 'Nr6Pe-3': { 'ID': 9015, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Leistung (10^-3)' }, + 'Nr6PEinh': { 'ID': 9016, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Leistung, 0=kW, 1=MW' }, + 'Nr6We4': { 'ID': 9017, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Arbeit (10^4)' }, + 'Nr6We0': { 'ID': 9018, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Arbeit (10^0)' }, + 'Nr6We-3': { 'ID': 9019, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Arbeit (10^-3)' }, + 'Nr6WEinh': { 'ID': 9020, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ6 Einheit Arbeit, 0=MWh, 1=kWh, 2=GJ' }, + 'Nr6Hersteller-ID': { 'ID': 9021, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ6 Hersteller-Identifikation' }, + 'Nr6VLe0': { 'ID': 9022, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ6 Vorlauftemperatur (10^0)' }, + 'Nr6VLe-3': { 'ID': 9023, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Vorlauftemperatur (10^-3)' }, + 'Nr6VLEinh': { 'ID': 9024, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Vorlauftemperatur, 0=°C' }, + 'Nr6WMZ-Firmware': { 'ID': 9025, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Version', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65000000, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 650000, 'Name': 'WMZ6 Firmware-Version Zähler' }, + 'Nr6RLe0': { 'ID': 9026, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ6 Rücklauftemperatur (10^0)' }, + 'Nr6RLe-3': { 'ID': 9027, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Rücklauftemperatur (10^-3)' }, + 'Nr6RLEinh': { 'ID': 9028, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Rücklauftemperatur, 0=°C' }, + 'Unbekannt-5251': { 'ID': 9029, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr6SysAnsFail': { 'ID': 9030, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ6 Testregister für den internen Gebrauch' }, + 'Nr6SysZeroBack': { 'ID': 9031, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ6 Testregister für den internen Gebrauch' }, + 'Unbekannt-5254': { 'ID': 9032, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5255': { 'ID': 9033, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5256': { 'ID': 9034, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr6STagDatum': { 'ID': 9035, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ6 Lesedatum Stichtag' }, + 'Nr6STagZeit': { 'ID': 9036, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ6 Leseuhrzeit Stichtag' }, + 'Nr6WSTag1e4': { 'ID': 9037, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Arbeit Stichtag1 (10^4)' }, + 'Nr6WSTag1e0': { 'ID': 9038, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Arbeit Stichtag1 (10^0)' }, + 'Nr6WSTag1e-3': { 'ID': 9039, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Arbeit Stichtag1 (10^-3)' }, + 'Nr6WSTag1Einh': { 'ID': 9040, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ6 Einheit Arbeit Stichtag 1,0=MWh,1=kWh,2=GJ' }, + 'Nr6STag1Jahr': { 'ID': 9041, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ6 Jahr Stichtag 1' }, + 'Nr6STag1Datum': { 'ID': 9042, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ6 Datum Stichtag 1' }, + 'Nr6VSTag1e4': { 'ID': 9043, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Volumen Stichtag1 (10^4)' }, + 'Nr6VSTag1e0': { 'ID': 9044, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Volumen Stichtag1 (10^0)' }, + 'Nr6VSTag1e-3': { 'ID': 9045, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Volumen Stichtag1 (10^-3)' }, + 'Nr6VSTag1Einh': { 'ID': 9046, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Volumen Stichtag1, 0=m³, 1=l' }, + 'Nr6WSTag2e4': { 'ID': 9047, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Arbeit Stichtag2 (10^4)' }, + 'Nr6WSTag2e0': { 'ID': 9048, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Arbeit Stichtag2 (10^0)' }, + 'Nr6WSTag2e-3': { 'ID': 9049, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Arbeit Stichtag2 (10^-3)' }, + 'Nr6WSTag2Einh': { 'ID': 9050, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ6 Einheit Arbeit Stichtag 2,0=MWh,1=kWh,2=GJ' }, + 'Nr6STag2Jahr': { 'ID': 9051, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ6 Jahr Stichtag2' }, + 'Nr6STag2Datum': { 'ID': 9052, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ6 Datum Stichtag2' }, + 'Nr6VSTag2e4': { 'ID': 9053, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Volumen Stichtag2 (10^4)' }, + 'Nr6VSTag2e0': { 'ID': 9054, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Volumen Stichtag2 (10^0)' }, + 'Nr6VSTag2e-3': { 'ID': 9055, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Volumen Stichtag2 (10^-3)' }, + 'Nr6VSTag2Einh': { 'ID': 9056, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Volumen Stichtag2, 0=m³, 1=l' }, + 'Nr6WDev1e4': { 'ID': 9057, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Arbeit Device1 (10^4)' }, + 'Nr6WDev1e0': { 'ID': 9058, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Arbeit Device1 (10^0)' }, + 'Nr6WDev1e-3': { 'ID': 9059, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Arbeit Device1 (10^-3)' }, + 'Nr6WDev1Einh': { 'ID': 9060, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ6 Device1-Arbeit Einheit,0=MWh,1=kWh,2=GJ' }, + 'Nr6VDev1e4': { 'ID': 9061, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Volumen Device1 (10^4)' }, + 'Nr6VDev1e0': { 'ID': 9062, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Volumen Device1 (10^0)' }, + 'Nr6VDev1e-3': { 'ID': 9063, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Volumen Device1 (10^-3)' }, + 'Nr6VDev1Einh': { 'ID': 9064, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Volumen Device1, 0=m³, 1=l' }, + 'Nr6WDev2e4': { 'ID': 9065, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Arbeit Device2 (10^4)' }, + 'Nr6WDev2e0': { 'ID': 9066, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Arbeit Device2 (10^0)' }, + 'Nr6WDev2e-3': { 'ID': 9067, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Arbeit Device2 (10^-3)' }, + 'Nr6WDev2Einh': { 'ID': 9068, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ6 Einheit Arbeit Device2,0=MWh,1=kWh,2=GJ' }, + 'Nr6VDev2e4': { 'ID': 9069, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Volumen Device2 (10^4)' }, + 'Nr6VDev2e0': { 'ID': 9070, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Volumen Device2 (10^0)' }, + 'Nr6VDev2e-3': { 'ID': 9071, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Volumen Device2 (10^-3)' }, + 'Nr6VDev2Einh': { 'ID': 9072, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Volumen Device2, 0=m³, 1=l' }, + 'Nr6WTa1e4': { 'ID': 9073, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Arbeit Tarif1 (10^4)' }, + 'Nr6WTa1e0': { 'ID': 9074, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Arbeit Tarif1 (10^0)' }, + 'Nr6WTa1e-3': { 'ID': 9075, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Arbeit Tarif1 (10^-3)' }, + 'Nr6WTa1Einh': { 'ID': 9076, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ6 Einheit Arbeit Tarif1,0=MWh,1=kWh,2=GJ' }, + 'Nr6VTa1e4': { 'ID': 9077, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Volumen Tarif1 (10^4)' }, + 'Nr6VTa1e0': { 'ID': 9078, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Volumen Tarif1 (10^0)' }, + 'Nr6VTa1e-3': { 'ID': 9079, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Volumen Tarif1 (10^-3)' }, + 'Nr6VTa1Einh': { 'ID': 9080, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Volumen Tarif1, 0=m³, 1=l' }, + 'Nr6WTa2e4': { 'ID': 9081, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Arbeit Tarif2 (10^4)' }, + 'Nr6WTa2e0': { 'ID': 9082, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Arbeit Tarif2 (10^0)' }, + 'Nr6WTa2e-3': { 'ID': 9083, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Arbeit Tarif2 (10^-3)' }, + 'Nr6WTa2Einh': { 'ID': 9084, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ6 Einheit Arbeit Tarif2,0=MWh,1=kWh,2=GJ' }, + 'Nr6VTa2e4': { 'ID': 9085, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Volumen Tarif2 (10^4)' }, + 'Nr6VTa2e0': { 'ID': 9086, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Volumen Tarif2 (10^0)' }, + 'Nr6VTa2e-3': { 'ID': 9087, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Volumen Tarif2 (10^-3)' }, + 'Nr6VTa2Einh': { 'ID': 9088, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Volumen Tarif2, 0=m³, 1=l' }, + 'Nr6SysIDHB': { 'ID': 9089, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Identnummer obere 4 Stellen' }, + 'Nr6SysIDLB': { 'ID': 9090, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Identnummer untere 4 Stellen' }, + 'Nr6Dev1HCAe7': { 'ID': 9091, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ6 Device 1 Zählen ohne Einheit (10^7)' }, + 'Nr6Dev1HCAe4': { 'ID': 9092, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Device 1 Zählen ohne Einheit (10^4)' }, + 'Nr6Dev1HCAe0': { 'ID': 9093, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Device 1 Zählen ohne Einheit (10^0)' }, + 'Nr6Dev2HCAe7': { 'ID': 9094, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ6 Device 2 Zählen ohne Einheit (10^7)' }, + 'Nr6Dev2HCAe4': { 'ID': 9095, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Device 2 Zählen ohne Einheit (10^4)' }, + 'Nr6Dev2HCAe0': { 'ID': 9096, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Device 2 Zählen ohne Einheit (10^0)' }, + 'Nr6Dev3HCAe7': { 'ID': 9097, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ6 Device 3 Zählen ohne Einheit (10^7)' }, + 'Nr6Dev3HCAe4': { 'ID': 9098, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Device 3 Zählen ohne Einheit (10^4)' }, + 'Nr6Dev3HCAe0': { 'ID': 9099, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Device 3 Zählen ohne Einheit (10^0)' }, + 'Nr6QDev1Nr5e4': { 'ID': 9100, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Qmax Dev1 Speichernr5 10^4' }, + 'Nr6QDev1Nr5e0': { 'ID': 9101, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Qmax Dev1 Speichernr5 10^0' }, + 'Nr6QDev1Nr5e-3': { 'ID': 9102, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Qmax Dev1 Speichernr5 10^-3' }, + 'Nr6QDev1Nr5Einh': { 'ID': 9103, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit QmaxDev1Spnr5,0=m³/h,1=l/h' }, + 'Nr6Dev1Nr5Jahr': { 'ID': 9104, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ6 Jahr für Dev1maxStorNr5' }, + 'Nr6Dev1Nr5Datum': { 'ID': 9105, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ6 Datum für Dev1maxStorNr5' }, + 'Nr6Dev1Nr5Zeit': { 'ID': 9106, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ6 Uhrzeit für Dev1maxStorNr5' }, + 'Nr6PDev1Nr1e4': { 'ID': 9107, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Pmax für Dev1StorNr1 (10^4)' }, + 'Nr6PDev1Nr1e0': { 'ID': 9108, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Pmax für Dev1StorNr1 (10^0)' }, + 'Nr6PDev1Nr1e-3': { 'ID': 9109, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Pmax für Dev1StorNr1 (10^-3)' }, + 'Nr6PDev1Nr1Einh': { 'ID': 9110, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit PmaxDev1StorNr1, 0=kW, 1=MW' }, + 'Nr6Dev1Nr1Jahr': { 'ID': 9111, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ6 Jahr für Dev1maxStorNr1' }, + 'Nr6Dev1Nr1Datum': { 'ID': 9112, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ6 Datum für Dev1maxStorNr1' }, + 'Nr6Dev1Nr1Zeit': { 'ID': 9113, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ6 Uhrzeit für Dev1maxStorNr1' }, + 'Nr6Pmaxe4': { 'ID': 9114, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Leistung max (10^4)' }, + 'Nr6Pmaxe0': { 'ID': 9115, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Leistung max (10^0)' }, + 'Nr6Pmaxe-3': { 'ID': 9116, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Leistung max (10^-3)' }, + 'Nr6PmaxEinh': { 'ID': 9117, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Leistung max, 0=kW, 1=MW' }, + 'Nr6Qmaxe4': { 'ID': 9118, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Durchfluß max (10^4)' }, + 'Nr6Qmaxe0': { 'ID': 9119, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Durchfluß max (10^0)' }, + 'Nr6Qmaxe-3': { 'ID': 9120, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Durchfluß max (10^-3)' }, + 'Nr6QmaxEinh': { 'ID': 9121, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Durchfluß max,0=m³/h,1=l/h' }, + 'Unbekannt-5344': { 'ID': 9122, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr6VLmaxe0': { 'ID': 9123, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ6 Vorlauftemperatur max (10^0)' }, + 'Nr6VLmaxe-3': { 'ID': 9124, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Vorlauftemperatur max (10^-3)' }, + 'Nr6VLmaxEinh': { 'ID': 9125, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Vorlauftemperatur max, 0=°C' }, + 'Unbekannt-5348': { 'ID': 9126, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr6RLmaxe0': { 'ID': 9127, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ6 Rücklauftemperatur max (10^0)' }, + 'Nr6RLmaxe-3': { 'ID': 9128, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Rücklauftemperatur max (10^-3)' }, + 'Nr6RLmaxEinh': { 'ID': 9129, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Rücklauftemperatur max, 0=°C' }, + 'Nr6SysSlaveadr': { 'ID': 9130, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 255000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 255000, 'Name': 'WMZ6 echte WMZ-Adresse nach Zählerantwort' }, + 'Nr6DeltaTe0': { 'ID': 9131, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ6 Differenz (Vorlauf-Rücklauf) (10^0)' }, + 'Nr6DeltaTe-3': { 'ID': 9132, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Differenz (Vorlauf-Rücklauf) (10^-3)' }, + 'Nr6VTa3e4': { 'ID': 9133, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Volumen Tarif3 (10^4)' }, + 'Nr6VTa3e0': { 'ID': 9134, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Volumen Tarif3 (10^0)' }, + 'Nr6VTa3e-3': { 'ID': 9135, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Volumen Tarif3 (10^-3)' }, + 'Nr6VTa3Einh': { 'ID': 9136, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Volumen Tarif3, 0=m³, 1=l' }, + 'Nr6PTa1Nr24e4': { 'ID': 9137, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 P Tarif1StorNr24 (10^4)' }, + 'Nr6PTa1Nr24e0': { 'ID': 9138, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 P Tarif1StorNr24 (10^0)' }, + 'Nr6PTa1Nr24e-3': { 'ID': 9139, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 P Tarif1StorNr24 (10^-3)' }, + 'Nr6PTa1Nr24Einh': { 'ID': 9140, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit PTarif1StorNr24, 0=kW, 1=MW' }, + 'Nr6QTa1Nr24e4': { 'ID': 9141, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Q Tarif1StorNr24 (10^4)' }, + 'Nr6QTa1Nr24e0': { 'ID': 9142, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Q Tarif1StorNr24 (10^0)' }, + 'Nr6QTa1Nr24e-3': { 'ID': 9143, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Q Tarif1StorNr24 (10^-3)' }, + 'Nr6QTa1Nr24Einh': { 'ID': 9144, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 EinheitQTarif1StorNr24,0=m³/h,1=l/h' }, + 'Nr6tErrore3': { 'ID': 9145, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Zeit während Fehler (10^3)' }, + 'Nr6tErrore0': { 'ID': 9146, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Zeit während Fehler (10^0)' }, + 'Nr6tInfoe3': { 'ID': 9147, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Info (10^3)' }, + 'Nr6tInfoe0': { 'ID': 9148, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Info (10^0)' }, + 'Unbekannt-5371': { 'ID': 9149, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5372': { 'ID': 9150, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5373': { 'ID': 9151, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5374': { 'ID': 9152, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5375': { 'ID': 9153, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5376': { 'ID': 9154, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5377': { 'ID': 9155, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5378': { 'ID': 9156, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5379': { 'ID': 9157, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5380': { 'ID': 9158, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5381': { 'ID': 9159, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5382': { 'ID': 9160, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5383': { 'ID': 9161, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5384': { 'ID': 9162, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5385': { 'ID': 9163, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5386': { 'ID': 9164, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5387': { 'ID': 9165, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5388': { 'ID': 9166, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5389': { 'ID': 9167, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5390': { 'ID': 9168, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5391': { 'ID': 9169, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5392': { 'ID': 9170, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5393': { 'ID': 9171, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5394': { 'ID': 9172, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5395': { 'ID': 9173, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5396': { 'ID': 9174, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5397': { 'ID': 9175, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5398': { 'ID': 9176, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5399': { 'ID': 9177, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5400': { 'ID': 9178, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5401': { 'ID': 9179, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5402': { 'ID': 9180, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5403': { 'ID': 9181, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5404': { 'ID': 9182, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5405': { 'ID': 9183, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5406': { 'ID': 9184, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5407': { 'ID': 9185, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5408': { 'ID': 9186, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5409': { 'ID': 9187, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5410': { 'ID': 9188, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5411': { 'ID': 9189, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5412': { 'ID': 9190, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5413': { 'ID': 9191, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5414': { 'ID': 9192, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5415': { 'ID': 9193, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5416': { 'ID': 9194, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5417': { 'ID': 9195, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5418': { 'ID': 9196, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5419': { 'ID': 9197, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5420': { 'ID': 9198, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5421': { 'ID': 9199, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5422': { 'ID': 9200, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5423': { 'ID': 9201, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5424': { 'ID': 9202, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5425': { 'ID': 9203, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5426': { 'ID': 9204, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5427': { 'ID': 9205, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5428': { 'ID': 9206, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5429': { 'ID': 9207, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5430': { 'ID': 9208, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5431': { 'ID': 9209, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5432': { 'ID': 9210, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5433': { 'ID': 9211, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5434': { 'ID': 9212, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5435': { 'ID': 9213, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5436': { 'ID': 9214, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5437': { 'ID': 9215, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5438': { 'ID': 9216, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5439': { 'ID': 9217, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5440': { 'ID': 9218, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5441': { 'ID': 9219, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5442': { 'ID': 9220, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5443': { 'ID': 9221, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5444': { 'ID': 9222, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5445': { 'ID': 9223, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5446': { 'ID': 9224, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5447': { 'ID': 9225, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5448': { 'ID': 9226, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5449': { 'ID': 9227, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5450': { 'ID': 9228, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5451': { 'ID': 9229, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5452': { 'ID': 9230, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5453': { 'ID': 9231, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5454': { 'ID': 9232, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5455': { 'ID': 9233, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5456': { 'ID': 9234, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5457': { 'ID': 9235, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5458': { 'ID': 9236, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5459': { 'ID': 9237, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5460': { 'ID': 9238, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5461': { 'ID': 9239, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5462': { 'ID': 9240, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5463': { 'ID': 9241, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5464': { 'ID': 9242, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5465': { 'ID': 9243, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5466': { 'ID': 9244, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5467': { 'ID': 9245, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5468': { 'ID': 9246, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5469': { 'ID': 9247, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5470': { 'ID': 9248, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5471': { 'ID': 9249, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5472': { 'ID': 9250, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5473': { 'ID': 9251, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5474': { 'ID': 9252, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5475': { 'ID': 9253, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5476': { 'ID': 9254, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5477': { 'ID': 9255, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5478': { 'ID': 9256, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5479': { 'ID': 9257, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5480': { 'ID': 9258, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5481': { 'ID': 9259, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5482': { 'ID': 9260, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5483': { 'ID': 9261, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5484': { 'ID': 9262, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5485': { 'ID': 9263, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5486': { 'ID': 9264, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5487': { 'ID': 9265, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5488': { 'ID': 9266, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5489': { 'ID': 9267, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5490': { 'ID': 9268, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5491': { 'ID': 9269, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5492': { 'ID': 9270, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5493': { 'ID': 9271, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5494': { 'ID': 9272, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5495': { 'ID': 9273, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5496': { 'ID': 9274, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5497': { 'ID': 9275, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5498': { 'ID': 9276, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5499': { 'ID': 9277, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5500': { 'ID': 9278, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5501': { 'ID': 9279, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5502': { 'ID': 9280, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5503': { 'ID': 9281, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5504': { 'ID': 9282, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5505': { 'ID': 9283, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5506': { 'ID': 9284, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5507': { 'ID': 9285, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5508': { 'ID': 9286, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5509': { 'ID': 9287, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5510': { 'ID': 9288, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5511': { 'ID': 9289, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5512': { 'ID': 9290, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5513': { 'ID': 9291, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5514': { 'ID': 9292, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5515': { 'ID': 9293, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5516': { 'ID': 9294, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5517': { 'ID': 9295, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5518': { 'ID': 9296, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5519': { 'ID': 9297, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5520': { 'ID': 9298, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5521': { 'ID': 9299, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5522': { 'ID': 9300, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5523': { 'ID': 9301, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5524': { 'ID': 9302, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5525': { 'ID': 9303, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5526': { 'ID': 9304, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5527': { 'ID': 9305, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5528': { 'ID': 9306, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5529': { 'ID': 9307, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5530': { 'ID': 9308, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5531': { 'ID': 9309, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5532': { 'ID': 9310, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5533': { 'ID': 9311, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5534': { 'ID': 9312, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5535': { 'ID': 9313, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5536': { 'ID': 9314, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5537': { 'ID': 9315, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5538': { 'ID': 9316, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5539': { 'ID': 9317, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5540': { 'ID': 9318, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5541': { 'ID': 9319, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5542': { 'ID': 9320, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5543': { 'ID': 9321, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5544': { 'ID': 9322, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5545': { 'ID': 9323, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5546': { 'ID': 9324, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5547': { 'ID': 9325, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5548': { 'ID': 9326, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5549': { 'ID': 9327, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5550': { 'ID': 9328, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5551': { 'ID': 9329, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5552': { 'ID': 9330, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5553': { 'ID': 9331, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5554': { 'ID': 9332, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5555': { 'ID': 9333, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5556': { 'ID': 9334, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5557': { 'ID': 9335, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5558': { 'ID': 9336, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5559': { 'ID': 9337, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5560': { 'ID': 9338, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5561': { 'ID': 9339, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5562': { 'ID': 9340, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5563': { 'ID': 9341, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5564': { 'ID': 9342, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5565': { 'ID': 9343, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5566': { 'ID': 9344, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5567': { 'ID': 9345, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5568': { 'ID': 9346, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5569': { 'ID': 9347, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5570': { 'ID': 9348, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5571': { 'ID': 9349, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5572': { 'ID': 9350, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5573': { 'ID': 9351, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5574': { 'ID': 9352, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5575': { 'ID': 9353, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5576': { 'ID': 9354, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5577': { 'ID': 9355, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5578': { 'ID': 9356, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5579': { 'ID': 9357, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5580': { 'ID': 9358, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5581': { 'ID': 9359, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5582': { 'ID': 9360, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5583': { 'ID': 9361, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5584': { 'ID': 9362, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5585': { 'ID': 9363, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5586': { 'ID': 9364, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5587': { 'ID': 9365, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5588': { 'ID': 9366, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5589': { 'ID': 9367, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5590': { 'ID': 9368, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5591': { 'ID': 9369, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5592': { 'ID': 9370, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5593': { 'ID': 9371, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5594': { 'ID': 9372, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5595': { 'ID': 9373, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5596': { 'ID': 9374, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5597': { 'ID': 9375, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5598': { 'ID': 9376, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5599': { 'ID': 9377, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5600': { 'ID': 9378, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5601': { 'ID': 9379, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5602': { 'ID': 9380, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5603': { 'ID': 9381, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5604': { 'ID': 9382, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5605': { 'ID': 9383, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5606': { 'ID': 9384, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5607': { 'ID': 9385, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5608': { 'ID': 9386, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5609': { 'ID': 9387, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5610': { 'ID': 9388, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5611': { 'ID': 9389, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5612': { 'ID': 9390, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5613': { 'ID': 9391, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5614': { 'ID': 9392, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5615': { 'ID': 9393, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5616': { 'ID': 9394, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5617': { 'ID': 9395, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5618': { 'ID': 9396, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5619': { 'ID': 9397, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5620': { 'ID': 9398, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5621': { 'ID': 9399, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5622': { 'ID': 9400, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5623': { 'ID': 9401, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5624': { 'ID': 9402, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5625': { 'ID': 9403, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5626': { 'ID': 9404, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5627': { 'ID': 9405, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5628': { 'ID': 9406, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5629': { 'ID': 9407, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5630': { 'ID': 9408, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5631': { 'ID': 9409, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5632': { 'ID': 9410, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5633': { 'ID': 9411, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5634': { 'ID': 9412, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5635': { 'ID': 9413, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5636': { 'ID': 9414, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5637': { 'ID': 9415, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5638': { 'ID': 9416, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5639': { 'ID': 9417, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5640': { 'ID': 9418, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5641': { 'ID': 9419, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5642': { 'ID': 9420, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5643': { 'ID': 9421, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5644': { 'ID': 9422, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5645': { 'ID': 9423, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5646': { 'ID': 9424, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5647': { 'ID': 9425, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5648': { 'ID': 9426, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5649': { 'ID': 9427, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5650': { 'ID': 9428, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5651': { 'ID': 9429, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5652': { 'ID': 9430, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5653': { 'ID': 9431, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5654': { 'ID': 9432, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5655': { 'ID': 9433, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5656': { 'ID': 9434, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5657': { 'ID': 9435, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5658': { 'ID': 9436, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5659': { 'ID': 9437, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5660': { 'ID': 9438, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5661': { 'ID': 9439, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5662': { 'ID': 9440, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5663': { 'ID': 9441, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5664': { 'ID': 9442, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5665': { 'ID': 9443, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5666': { 'ID': 9444, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5667': { 'ID': 9445, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5668': { 'ID': 9446, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5669': { 'ID': 9447, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5670': { 'ID': 9448, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5671': { 'ID': 9449, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5672': { 'ID': 9450, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5673': { 'ID': 9451, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5674': { 'ID': 9452, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5675': { 'ID': 9453, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5676': { 'ID': 9454, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5677': { 'ID': 9455, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5678': { 'ID': 9456, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5679': { 'ID': 9457, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5680': { 'ID': 9458, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5681': { 'ID': 9459, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5682': { 'ID': 9460, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5683': { 'ID': 9461, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5684': { 'ID': 9462, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5685': { 'ID': 9463, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5686': { 'ID': 9464, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5687': { 'ID': 9465, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5688': { 'ID': 9466, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5689': { 'ID': 9467, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5690': { 'ID': 9468, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5691': { 'ID': 9469, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5692': { 'ID': 9470, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5693': { 'ID': 9471, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5694': { 'ID': 9472, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5695': { 'ID': 9473, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5696': { 'ID': 9474, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5697': { 'ID': 9475, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5698': { 'ID': 9476, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5699': { 'ID': 9477, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5700': { 'ID': 9478, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5701': { 'ID': 9479, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5702': { 'ID': 9480, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5703': { 'ID': 9481, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5704': { 'ID': 9482, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5705': { 'ID': 9483, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5706': { 'ID': 9484, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5707': { 'ID': 9485, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5708': { 'ID': 9486, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5709': { 'ID': 9487, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5710': { 'ID': 9488, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5711': { 'ID': 9489, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5712': { 'ID': 9490, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5713': { 'ID': 9491, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5714': { 'ID': 9492, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5715': { 'ID': 9493, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5716': { 'ID': 9494, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5717': { 'ID': 9495, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5718': { 'ID': 9496, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5719': { 'ID': 9497, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5720': { 'ID': 9498, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5721': { 'ID': 9499, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5722': { 'ID': 9500, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5723': { 'ID': 9501, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5724': { 'ID': 9502, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5725': { 'ID': 9503, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5726': { 'ID': 9504, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5727': { 'ID': 9505, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5728': { 'ID': 9506, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5729': { 'ID': 9507, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5730': { 'ID': 9508, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5731': { 'ID': 9509, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5732': { 'ID': 9510, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5733': { 'ID': 9511, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5734': { 'ID': 9512, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5735': { 'ID': 9513, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5736': { 'ID': 9514, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5737': { 'ID': 9515, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5738': { 'ID': 9516, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5739': { 'ID': 9517, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5740': { 'ID': 9518, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5741': { 'ID': 9519, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5742': { 'ID': 9520, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5743': { 'ID': 9521, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5744': { 'ID': 9522, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5745': { 'ID': 9523, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5746': { 'ID': 9524, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5747': { 'ID': 9525, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5748': { 'ID': 9526, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5749': { 'ID': 9527, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5750': { 'ID': 9528, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5751': { 'ID': 9529, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5752': { 'ID': 9530, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5753': { 'ID': 9531, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5754': { 'ID': 9532, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5755': { 'ID': 9533, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5756': { 'ID': 9534, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5757': { 'ID': 9535, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5758': { 'ID': 9536, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5759': { 'ID': 9537, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5760': { 'ID': 9538, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5761': { 'ID': 9539, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5762': { 'ID': 9540, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5763': { 'ID': 9541, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5764': { 'ID': 9542, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5765': { 'ID': 9543, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5766': { 'ID': 9544, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5767': { 'ID': 9545, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5768': { 'ID': 9546, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5769': { 'ID': 9547, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5770': { 'ID': 9548, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5771': { 'ID': 9549, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5772': { 'ID': 9550, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5773': { 'ID': 9551, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5774': { 'ID': 9552, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5775': { 'ID': 9553, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5776': { 'ID': 9554, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5777': { 'ID': 9555, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5778': { 'ID': 9556, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5779': { 'ID': 9557, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5780': { 'ID': 9558, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5781': { 'ID': 9559, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5782': { 'ID': 9560, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5783': { 'ID': 9561, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5784': { 'ID': 9562, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5785': { 'ID': 9563, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5786': { 'ID': 9564, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5787': { 'ID': 9565, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5788': { 'ID': 9566, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5789': { 'ID': 9567, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5790': { 'ID': 9568, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5791': { 'ID': 9569, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5792': { 'ID': 9570, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5793': { 'ID': 9571, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5794': { 'ID': 9572, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5795': { 'ID': 9573, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5796': { 'ID': 9574, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5797': { 'ID': 9575, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5798': { 'ID': 9576, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5799': { 'ID': 9577, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5800': { 'ID': 9578, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5801': { 'ID': 9579, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5802': { 'ID': 9580, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5803': { 'ID': 9581, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5804': { 'ID': 9582, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5805': { 'ID': 9583, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5806': { 'ID': 9584, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5807': { 'ID': 9585, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5808': { 'ID': 9586, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5809': { 'ID': 9587, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5810': { 'ID': 9588, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5811': { 'ID': 9589, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5812': { 'ID': 9590, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5813': { 'ID': 9591, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5814': { 'ID': 9592, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5815': { 'ID': 9593, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5816': { 'ID': 9594, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5817': { 'ID': 9595, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5818': { 'ID': 9596, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5819': { 'ID': 9597, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5820': { 'ID': 9598, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5821': { 'ID': 9599, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5822': { 'ID': 9600, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5823': { 'ID': 9601, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5824': { 'ID': 9602, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5825': { 'ID': 9603, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5826': { 'ID': 9604, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5827': { 'ID': 9605, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5828': { 'ID': 9606, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5829': { 'ID': 9607, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5830': { 'ID': 9608, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5831': { 'ID': 9609, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5832': { 'ID': 9610, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5833': { 'ID': 9611, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5834': { 'ID': 9612, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5835': { 'ID': 9613, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5836': { 'ID': 9614, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5837': { 'ID': 9615, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5838': { 'ID': 9616, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5839': { 'ID': 9617, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5840': { 'ID': 9618, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5841': { 'ID': 9619, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5842': { 'ID': 9620, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5843': { 'ID': 9621, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5844': { 'ID': 9622, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5845': { 'ID': 9623, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5846': { 'ID': 9624, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5847': { 'ID': 9625, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5848': { 'ID': 9626, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5849': { 'ID': 9627, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5850': { 'ID': 9628, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5851': { 'ID': 9629, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5852': { 'ID': 9630, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5853': { 'ID': 9631, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5854': { 'ID': 9632, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5855': { 'ID': 9633, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5856': { 'ID': 9634, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5857': { 'ID': 9635, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5858': { 'ID': 9636, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5859': { 'ID': 9637, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5860': { 'ID': 9638, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5861': { 'ID': 9639, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5862': { 'ID': 9640, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5863': { 'ID': 9641, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5864': { 'ID': 9642, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5865': { 'ID': 9643, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5866': { 'ID': 9644, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5867': { 'ID': 9645, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5868': { 'ID': 9646, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5869': { 'ID': 9647, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5870': { 'ID': 9648, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5871': { 'ID': 9649, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5872': { 'ID': 9650, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5873': { 'ID': 9651, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5874': { 'ID': 9652, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5875': { 'ID': 9653, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5876': { 'ID': 9654, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5877': { 'ID': 9655, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5878': { 'ID': 9656, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5879': { 'ID': 9657, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5880': { 'ID': 9658, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5881': { 'ID': 9659, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5882': { 'ID': 9660, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5883': { 'ID': 9661, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5884': { 'ID': 9662, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5885': { 'ID': 9663, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5886': { 'ID': 9664, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5887': { 'ID': 9665, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5888': { 'ID': 9666, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5889': { 'ID': 9667, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5890': { 'ID': 9668, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5891': { 'ID': 9669, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5892': { 'ID': 9670, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5893': { 'ID': 9671, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5894': { 'ID': 9672, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5895': { 'ID': 9673, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5896': { 'ID': 9674, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5897': { 'ID': 9675, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5898': { 'ID': 9676, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5899': { 'ID': 9677, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5900': { 'ID': 9678, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5901': { 'ID': 9679, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5902': { 'ID': 9680, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5903': { 'ID': 9681, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5904': { 'ID': 9682, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5905': { 'ID': 9683, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5906': { 'ID': 9684, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5907': { 'ID': 9685, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5908': { 'ID': 9686, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5909': { 'ID': 9687, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5910': { 'ID': 9688, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5911': { 'ID': 9689, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5912': { 'ID': 9690, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5913': { 'ID': 9691, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5914': { 'ID': 9692, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5915': { 'ID': 9693, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5916': { 'ID': 9694, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5917': { 'ID': 9695, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5918': { 'ID': 9696, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5919': { 'ID': 9697, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5920': { 'ID': 9698, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5921': { 'ID': 9699, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5922': { 'ID': 9700, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5923': { 'ID': 9701, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5924': { 'ID': 9702, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5925': { 'ID': 9703, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5926': { 'ID': 9704, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5927': { 'ID': 9705, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5928': { 'ID': 9706, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5929': { 'ID': 9707, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5930': { 'ID': 9708, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5931': { 'ID': 9709, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5932': { 'ID': 9710, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5933': { 'ID': 9711, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5934': { 'ID': 9712, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5935': { 'ID': 9713, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5936': { 'ID': 9714, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5937': { 'ID': 9715, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5938': { 'ID': 9716, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5939': { 'ID': 9717, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5940': { 'ID': 9718, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5941': { 'ID': 9719, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5942': { 'ID': 9720, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5943': { 'ID': 9721, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5944': { 'ID': 9722, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5945': { 'ID': 9723, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5946': { 'ID': 9724, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5947': { 'ID': 9725, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5948': { 'ID': 9726, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5949': { 'ID': 9727, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5950': { 'ID': 9728, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5951': { 'ID': 9729, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5952': { 'ID': 9730, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5953': { 'ID': 9731, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5954': { 'ID': 9732, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5955': { 'ID': 9733, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5956': { 'ID': 9734, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5957': { 'ID': 9735, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5958': { 'ID': 9736, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5959': { 'ID': 9737, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5960': { 'ID': 9738, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5961': { 'ID': 9739, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5962': { 'ID': 9740, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5963': { 'ID': 9741, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5964': { 'ID': 9742, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5965': { 'ID': 9743, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5966': { 'ID': 9744, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5967': { 'ID': 9745, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5968': { 'ID': 9746, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5969': { 'ID': 9747, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5970': { 'ID': 9748, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5971': { 'ID': 9749, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5972': { 'ID': 9750, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5973': { 'ID': 9751, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5974': { 'ID': 9752, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5975': { 'ID': 9753, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5976': { 'ID': 9754, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5977': { 'ID': 9755, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5978': { 'ID': 9756, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5979': { 'ID': 9757, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5980': { 'ID': 9758, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5981': { 'ID': 9759, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5982': { 'ID': 9760, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5983': { 'ID': 9761, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5984': { 'ID': 9762, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5985': { 'ID': 9763, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5986': { 'ID': 9764, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5987': { 'ID': 9765, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5988': { 'ID': 9766, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5989': { 'ID': 9767, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5990': { 'ID': 9768, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5991': { 'ID': 9769, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5992': { 'ID': 9770, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5993': { 'ID': 9771, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5994': { 'ID': 9772, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5995': { 'ID': 9773, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5996': { 'ID': 9774, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5997': { 'ID': 9775, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5998': { 'ID': 9776, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5999': { 'ID': 9777, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6000': { 'ID': 9778, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6001': { 'ID': 9779, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6002': { 'ID': 9780, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6003': { 'ID': 9781, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6004': { 'ID': 9782, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6005': { 'ID': 9783, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6006': { 'ID': 9784, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6007': { 'ID': 9785, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6008': { 'ID': 9786, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6009': { 'ID': 9787, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6010': { 'ID': 9788, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6011': { 'ID': 9789, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6012': { 'ID': 9790, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6013': { 'ID': 9791, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6014': { 'ID': 9792, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6015': { 'ID': 9793, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6016': { 'ID': 9794, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6017': { 'ID': 9795, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6018': { 'ID': 9796, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6019': { 'ID': 9797, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6020': { 'ID': 9798, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6021': { 'ID': 9799, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6022': { 'ID': 9800, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6023': { 'ID': 9801, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6024': { 'ID': 9802, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6025': { 'ID': 9803, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6026': { 'ID': 9804, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6027': { 'ID': 9805, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6028': { 'ID': 9806, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6029': { 'ID': 9807, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6030': { 'ID': 9808, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6031': { 'ID': 9809, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6032': { 'ID': 9810, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6033': { 'ID': 9811, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6034': { 'ID': 9812, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6035': { 'ID': 9813, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6036': { 'ID': 9814, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6037': { 'ID': 9815, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6038': { 'ID': 9816, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6039': { 'ID': 9817, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6040': { 'ID': 9818, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6041': { 'ID': 9819, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6042': { 'ID': 9820, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6043': { 'ID': 9821, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6044': { 'ID': 9822, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6045': { 'ID': 9823, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6046': { 'ID': 9824, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6047': { 'ID': 9825, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6048': { 'ID': 9826, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6049': { 'ID': 9827, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6050': { 'ID': 9828, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6051': { 'ID': 9829, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6052': { 'ID': 9830, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6053': { 'ID': 9831, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6054': { 'ID': 9832, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6055': { 'ID': 9833, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6056': { 'ID': 9834, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6057': { 'ID': 9835, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6058': { 'ID': 9836, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6059': { 'ID': 9837, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6060': { 'ID': 9838, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6061': { 'ID': 9839, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6062': { 'ID': 9840, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6063': { 'ID': 9841, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6064': { 'ID': 9842, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6065': { 'ID': 9843, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6066': { 'ID': 9844, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6067': { 'ID': 9845, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6068': { 'ID': 9846, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6069': { 'ID': 9847, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6070': { 'ID': 9848, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6071': { 'ID': 9849, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6072': { 'ID': 9850, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6073': { 'ID': 9851, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6074': { 'ID': 9852, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6075': { 'ID': 9853, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6076': { 'ID': 9854, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6077': { 'ID': 9855, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6078': { 'ID': 9856, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6079': { 'ID': 9857, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6080': { 'ID': 9858, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6081': { 'ID': 9859, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6082': { 'ID': 9860, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6083': { 'ID': 9861, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6084': { 'ID': 9862, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6085': { 'ID': 9863, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6086': { 'ID': 9864, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6087': { 'ID': 9865, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6088': { 'ID': 9866, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6089': { 'ID': 9867, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6090': { 'ID': 9868, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6091': { 'ID': 9869, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6092': { 'ID': 9870, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6093': { 'ID': 9871, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6094': { 'ID': 9872, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6095': { 'ID': 9873, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6096': { 'ID': 9874, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6097': { 'ID': 9875, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6098': { 'ID': 9876, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6099': { 'ID': 9877, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6100': { 'ID': 9878, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6101': { 'ID': 9879, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6102': { 'ID': 9880, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6103': { 'ID': 9881, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6104': { 'ID': 9882, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6105': { 'ID': 9883, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6106': { 'ID': 9884, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6107': { 'ID': 9885, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6108': { 'ID': 9886, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6109': { 'ID': 9887, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6110': { 'ID': 9888, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6111': { 'ID': 9889, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6112': { 'ID': 9890, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6113': { 'ID': 9891, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6114': { 'ID': 9892, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6115': { 'ID': 9893, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6116': { 'ID': 9894, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6117': { 'ID': 9895, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6118': { 'ID': 9896, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6119': { 'ID': 9897, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6120': { 'ID': 9898, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6121': { 'ID': 9899, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6122': { 'ID': 9900, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6123': { 'ID': 9901, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6124': { 'ID': 9902, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6125': { 'ID': 9903, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6126': { 'ID': 9904, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6127': { 'ID': 9905, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6128': { 'ID': 9906, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6129': { 'ID': 9907, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6130': { 'ID': 9908, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6131': { 'ID': 9909, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6132': { 'ID': 9910, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6133': { 'ID': 9911, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6134': { 'ID': 9912, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6135': { 'ID': 9913, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6136': { 'ID': 9914, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6137': { 'ID': 9915, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6138': { 'ID': 9916, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6139': { 'ID': 9917, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6140': { 'ID': 9918, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6141': { 'ID': 9919, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6142': { 'ID': 9920, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6143': { 'ID': 9921, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6144': { 'ID': 9922, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6145': { 'ID': 9923, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6146': { 'ID': 9924, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6147': { 'ID': 9925, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6148': { 'ID': 9926, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6149': { 'ID': 9927, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6150': { 'ID': 9928, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6151': { 'ID': 9929, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6152': { 'ID': 9930, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6153': { 'ID': 9931, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6154': { 'ID': 9932, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6155': { 'ID': 9933, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6156': { 'ID': 9934, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6157': { 'ID': 9935, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6158': { 'ID': 9936, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6159': { 'ID': 9937, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6160': { 'ID': 9938, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6161': { 'ID': 9939, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6162': { 'ID': 9940, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6163': { 'ID': 9941, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6164': { 'ID': 9942, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6165': { 'ID': 9943, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6166': { 'ID': 9944, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6167': { 'ID': 9945, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6168': { 'ID': 9946, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6169': { 'ID': 9947, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6170': { 'ID': 9948, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6171': { 'ID': 9949, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6172': { 'ID': 9950, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6173': { 'ID': 9951, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6174': { 'ID': 9952, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6175': { 'ID': 9953, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6176': { 'ID': 9954, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6177': { 'ID': 9955, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6178': { 'ID': 9956, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6179': { 'ID': 9957, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6180': { 'ID': 9958, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6181': { 'ID': 9959, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6182': { 'ID': 9960, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6183': { 'ID': 9961, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6184': { 'ID': 9962, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6185': { 'ID': 9963, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6186': { 'ID': 9964, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6187': { 'ID': 9965, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6188': { 'ID': 9966, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6189': { 'ID': 9967, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6190': { 'ID': 9968, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6191': { 'ID': 9969, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6192': { 'ID': 9970, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6193': { 'ID': 9971, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6194': { 'ID': 9972, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6195': { 'ID': 9973, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6196': { 'ID': 9974, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6197': { 'ID': 9975, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6198': { 'ID': 9976, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6199': { 'ID': 9977, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6200': { 'ID': 9978, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6201': { 'ID': 9979, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6202': { 'ID': 9980, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6203': { 'ID': 9981, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6204': { 'ID': 9982, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6205': { 'ID': 9983, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6206': { 'ID': 9984, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6207': { 'ID': 9985, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6208': { 'ID': 9986, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6209': { 'ID': 9987, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6210': { 'ID': 9988, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6211': { 'ID': 9989, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6212': { 'ID': 9990, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6213': { 'ID': 9991, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6214': { 'ID': 9992, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6215': { 'ID': 9993, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6216': { 'ID': 9994, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6217': { 'ID': 9995, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6218': { 'ID': 9996, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6219': { 'ID': 9997, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6220': { 'ID': 9998, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6221': { 'ID': 9999, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6222': { 'ID':10000, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6223': { 'ID':10001, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6224': { 'ID':10002, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6225': { 'ID':10003, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6226': { 'ID':10004, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6227': { 'ID':10005, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6228': { 'ID':10006, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6229': { 'ID':10007, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6230': { 'ID':10008, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6231': { 'ID':10009, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6232': { 'ID':10010, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6233': { 'ID':10011, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6234': { 'ID':10012, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6235': { 'ID':10013, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6236': { 'ID':10014, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6237': { 'ID':10015, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6238': { 'ID':10016, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6239': { 'ID':10017, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6240': { 'ID':10018, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6241': { 'ID':10019, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6242': { 'ID':10020, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6243': { 'ID':10021, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6244': { 'ID':10022, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6245': { 'ID':10023, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6246': { 'ID':10024, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6247': { 'ID':10025, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6248': { 'ID':10026, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6249': { 'ID':10027, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6250': { 'ID':10028, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6251': { 'ID':10029, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6252': { 'ID':10030, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6253': { 'ID':10031, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6254': { 'ID':10032, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6255': { 'ID':10033, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6256': { 'ID':10034, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6257': { 'ID':10035, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6258': { 'ID':10036, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6259': { 'ID':10037, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6260': { 'ID':10038, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6261': { 'ID':10039, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6262': { 'ID':10040, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6263': { 'ID':10041, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6264': { 'ID':10042, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6265': { 'ID':10043, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6266': { 'ID':10044, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6267': { 'ID':10045, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6268': { 'ID':10046, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6269': { 'ID':10047, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6270': { 'ID':10048, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6271': { 'ID':10049, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6272': { 'ID':10050, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6273': { 'ID':10051, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6274': { 'ID':10052, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6275': { 'ID':10053, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6276': { 'ID':10054, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6277': { 'ID':10055, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6278': { 'ID':10056, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6279': { 'ID':10057, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6280': { 'ID':10058, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6281': { 'ID':10059, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6282': { 'ID':10060, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6283': { 'ID':10061, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6284': { 'ID':10062, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6285': { 'ID':10063, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6286': { 'ID':10064, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6287': { 'ID':10065, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6288': { 'ID':10066, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6289': { 'ID':10067, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6290': { 'ID':10068, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6291': { 'ID':10069, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6292': { 'ID':10070, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6293': { 'ID':10071, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6294': { 'ID':10072, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6295': { 'ID':10073, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6296': { 'ID':10074, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6297': { 'ID':10075, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6298': { 'ID':10076, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6299': { 'ID':10077, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6300': { 'ID':10078, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6301': { 'ID':10079, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6302': { 'ID':10080, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6303': { 'ID':10081, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6304': { 'ID':10082, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6305': { 'ID':10083, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6306': { 'ID':10084, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6307': { 'ID':10085, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6308': { 'ID':10086, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6309': { 'ID':10087, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6310': { 'ID':10088, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6311': { 'ID':10089, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6312': { 'ID':10090, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6313': { 'ID':10091, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6314': { 'ID':10092, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6315': { 'ID':10093, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6316': { 'ID':10094, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6317': { 'ID':10095, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6318': { 'ID':10096, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6319': { 'ID':10097, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6320': { 'ID':10098, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6321': { 'ID':10099, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6322': { 'ID':10100, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6323': { 'ID':10101, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6324': { 'ID':10102, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6325': { 'ID':10103, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6326': { 'ID':10104, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6327': { 'ID':10105, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6328': { 'ID':10106, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6329': { 'ID':10107, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6330': { 'ID':10108, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6331': { 'ID':10109, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6332': { 'ID':10110, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6333': { 'ID':10111, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6334': { 'ID':10112, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6335': { 'ID':10113, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6336': { 'ID':10114, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6337': { 'ID':10115, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6338': { 'ID':10116, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6339': { 'ID':10117, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6340': { 'ID':10118, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6341': { 'ID':10119, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6342': { 'ID':10120, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6343': { 'ID':10121, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6344': { 'ID':10122, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6345': { 'ID':10123, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6346': { 'ID':10124, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6347': { 'ID':10125, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6348': { 'ID':10126, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6349': { 'ID':10127, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6350': { 'ID':10128, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6351': { 'ID':10129, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6352': { 'ID':10130, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6353': { 'ID':10131, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6354': { 'ID':10132, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6355': { 'ID':10133, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6356': { 'ID':10134, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6357': { 'ID':10135, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6358': { 'ID':10136, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6359': { 'ID':10137, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6360': { 'ID':10138, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6361': { 'ID':10139, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6362': { 'ID':10140, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6363': { 'ID':10141, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6364': { 'ID':10142, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6365': { 'ID':10143, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6366': { 'ID':10144, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6367': { 'ID':10145, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6368': { 'ID':10146, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6369': { 'ID':10147, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6370': { 'ID':10148, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6371': { 'ID':10149, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6372': { 'ID':10150, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6373': { 'ID':10151, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6374': { 'ID':10152, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6375': { 'ID':10153, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6376': { 'ID':10154, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6377': { 'ID':10155, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6378': { 'ID':10156, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6379': { 'ID':10157, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6380': { 'ID':10158, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6381': { 'ID':10159, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6382': { 'ID':10160, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6383': { 'ID':10161, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6384': { 'ID':10162, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6385': { 'ID':10163, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6386': { 'ID':10164, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6387': { 'ID':10165, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6388': { 'ID':10166, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6389': { 'ID':10167, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6390': { 'ID':10168, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6391': { 'ID':10169, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6392': { 'ID':10170, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6393': { 'ID':10171, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6394': { 'ID':10172, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6395': { 'ID':10173, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6396': { 'ID':10174, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6397': { 'ID':10175, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6398': { 'ID':10176, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6399': { 'ID':10177, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6400': { 'ID':10178, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6401': { 'ID':10179, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6402': { 'ID':10180, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6403': { 'ID':10181, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6404': { 'ID':10182, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6405': { 'ID':10183, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6406': { 'ID':10184, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6407': { 'ID':10185, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6408': { 'ID':10186, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6409': { 'ID':10187, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6410': { 'ID':10188, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6411': { 'ID':10189, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6412': { 'ID':10190, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6413': { 'ID':10191, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6414': { 'ID':10192, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6415': { 'ID':10193, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6416': { 'ID':10194, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6417': { 'ID':10195, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6418': { 'ID':10196, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6419': { 'ID':10197, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6420': { 'ID':10198, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6421': { 'ID':10199, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6422': { 'ID':10200, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6423': { 'ID':10201, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6424': { 'ID':10202, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6425': { 'ID':10203, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6426': { 'ID':10204, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6427': { 'ID':10205, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6428': { 'ID':10206, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6429': { 'ID':10207, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6430': { 'ID':10208, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6431': { 'ID':10209, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6432': { 'ID':10210, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6433': { 'ID':10211, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6434': { 'ID':10212, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6435': { 'ID':10213, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6436': { 'ID':10214, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6437': { 'ID':10215, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6438': { 'ID':10216, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6439': { 'ID':10217, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6440': { 'ID':10218, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6441': { 'ID':10219, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6442': { 'ID':10220, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6443': { 'ID':10221, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6444': { 'ID':10222, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6445': { 'ID':10223, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6446': { 'ID':10224, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6447': { 'ID':10225, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6448': { 'ID':10226, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6449': { 'ID':10227, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6450': { 'ID':10228, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6451': { 'ID':10229, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6452': { 'ID':10230, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6453': { 'ID':10231, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6454': { 'ID':10232, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6455': { 'ID':10233, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6456': { 'ID':10234, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6457': { 'ID':10235, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6458': { 'ID':10236, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6459': { 'ID':10237, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6460': { 'ID':10238, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6461': { 'ID':10239, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6462': { 'ID':10240, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6463': { 'ID':10241, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6464': { 'ID':10242, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6465': { 'ID':10243, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6466': { 'ID':10244, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6467': { 'ID':10245, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6468': { 'ID':10246, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6469': { 'ID':10247, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6470': { 'ID':10248, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6471': { 'ID':10249, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6472': { 'ID':10250, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6473': { 'ID':10251, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6474': { 'ID':10252, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6475': { 'ID':10253, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, +} diff --git a/trovis557x/assets/todo b/trovis557x/assets/todo new file mode 100644 index 000000000..4d15c41c4 --- /dev/null +++ b/trovis557x/assets/todo @@ -0,0 +1 @@ +On ToDo list. diff --git a/trovis557x/plugin.yaml b/trovis557x/plugin.yaml new file mode 100644 index 000000000..3be0f10cd --- /dev/null +++ b/trovis557x/plugin.yaml @@ -0,0 +1,138 @@ +# Metadata for the Smart-Plugin + + +plugin: + + type: interface + description: + de: 'Plugin zum Auslesen von SAMSON TROVIS 557x Heizungsreglern' + en: 'Plugin to read out SAMSON TROVIS 557x heating controllers' + maintainer: Tom-Bom-badil +# tester: # Who tests this plugin? + state: develop # change to ready when done with development + keywords: samson trovis 5576 iot + documentation: https://github.com/Tom-Bom-badil/samson_trovis_557x/wiki + support: https://knx-user-forum.de/forum/supportforen/smarthome-py/1390281-trovis-557x-heizungsregler-plugin + version: 0.1.a + sh_minversion: 1.5 +# sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) + multi_instance: False + restartable: unknown + classname: trovis557x + + +item_attributes: + + type: + type: str + mandatory: True + description: + de: 'Den Typ aller verwendeten Items vorerst auf list setzen (wird noch geändert)' + en: 'Set all items in use to type list (will be changed lateron)' + + desc: + type: str + mandatory: False + description: + de: 'Beschreibung des Items' + en: 'Description of the item' + + trovis557x_var: + type: str + mandatory: True + description: + de: 'Kennzeichnet das Item zur Benutzung durch das Plugin (Kurznamen des gewünschten Wertes/Bits hier zuweisen)' + en: 'Marks the item for use by the plugin (the short name of the requested register/coil must be assigned here)' + + liste: + type: list + mandatory: False + description: + de: 'Enthält alle Item-Informationen (Buswert, umgerechneter Wert, Einheit oder Listentext)' + en: 'Contains the full item information (bus value, real value, unit or list text)' + + visu_acl: + type: str + mandatory: False + description: + de: 'Alle Items sollten für die Visu auf nur lesen gesetzt werden' + en: 'You shopuld set all items for the visu to read only' + + +parameters: + + cycle: + type: int + default: 60 + description: + de: 'Ausleseintervall' + en: 'Reading interval' + + model: + type: int + default: 5576 + description: + de: 'Modell des Heizungsreglers (5573, 5576, 5578, 5579)' + en: 'Model of the heting controller (5573, 5576, 5578, 5579)' + + revision: + type: int + default: 003 + description: + # Steht auf dem Aufkleber auf der Seite des Reglers + de: 'Baureihe des Heizungsreglers (001, 002, 003 usw)' + en: 'Revision of the heating controller (001, 002, 003 usw)' + + modbus_speed: + type: int + default: 19200 + description: + de: 'Modbus-Geschwindigkeit (Trovis: PA6 - Modbus, Baudrate)' + en: 'Modbus speed (Trovis: PA6 - Modbus, Baudrate)' + + modbus_port: + type: str + default: '/dev/ttytrovis' + # USB: z.B./eg. /dev/ttyUSB0, /dev/ttyUSB1, /dev/ttyAMA0 + # chmod 777 /dev/ wird empfohlen / is recommended + description: + de: 'Modbus-Port, über den die Trovis verbunden ist' + en: 'Modbus Port the Trovis is connected through' + + modbus_trovis_address: + type: int + # Unbedingt richtige Adresse in der Trovis einstellen! + # You MUST set the right address in the Trovis! + default: 247 # !!! Standard: 255; Modbus-Spec: <=247 !!! + description: + de: 'Modbus-Adresse der Trovis (Trovis: PA6 - Modbus, ST.-NR)' + en: 'Modbus address of the Trovis (Trovis: PA6 - Modbus, ST.-NR)' + + # Diese Parameter sollten so belassen werden: + # You should leave these parameters as they are: + + modbus_mode: + type: str + default: 'rtu' + description: + de: 'Wie die Modbus-Kommunikation duchgeführt wird (zur Zeit auf rtu belassen)' + en: 'How modbus communication is done (leave to rtu, tcp not yet supported)' + + modbus_timeout: + type: num + default: 0.5 + description: + de: 'Modbus Timeout' + en: 'Modbus timeout' + + modbus_debug: + type: bool + default: False # ToDo / Einschalten des Debug-Modus noch herausfinden + description: + de: 'Debug-Meldungen von pymodbus' + en: 'Debug messages from pymodbus' + + +plugin_functions: NONE +item_structs: NONE +logic_parameters: NONE diff --git a/trovis557x/requirements.txt b/trovis557x/requirements.txt new file mode 100644 index 000000000..62220f6b1 --- /dev/null +++ b/trovis557x/requirements.txt @@ -0,0 +1 @@ +pymodbus >= 2.2.0 diff --git a/trovis557x/shNG-etc/logging.yaml b/trovis557x/shNG-etc/logging.yaml new file mode 100644 index 000000000..f1b6e2d7b --- /dev/null +++ b/trovis557x/shNG-etc/logging.yaml @@ -0,0 +1,7 @@ +# uncomment only if you want to have debug messages +# WARNING - can produce big amounts of data within short time + +# loggers: +# plugins.trovis557x: +# handlers: [shng_details_file] +# level: DEBUG diff --git a/trovis557x/shNG-etc/plugin.yaml b/trovis557x/shNG-etc/plugin.yaml new file mode 100644 index 000000000..2a9cf783b --- /dev/null +++ b/trovis557x/shNG-etc/plugin.yaml @@ -0,0 +1,4 @@ +trovis557x: + class_name: trovis557x + class_path: plugins.trovis557x + cycle: '60' diff --git a/trovis557x/shNG-items/trovis.yaml b/trovis557x/shNG-items/trovis.yaml new file mode 100644 index 000000000..c07ab0901 --- /dev/null +++ b/trovis557x/shNG-items/trovis.yaml @@ -0,0 +1,911 @@ +# Item file für smartHomeNG (Trovis-Plugin) + +# Hinweis 1: +############ +# Das hier unter das jeweilige Item kopieren, falls einmal alle seine Einzelwerte gebraucht werden. +# Danach stehen dann die zusätzlichen Items item.buswert, item.wert und item.einheit zu Verfügung. +# Es wird dafür das vom Plugin befüllte Attribut 'liste' des Hauptitems ausgewertet (siehe Admin-IF). +# Die Abfrage 'len(...)' verhindert eine Fehlermeldung beim Starten von shNG (Abfangen von init/None). +# +# on_change: # Hier werden Buswert, Wert und Einheit geschrieben +# - .buswert = sh..self.conf['liste'][0] if len(sh..self.conf['liste'])==3 else None +# - .wert = sh..self.conf['liste'][1] if len(sh..self.conf['liste'])==3 else None +# - .einheit = sh..self.conf['liste'][2] if len(sh..self.conf['liste'])==3 else None +# buswert: # Rohwert; meist 0..65535 oder -32767..32767. +# type: num # z.B. 215 +# wert: # Der umgerechnete (fertige) Wert; entspricht Value. +# type: num # z.B. 21.5 (215 * Faktor 0.1, 1 Nachkommastelle) +# einheit: # Die Einheit (für Register) oder der Listentext (für Register+Coils). +# type: str # z.B. '°C' oder 'an'/'aus'. Die ausgelesene 215 wird so 21.5 °C. +# +# +# Hinweis 2: +############ +# Zur Aufzeichnung von Werten an den gewünschten Items das Attribut 'database: True' hinzufügen. +# Dies erfordert natürlich, dass das Database-Plugin bereits funktionierend in shNG eingebunden ist. + + +heizung: + + + ################# Grundsätzliche Angaben ########################## + regler: + + modell: + desc: Modellbezeichnung + type: num + trovis557x_var: Geraetekennung + liste: [] + visu_acl: r + + seriennummer: + desc: Regler-ID + type: num + trovis557x_var: Regler-ID + liste: [] + visu_acl: r + + firmware: + desc: Firmwareversion + type: num + trovis557x_var: Firmware-Version + liste: [] + visu_acl: r + + hardware: + desc: Hardwareversion + type: num + trovis557x_var: Hardware-Version + liste: [] + visu_acl: r + + anlage: + desc: Hydraulikschema + type: num + trovis557x_var: Anlage + liste: [] + visu_acl: r + + sonderfunktionen: + desc: Sonderfunktionen + type: num + trovis557x_var: Sonderfunktionen + liste: [] + visu_acl: r + + sperrung_handbetrieb: + desc: Sperrung der Handebenen + type: bool + trovis557x_var: FB21SperrHand + liste: [] + visu_acl: r + + sperrung_drehschalter: + desc: Sperrung der Drehschalter + type: bool + trovis557x_var: FB22SperrDreh + liste: [] + visu_acl: r + + fehlerstatus: + desc: Fehlerstatus + type: num + trovis557x_var: FehlerstatusReg + liste: [] + visu_acl: r + + sammelstoerung: + desc: Regler meldet Störung + type: num + trovis557x_var: Sammelstoerung + liste: [] + visu_acl: r + + + ################# Alle zeitbezogenen Werte ########################## + + zeit: + + jahr: + desc: Aktuelles Jahr + type: num + trovis557x_var: Jahr + liste: [] + visu_acl: r + + datum: + desc: Aktuelles Datum + type: str + trovis557x_var: Datum + liste: [] + visu_acl: r + + uhrzeit: + desc: Aktuelle Uhrzeit + type: str + trovis557x_var: Uhrzeit + liste: [] + visu_acl: r + + sommer_ein: + desc: Sommerbetrieb ein (Datum) + type: str + trovis557x_var: SommerDatAnf + liste: [] + visu_acl: r + + sommer_ein_tage: + desc: Anzahl Übergangstage für Sommerbetrieb + type: num + trovis557x_var: SommerTagzein + liste: [] + visu_acl: r + + sommer_aus: + desc: Sommerbetrieb aus (Datum) + type: str + trovis557x_var: SommerDatEnd + liste: [] + visu_acl: r + + sommer_aus_tage: + desc: Anzahl Übergangstage für Winterbetrieb + type: num + trovis557x_var: SommerTagzaus + liste: [] + visu_acl: r + + desinfektionstag: + desc: Wochentag der thermischen Desinfektion + type: num + trovis557x_var: ThermDesTag + liste: [] + visu_acl: r + + desinfektionsstart: + desc: Start der thermischen Desinfektion (Uhrzeit) + type: str + trovis557x_var: ThermDesStart + liste: [] + visu_acl: r + + desinfektionsende: + desc: Ende der thermischen Desinfektion (Uhrzeit) + type: str + trovis557x_var: ThermDesStop + liste: [] + visu_acl: r + + desinfektionsdauer: + desc: Haltezeit der thermischen Desinfektion + type: num + trovis557x_var: ThermDesHalte + liste: [] + visu_acl: r + + auto_sommerzeit: + desc: Automatische Sommer-/Winterzeitumschaltung + type: bool + trovis557x_var: FB08AutSommZeit + liste: [] + visu_acl: r + + sommerbetrieb: + desc: Regler hat auf Sommerbetrieb geschaltet + type: num + trovis557x_var: Sommerbetrieb + liste: [] + visu_acl: r + + + ################# Alle Fühler / Sensoren ########################## + + sensoren: + + af1: + desc: Außenfühler 1 + type: num + trovis557x_var: AussentempAF1 + liste: [] + visu_acl: r + # database: True + + # af2: + # desc: Außenfühler 2 (Anlage 2.1 - unbenutzt) + # type: num + # trovis557x_var: AussentempAF2 + # liste: [] + # visu_acl: r + + vf1: + desc: Vorlauffühler 1 (Anlage 2.1 - sekundär, Heizkreis 1) + type: num + trovis557x_var: VorlauftempVF1 + liste: [] + visu_acl: r + # database: True + + # vf2: + # desc: Vorlauffühler 2 (Anlage 2.1 - unbenutzt) + # type: num + # trovis557x_var: VorlauftempVF2 + # liste: [] + # visu_acl: r + + # vf3: + # desc: Vorlauffühler 3 (Anlage 2.1 - unbenutzt) + # type: num + # trovis557x_var: VorlauftempVF3 + # liste: [] + # visu_acl: r + + # vf4: + # desc: Vorlauffühler 4 (Anlage 2.1 - unbenutzt) + # type: num + # trovis557x_var: VorlauftempVF4 + # liste: [] + # visu_acl: r + + sf1: + desc: Speicherfühler 1 (Warmwasserspeicher) + type: num + trovis557x_var: SpeichertempSF1 + liste: [] + visu_acl: r + # database: True + + # sf2: + # desc: Speicherfühler 2 (Anlage 2.1 - unbenutzt) + # type: num + # trovis557x_var: SpeichertempSF2 + # liste: [] + # visu_acl: r + + # sf3: + # desc: Speicherfühler 3 (Anlage 2.1 - unbenutzt) + # type: num + # trovis557x_var: SpeichertempSF3 + # liste: [] + # visu_acl: r + + ruef1: + desc: Rücklauffühler 1 (Anlage 2.1 - Primärkreis) + type: num + trovis557x_var: RueckltempRueF1 + liste: [] + visu_acl: r + # database: True + + # ruef2: + # desc: Rücklauffühler 2 (Anlage 2.1 - unbenutzt) + # type: num + # trovis557x_var: RueckltempRueF2 + # liste: [] + # visu_acl: r + + # fg1: + # desc: Ferngeber 1 (Anlage 2.1 - unbenutzt) + # type: num + # trovis557x_var: RueckltempRueF1 + # liste: [] + # visu_acl: r + + # fg2: + # desc: Ferngeber 2 (Anlage 2.1 - unbenutzt) + # type: num + # trovis557x_var: RueckltempRueF1 + # liste: [] + # visu_acl: r + + + ################# Regelkreis 1 (Heizkreis 1) ########################## + + rk1: + + status: + + handbetrieb_rk1: + desc: Status Handbetrieb Heizkreis RK1 + type: bool + trovis557x_var: StatusHandbRk1 + liste: [] + visu_acl: r + + autobetrieb_rk1: + desc: Zeitabhaengiger Betrieb Rk1 (Automatik) + type: bool + trovis557x_var: AutoRk1 + liste: [] + visu_acl: r + + tagbetrieb_rk1: + desc: Tagbetrieb Rk1 + type: bool + trovis557x_var: TagbetriebRk1 + liste: [] + visu_acl: r + + nachtbetrieb_rk1: + desc: Nachtbetrieb Rk1 + type: bool + trovis557x_var: NachtbetriebRk1 + liste: [] + visu_acl: r + + standbybetrieb_rk1: + desc: Standby-Betrieb Rk1 + type: bool + trovis557x_var: StandbyRk1 + liste: [] + visu_acl: r + + stuetzbetrieb_rk1: + desc: Stuetzbetrieb Rk1 + type: bool + trovis557x_var: StuetzbtrRk1 + liste: [] + visu_acl: r + + aufheizbetrieb_rk1: + desc: Aufheizbetrieb Rk1 + type: bool + trovis557x_var: AufheizbtrRk1 + liste: [] + visu_acl: r + + at_abschaltung_rk1: + desc: AT-abhaengige Heizungsabschaltung Rk1 aktiv + type: bool + trovis557x_var: HeizausRk1 + liste: [] + visu_acl: r + + heizkurve: + + niveau: + desc: Niveau Temperaturverschiebung + type: num + trovis557x_var: NivHeizKLRk1 + liste: [] + visu_acl: r + + steigung: + desc: Steigung (Temperaturanstieg) + type: num + trovis557x_var: SteigHeizKLRk1 + liste: [] + visu_acl: r + + tag_soll: + desc: Raumsollwert Tag + type: num + trovis557x_var: TagSollRk1 + liste: [] + visu_acl: r + + nacht_soll: + desc: Raumsollwert Nacht + type: num + trovis557x_var: NachtSollRk1 + liste: [] + visu_acl: r + + vorlauf_min: + desc: Minimaler Vorlaufwert + type: num + trovis557x_var: MinVorlRk1 + liste: [] + visu_acl: r + + vorlauf_soll: + desc: Vorlauf Sollwert + type: num + trovis557x_var: VorlSollwRk1 + liste: [] + visu_acl: r + + vorlauf_max: + desc: Maximaler Vorlaufwert + type: num + trovis557x_var: MaxVorlRk1 + liste: [] + visu_acl: r + + ruecklauf_fusspunkt: + desc: Fusspunkt Rücklaufkurve + type: num + trovis557x_var: FussRuecklRk1 + liste: [] + visu_acl: r + + ruecklauf_niveau: + desc: Niveau Rücklaufkurve + type: num + trovis557x_var: NivRuecklKLRk1 + liste: [] + visu_acl: r + + ruecklauf_steigung: + desc: Steigung Rücklaufkurve + type: num + trovis557x_var: StgRuecklKLRk1 + liste: [] + visu_acl: r + + ruecklauf_max: + desc: Maximale Rücklauftemperatur + type: num + trovis557x_var: MaxRuecklRk1 + liste: [] + visu_acl: r + + schalter: + desc: Schalter Oben + type: num + trovis557x_var: Schalteroben + liste: [] + visu_acl: r + + betriebsart: + desc: Betriebsart + type: num + trovis557x_var: BetriebsArtRk1 + liste: [] + visu_acl: r + + betriebsart_ebene: + desc: Autark oder Leitsystem + type: num + trovis557x_var: EBNBetrArtRk1 + liste: [] + visu_acl: r + + stellsignal: + desc: Stellsignal Ventil (0-100%) + type: num + trovis557x_var: StellsignalRk1 + liste: [] + visu_acl: r + + stellsignal_ebene: + desc: Autark oder Leitsystem + type: num + trovis557x_var: EBNStellsigRk1 + liste: [] + visu_acl: r + + umwaelzpumpe: + desc: Umwälzpumpe UP1 läuft + type: num + trovis557x_var: BinaerausgBA1 + liste: [] + visu_acl: r + + umwaelzpumpe_ebene: + desc: Autark oder Leitsystem + type: num + trovis557x_var: EBNBinaerBA1 + liste: [] + visu_acl: r + + frostschutz: + desc: Frostschutzbetrieb + type: num + trovis557x_var: FrostschutzRk1 + liste: [] + visu_acl: r + + ################# Regelkreis 2 (Heizkreis 2) ########################## + + rk2: + + status: + + handbetrieb_rk2: + desc: Status Handbetrieb Heizkreis Rk2 + type: bool + trovis557x_var: StatusHandbRk2 + liste: [] + visu_acl: r + + autobetrieb_rk2: + desc: Zeitabhaengiger Betrieb Rk2 (Automatik) + type: bool + trovis557x_var: AutoRk2 + liste: [] + visu_acl: r + + tagbetrieb_rk2: + desc: Tagbetrieb Rk2 + type: bool + trovis557x_var: TagbetriebRk2 + liste: [] + visu_acl: r + + nachtbetrieb_rk2: + desc: Nachtbetrieb Rk2 + type: bool + trovis557x_var: NachtbetriebRk2 + liste: [] + visu_acl: r + + standbybetrieb_rk2: + desc: Standby-Betrieb Rk2 + type: bool + trovis557x_var: StandbyRk2 + liste: [] + visu_acl: r + + stuetzbetrieb_rk2: + desc: Stuetzbetrieb Rk2 + type: bool + trovis557x_var: StuetzbtrRk2 + liste: [] + visu_acl: r + + aufheizbetrieb_rk2: + desc: Aufheizbetrieb Rk2 + type: bool + trovis557x_var: AufheizbtrRk2 + liste: [] + visu_acl: r + + at_abschaltung_rk2: + desc: AT-abhaengige Heizungsabschaltung Rk2 aktiv + type: bool + trovis557x_var: HeizausRk2 + liste: [] + visu_acl: r + + heizkurve: + + niveau: + desc: Niveau Temperaturverschiebung + type: num + trovis557x_var: NivHeizKLRk2 + liste: [] + visu_acl: r + + steigung: + desc: Steigung (Temperaturanstieg) + type: num + trovis557x_var: SteigHeizKLRk2 + liste: [] + visu_acl: r + + tag_soll: + desc: Raumsollwert Tag + type: num + trovis557x_var: TagSollRk2 + liste: [] + visu_acl: r + + nacht_soll: + desc: Raumsollwert Nacht + type: num + trovis557x_var: NachtSollRk2 + liste: [] + visu_acl: r + + vorlauf_min: + desc: Minimaler Vorlaufwert + type: num + trovis557x_var: MinVorlRk2 + liste: [] + visu_acl: r + + vorlauf_soll: + desc: Vorlauf Sollwert + type: num + trovis557x_var: VorlSollwRk2 + liste: [] + visu_acl: r + + vorlauf_max: + desc: Maximaler Vorlaufwert + type: num + trovis557x_var: MaxVorlRk2 + liste: [] + visu_acl: r + + ruecklauf_fusspunkt: + desc: Fusspunkt Rücklaufkurve + type: num + trovis557x_var: FussRuecklRk2 + liste: [] + visu_acl: r + + ruecklauf_niveau: + desc: Niveau Rücklaufkurve + type: num + trovis557x_var: NivRuecklKLRk2 + liste: [] + visu_acl: r + + ruecklauf_steigung: + desc: Steigung Rücklaufkurve + type: num + trovis557x_var: StgRuecklKLRk2 + liste: [] + visu_acl: r + + ruecklauf_max: + desc: Maximale Rücklauftemperatur + type: num + trovis557x_var: MaxRuecklRk2 + liste: [] + visu_acl: r + + schalter: + desc: Schalter Mitte + type: num + trovis557x_var: Schaltermitte + liste: [] + visu_acl: r + + betriebsart: + desc: Betriebsart + type: num + trovis557x_var: BetriebsArtRk2 + liste: [] + visu_acl: r + + betriebsart_ebene: + desc: Autark oder Leitsystem + type: num + trovis557x_var: EBNBetrArtRk2 + liste: [] + visu_acl: r + + stellsignal: + desc: Stellsignal Ventil (0-100%) + type: num + trovis557x_var: StellsignalRk2 + liste: [] + visu_acl: r + + stellsignal_ebene: + desc: Autark oder Leitsystem + type: num + trovis557x_var: EBNStellsigRk2 + liste: [] + visu_acl: r + + umwaelzpumpe: + desc: Umwälzpumpe UP2 läuft + type: num + trovis557x_var: BinaerausgBA2 + liste: [] + visu_acl: r + + umwaelzpumpe_ebene: + desc: Autark oder Leitsystem + type: num + trovis557x_var: EBNBinaerBA2 + liste: [] + visu_acl: r + + frostschutz: + desc: Frostschutzbetrieb + type: num + trovis557x_var: FrostschutzRk2 + liste: [] + visu_acl: r + + ################# Regelkreis 1 (Warmwasser) ########################## + + rk3: + + status: + + handbetrieb_tw: + desc: Status Handbetrieb Trinkwasser + type: bool + trovis557x_var: StatusHandbTW + liste: [] + visu_acl: r + + autobetrieb_tw: + desc: Zeitabhaengiger Betrieb Trinkwasser (Automatik) + type: bool + trovis557x_var: AutoTW + liste: [] + visu_acl: r + + desinfektion_tw: + desc: Thermische Desinfektion Trinkwasserkreis aktiv + type: bool + trovis557x_var: ThermDesTW + liste: [] + visu_acl: r + + vorrang_tw: + desc: Vorrangbetrieb Trinkwasserkreis aktiv + type: bool + trovis557x_var: VorrangTW + liste: [] + visu_acl: r + + standbybetrieb_tw: + desc: Standby-Betrieb Trinkwasser + type: bool + trovis557x_var: StandbyTW + liste: [] + visu_acl: r + + frostschutz_tw: + desc: Frostschutzbetrieb Trinkwasser + type: bool + trovis557x_var: FrostschutzTW + liste: [] + visu_acl: r + + zwangsladung_tw: + desc: Zwangsladung Trinkwasserspeicher + type: bool + trovis557x_var: ZwangsladTW + liste: [] + visu_acl: r + + heizkurve: + + minsoll: + desc: Minimale Solltemperatur Warmwasser + type: num + trovis557x_var: MinTWSollw + liste: [] + werte: [20.0,25.0,30.0,35.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0] + visu_acl: r + + haltewert: + desc: Minimale Temperatur Trinkwasser + type: num + trovis557x_var: TWHaltewert + liste: [] + visu_acl: r + + solltemperatur: + desc: Solltemperatur Warmwasser + type: num + trovis557x_var: TWSollw + liste: [] + werte: [20.0,25.0,30.0,35.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0] + visu_acl: r + + maxsoll: + desc: Maximale Solltemperatur Warmwasser + type: num + trovis557x_var: MaxTWSollw + liste: [] + werte: [20.0,25.0,30.0,35.0,40.0,45.0,50.0,55.0,60.0,65.0,70.0,75.0,80.0,85.0,90.0] + visu_acl: r + + schaltdifferenz: + desc: Schaltdifferenz Trinkwasser (bzgl. Solltemperatur) + type: num + trovis557x_var: SchaltdiffTW + liste: [] + visu_acl: r + + ueberhoehung: + desc: Ladetemperaturüberhöhung Trinkwasser (bzgl. Solltemperatur) + type: num + trovis557x_var: LadTempdiffTW + liste: [] + visu_acl: r + + maxtemp: + desc: Maximale Ladetemperatur Trinkwasser + type: num + trovis557x_var: MaxLadeTW + liste: [] + visu_acl: r + + desinfektionstemperatur: + desc: Temperatur der thermischen Desinfektion + type: num + trovis557x_var: ThermDesSollw + liste: [] + visu_acl: r + + schalter: + desc: Schalter Unten + type: num + trovis557x_var: Schalterunten + liste: [] + visu_acl: r + + betriebsart: + desc: Betriebsart + type: num + trovis557x_var: BetriebsArtTW + liste: [] + visu_acl: r + + betriebsart_ebene: + desc: Autark oder Leitsystem + type: num + trovis557x_var: EBNBetrArtTW + liste: [] + visu_acl: r + + ladepumpe: + desc: Speicherladepumpe SLP läuft + type: num + trovis557x_var: BinaerausgBA4 + liste: [] + visu_acl: r + + ladepumpe_ebene: + desc: Autark oder Leitsystem + type: num + trovis557x_var: EBNBinaerBA4 + liste: [] + visu_acl: r + + zirkulationspumpe: + desc: Zirkulationspumpe ZP läuft + type: num + trovis557x_var: BinaerausgBA5 + liste: [] + visu_acl: r + + zirkulationspumpe_ebene: + desc: Autark oder Leitsystem + type: num + trovis557x_var: EBNBinaerBA5 + liste: [] + visu_acl: r + + desinfektion: + desc: Thermische Desinfektion läuft + type: num + trovis557x_var: FB14ThermDes + liste: [] + visu_acl: r + + + + ################# Ab hier nur für interne Tests beim Entwickeln ########################## + + + + ################################# + # Test von parse_item + + # Provozierter_fehler: + + # fehlerhaft1: + # desc: Variablenname nicht in den Dicts ===> Fehler im Log + # type: num + # trovis557x_var: xyzzyx + # visu_acl: r + + + ################################# + # Alternative zum on_update (weiter ausprobieren, welche Variante besser ist): + + # enforce_updates: True + + # buswert: # Rohwert; meist 0..65535 oder -32767..32767. + # type: num # z.B. 215 + # eval: sh...conf['liste'][0] if len(sh...conf['liste'])==3 else None + # eval_trigger: .. + + # wert: # Der umgerechnete (fertige) Wert. + # type: num # z.B. 21.5 (215 * Faktor 0.1, 1 Nachkommastelle) + # eval: sh...conf['liste'][1] if len(sh...conf['liste'])==3 else None + # eval_trigger: .. + + # einheit: # Die Einheit (Register) oder der Listentext (Register, Coils). + # type: str # z.B. '°C'. Die ausgelesene 215 wird so 21.5 °C. + # eval: sh...conf['liste'][2] if len(sh...conf['liste'])==3 else None + # eval_trigger: .. + + + ################################# + # Kompakte Alternative zu den eval's (auf dem Parent-Item setzen) + # on_change: # Hier werden Buswert, Wert und Einheit geschrieben + # - .buswert = sh..self.conf['liste'][0] if len(sh..self.conf['liste'])==3 else None + # - .wert = sh..self.conf['liste'][1] if len(sh..self.conf['liste'])==3 else None + # - .einheit = sh..self.conf['liste'][2] if len(sh..self.conf['liste'])==3 else None diff --git a/trovis557x/templates/5576-003_coils.py b/trovis557x/templates/5576-003_coils.py new file mode 100644 index 000000000..f82f78557 --- /dev/null +++ b/trovis557x/templates/5576-003_coils.py @@ -0,0 +1,385 @@ +coils_tabelle = { + 'Sammelstoerung': { 'ID': 0, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Sammelstoerung, Fehlerstatusregister HR40150 > 0' }, + 'Dateneingaktiv': { 'ID': 1, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Dateneingabe aktiv' }, + 'Dateneingstattg': { 'ID': 2, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Dateneingabe stattgefunden' }, + 'SammelEbenenbit': { 'ID': 3, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Sammel-Ebenenbit CL88-CL121' }, + 'StatusHandbRk1': { 'ID': 4, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Handbetrieb Heizkreis RK1' }, + 'StatusHandbRk2': { 'ID': 5, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Handbetrieb Heizkreis RK2' }, + 'Unbekannt-6': { 'ID': 6, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'StatusHandbTW': { 'ID': 7, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Handbetrieb TW' }, + 'Sommerbetrieb': { 'ID': 8, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Sommerbetrieb aktiv (CO5, Fb04)' }, + 'WMZKomStoer#1': { 'ID': 9, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Kommunikationsstoerung Zaehlerbus WMZ #1 (CO6, Fb10)' }, + 'WMZKomStoer#2': { 'ID': 10, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Kommunikationsstoerung Zaehlerbus WMZ #2 (CO6, Fb10)' }, + 'WMZKomStoer#3': { 'ID': 11, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Kommunikationsstoerung Zaehlerbus WMZ #3 (CO6, Fb10)' }, + 'WMZFehlerWMZ#1': { 'ID': 12, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Fehler WMZ #1 (CO6, Fb10)' }, + 'WMZFehlerWMZ#2': { 'ID': 13, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Fehler WMZ #2 (CO6, Fb10)' }, + 'WMZFehlerWMZ#3': { 'ID': 14, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Fehler WMZ #3 (CO6, Fb10)' }, + 'WMZ-Auslesung#1': { 'ID': 15, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1 = 1xAuslesung WMZ #1 veranlassen' }, + 'WMZ-Auslesung#2': { 'ID': 16, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1 = 1xAuslesung WMZ #2 veranlassen' }, + 'WMZ-Auslesung#3': { 'ID': 17, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1 = 1xAuslesung WMZ #3 veranlassen' }, + 'Unbekannt-18': { 'ID': 18, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-19': { 'ID': 19, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-20': { 'ID': 20, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'WMZDflussBeg#1': { 'ID': 21, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Durchflussbegrenzung #1 aktiv (CO5,Fb11/CO6,Fb11)' }, + 'WMZLeistBeg#1': { 'ID': 22, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Leistungsbegrenzung #1 aktiv (CO5,Fb10/ CO6,Fb12)' }, + 'BinaereingBE01': { 'ID': 23, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE01' }, + 'BinaereingBE02': { 'ID': 24, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE02' }, + 'BinaereingBE03': { 'ID': 25, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE03' }, + 'BinaereingBE04': { 'ID': 26, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE04' }, + 'BinaereingBE05': { 'ID': 27, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE05' }, + 'BinaereingBE06': { 'ID': 28, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE06' }, + 'BinaereingBE07': { 'ID': 29, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE07' }, + 'BinaereingBE08': { 'ID': 30, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE08' }, + 'BinaereingBE09': { 'ID': 31, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE09' }, + 'BinaereingBE10': { 'ID': 32, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE10' }, + 'BinaereingBE11': { 'ID': 33, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE11' }, + 'BinaereingBE12': { 'ID': 34, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE12' }, + 'BinaereingBE13': { 'ID': 35, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE13' }, + 'BinaereingBE14': { 'ID': 36, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE14' }, + 'BinaereingBE15': { 'ID': 37, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE15' }, + 'BinaereingBE16': { 'ID': 38, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE16' }, + 'BinaereingBE17': { 'ID': 39, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Status Binaereingang BE17' }, + 'BinaerausgBA1': { 'ID': 56, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Umwaelzpumpe Rk1 (UP1 Netzseite, CL96)' }, + 'BinaerausgBA2': { 'ID': 57, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Umwaelzpumpe Rk2 (UP2, Netzseite, CL97)' }, + 'Unbekannt-58': { 'ID': 58, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'BinaerausgBA4': { 'ID': 59, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Speicherladepumpe TW (SLP, CL99)' }, + 'BinaerausgBA5': { 'ID': 60, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Zirkulationspumpe (ZP, CL100)' }, + 'BinaerausgBA6': { 'ID': 61, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_HZ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Rk13-Pkt Zu-Signal (Vorgabe in HR40107)' }, + 'BinaerausgBA7': { 'ID': 62, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_HA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Rk13-Pkt Auf-Signal (HR40107), 2-Pkt (CL102)' }, + 'BinaerausgBA8': { 'ID': 63, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_HZ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Rk23-Pkt Zu-Signal (Vorgabe in HR40109)' }, + 'BinaerausgBA9': { 'ID': 64, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_HA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Rk23-Pkt Auf-Signal (HR40109), 2-Pkt (CL104)' }, + 'Unbekannt-65': { 'ID': 65, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-66': { 'ID': 66, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'BinaerausgBA12': { 'ID': 67, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Pumpenmanagement UP1Ein/Aus (CL107)' }, + 'BinaerausgBA13': { 'ID': 68, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Pumpenmanagement Drehzahl UP1(CL108)' }, + 'EBNAussentemAF1': { 'ID': 87, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Aussentemperatur AF1 (HR40010)' }, + 'EBNBetrArtRk1': { 'ID': 88, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Betriebsart Rk1 (HR40106)' }, + 'EBNStellsigRk1': { 'ID': 89, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Stellsignal Rk1 (HR40107)' }, + 'EBNBetrArtRk2': { 'ID': 90, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Betriebsart Rk2 (HR40108)' }, + 'EBNStellsigRk2': { 'ID': 91, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Stellsignal Rk2 (HR40109)' }, + 'Unbekannt-92': { 'ID': 92, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-93': { 'ID': 93, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'EBNBetrArtTW': { 'ID': 94, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Betriebsart TW (HR40112)' }, + 'EBNBinaerBA1': { 'ID': 95, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Umwaelzpumpe Rk1 (UP1, Netzseite, CL57)' }, + 'EBNBinaerBA2': { 'ID': 96, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Umwaelzpumpe Rk2 (UP2, Netzseite, CL58)' }, + 'Unbekannt-97': { 'ID': 97, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'EBNBinaerBA4': { 'ID': 98, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Speicherladepumpe TW (SLP, CL60)' }, + 'EBNBinaerBA5': { 'ID': 99, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Zirkulationspumpe (ZP, CL61)' }, + 'EBNBinaerBA6': { 'ID': 100, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Binaer BA6' }, + 'EBNBinaerBA7': { 'ID': 101, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Rk12-Pkt-Signal (CL63)' }, + 'EBNBinaerBA8': { 'ID': 102, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Binaer BA8' }, + 'EBNBinaerBA9': { 'ID': 103, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Rk22-Pkt-Signal (CL65)' }, + 'Unbekannt-104': { 'ID': 104, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-105': { 'ID': 105, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'EBNBinaerBA12': { 'ID': 106, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Pumpenmanagement UP1 Ein/Aus (CL68)' }, + 'EBNBinaerBA13': { 'ID': 107, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Pumpenmanagement Drehzahl UP1(CL69)' }, + 'EBNAA1': { 'ID': 108, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Analogausgang 1 (0..10V)' }, + 'EBNAA2': { 'ID': 109, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Analogausgang 2 (0..10V)' }, + 'Unbekannt-110': { 'ID': 110, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'EBNSonTWSollw': { 'ID': 111, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Sonder-Trinkwassersollwert (HR41809)' }, + 'EBNSonPuffSollw': { 'ID': 112, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Sonder-Pufferspeichersollwert (HR41045)' }, + 'EBNVorlSollRk1': { 'ID': 115, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Vorlaufsollwert Rk1 (HR41000)' }, + 'EBNRueckSollRk1': { 'ID': 116, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Ruecklaufsollwert Rk1 (HR41033)' }, + 'EBNVorlSollRk2': { 'ID': 117, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Vorlaufsollwert Rk2 (HR41200)' }, + 'EBNRueckSollRk2': { 'ID': 118, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ebene Ruecklaufsollwert Rk2 (HR41233)' }, + 'Unbekannt-119': { 'ID': 119, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-120': { 'ID': 120, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-121': { 'ID': 121, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-122': { 'ID': 122, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-123': { 'ID': 123, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB01Pt1000': { 'ID': 129, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB01: Pt1000- (Pt100)- Fuehler' }, + 'FB02NTC': { 'ID': 130, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB02: NTC- (Pt100)- Fuehler' }, + 'FB03Pt500': { 'ID': 131, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB03: Pt500- (Pt100)- Fuehler' }, + 'FB04Sommerbtr': { 'ID': 132, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB04: Sommerbetrieb' }, + 'FB05VerzATAnp': { 'ID': 133, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB05: Verzoegerte Aussentemperaturanpassung fallend' }, + 'FB06VerzATAnp': { 'ID': 134, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB06: Verzoegerte Aussentemperaturanpassung steigend' }, + 'FB07Stoerausgang': { 'ID': 135, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB07: Stoermeldeausgang BA13' }, + 'FB08AutSommZeit': { 'ID': 136, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB08: Automatische Sommer-/Winterzeitumschaltung' }, + 'FB09Frostschutz': { 'ID': 137, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB09: Frostschutzprogramm (I=>FB09=0, II=>FB09=1)' }, + 'FB10LeistBeg': { 'ID': 138, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB10: Durchfluss-/Leistungsbegrenzung mit Impulsen' }, + 'FB11DflussBegmA': { 'ID': 139, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB11: Durchflussbegrenzung mit 0/4..20mA-Signal' }, + 'FB12Schleichmng': { 'ID': 140, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB12: Schleichmengenunterdrueckung per BE13' }, + 'FB13LeistBegmA': { 'ID': 141, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB13: Leistungsbegr. bas. Volumenstr. 0/4-20mA Rk1' }, + 'FB14BetrUP1': { 'ID': 142, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB14: Betrieb UP1 bei Eigenbedarf' }, + 'FB15FrgRegBE15': { 'ID': 143, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB15: Freigabe Regler an BE15 (Stdby-Betr. bE/1,0)' }, + 'FB16Ruecklbegr': { 'ID': 144, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB16: P-Verhalten bei Ruecklauftemperaturbegrenzung' }, + 'FB17UPManagmt': { 'ID': 145, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB17: Pumpenmanagement Schaltverh. BA13 (ab V1.30)' }, + 'Unbekannt-146': { 'ID': 146, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB19Tempueberw': { 'ID': 147, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB19: Temperaturueberwachung' }, + 'Unbekannt-148': { 'ID': 148, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB21SperrHand': { 'ID': 149, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB21: Sperrung der Handebenen' }, + 'FB22SperrDreh': { 'ID': 150, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB22: Sperrung der Drehschalter' }, + 'FB23AT0bis10V': { 'ID': 151, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB23: Aussentemperatur mittels 0 bis 10V erfassen' }, + 'FB01Modbus': { 'ID': 152, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB01: Modbusbetrieb' }, + 'FB0216bit': { 'ID': 153, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB02: Modbus 16-bit-Adressierung' }, + 'FB03Modem': { 'ID': 154, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB03: Modemfunktion' }, + 'FB04AutoModem': { 'ID': 155, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB04: Automatische Modemkonfiguration' }, + 'FB05SperrModem': { 'ID': 156, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB05: Sperrung der GLT-Anwahl' }, + 'FB06Anwgehend': { 'ID': 157, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB06: GLT-Anwahl auch bei gehenden Stoerungen' }, + 'FB07TimeoutGLT': { 'ID': 158, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB07: Leitsystemueberwachung' }, + 'FB08SMS': { 'ID': 159, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB08: SMS-Betrieb' }, + 'Unbekannt-160': { 'ID': 160, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB10Zaehlerbus': { 'ID': 161, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB10: Zaehlerbus-Betrieb' }, + 'FB11DflussBeg': { 'ID': 162, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB11: Durchflussbegrenzung in Rk1 mittels Zaehlerbus' }, + 'FB12LeistBeg': { 'ID': 163, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB12: Leistungsbegrenzung in Rk1 mittels Zaehlerbus' }, + 'Unbekannt-164': { 'ID': 164, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-165': { 'ID': 165, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-166': { 'ID': 166, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-167': { 'ID': 167, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB01Geraetebus': { 'ID': 175, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB01: Geraetebus' }, + 'FB02Uhrzeitsync': { 'ID': 176, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB02: Uhrzeitsynchronisation' }, + 'FB03RaumleitRk1': { 'ID': 177, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB03: Raumleitgeraet TROVIS 5570 in Rk1' }, + 'FB04RaumleitRk2': { 'ID': 178, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB04: Raumleitgeraet TROVIS 5570 in Rk2' }, + 'Unbekannt-179': { 'ID': 179, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB06SendenAF1': { 'ID': 180, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB06: Wert AF1 senden' }, + 'FB07EmpfangAF1': { 'ID': 181, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB07: Wert AF1 empfangen' }, + 'FB08SendenAF2': { 'ID': 182, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB08: Wert AF2 senden' }, + 'FB09EmpfangAF2': { 'ID': 183, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB09: Wert AF2 empfangen' }, + 'FB10SendSollRk1': { 'ID': 184, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB10: Vorlaufsollwert Rk1 senden' }, + 'FB11SendSollRk2': { 'ID': 185, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB11: Vorlaufsollwert Rk2 senden' }, + 'Unbekannt-186': { 'ID': 186, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB13SendSollTW': { 'ID': 187, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB13: Vorlaufsollwert TW senden' }, + 'FB14SendSollMax': { 'ID': 188, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB14: Maximalen Vorlaufsollwert senden' }, + 'FB15EmpfangBed': { 'ID': 189, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB15: Bedarf empfangen' }, + 'FB16Stoermeldung': { 'ID': 190, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB16: Stoermeldungen via Geraetebus' }, + 'Unbekannt-191': { 'ID': 191, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-192': { 'ID': 192, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB19AnhRueckGW': { 'ID': 193, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB19: Anhebung Ruecklauftemperaturgrenzwert' }, + 'FB20SendTW': { 'ID': 194, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB20: Trinkwassererwaermumg aktiv senden' }, + 'FB21FrgRk1Empf': { 'ID': 195, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Freigabe Rk1 empfangen' }, + 'FB22FRgRk2Empf': { 'ID': 196, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_AE', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Freigabe Rk2 empfangen' }, + 'Unbekannt-197': { 'ID': 197, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB01BE01': { 'ID': 198, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB01: 1=>Binaereingang/ 0=Sensoreingang' }, + 'FB02BE02': { 'ID': 199, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB02: 1=>Binaereingang/ 0=Sensoreingang' }, + 'FB03BE03': { 'ID': 200, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB03: 1=>Binaereingang/ 0=Sensoreingang' }, + 'FB04BE04': { 'ID': 201, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB04: 1=>Binaereingang/ 0=Sensoreingang' }, + 'FB05BE05': { 'ID': 202, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB05: 1=>Binaereingang/ 0=Sensoreingang' }, + 'FB06BE06': { 'ID': 203, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB06: 1=>Binaereingang/ 0=Sensoreingang' }, + 'Unbekannt-204': { 'ID': 204, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-205': { 'ID': 205, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB09BE09': { 'ID': 206, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB09: 1=>Binaereingang/ 0=Sensoreingang' }, + 'FB10BE10': { 'ID': 207, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB10: 1=>Binaereingang/ 0=Sensoreingang' }, + 'FB11BE11': { 'ID': 208, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB11: 1=>Binaereingang/ 0=Sensoreingang' }, + 'FB12BE12': { 'ID': 209, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB12: 1=>Binaereingang/ 0=Sensoreingang' }, + 'FB13BE13': { 'ID': 210, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB13: 1=>Binaereingang/ 0=Sensoreingang' }, + 'FB15BE15': { 'ID': 211, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB15: 1=>Binaereingang/ 0=Sensoreingang' }, + 'FB16BE16': { 'ID': 212, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB16: 1=>Binaereingang/ 0=Sensoreingang' }, + 'FB17BE17': { 'ID': 213, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB17: 1=>Binaereingang/ 0=Sensoreingang' }, + 'Unbekannt-214': { 'ID': 214, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'MeldungBE01': { 'ID': 221, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1=>Meldung bei BE=1/ 0=>Meldung bei BE=0' }, + 'MeldungBE02': { 'ID': 222, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1=>Meldung bei BE=1/ 0=>Meldung bei BE=0' }, + 'MeldungBE03': { 'ID': 223, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1=>Meldung bei BE=1/ 0=>Meldung bei BE=0' }, + 'MeldungBE04': { 'ID': 224, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1=>Meldung bei BE=1/ 0=>Meldung bei BE=0' }, + 'MeldungBE05': { 'ID': 225, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1=>Meldung bei BE=1/ 0=>Meldung bei BE=0' }, + 'MeldungBE06': { 'ID': 226, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1=>Meldung bei BE=1/ 0=>Meldung bei BE=0' }, + 'Unbekannt-227': { 'ID': 227, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-228': { 'ID': 228, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'MeldungBE09': { 'ID': 229, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1=>Meldung bei BE=1/ 0=>Meldung bei BE=0' }, + 'MeldungBE10': { 'ID': 230, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1=>Meldung bei BE=1/ 0=>Meldung bei BE=0' }, + 'MeldungBE11': { 'ID': 231, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1=>Meldung bei BE=1/ 0=>Meldung bei BE=0' }, + 'MeldungBE12': { 'ID': 232, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1=>Meldung bei BE=1/ 0=>Meldung bei BE=0' }, + 'MeldungBE13': { 'ID': 233, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1=>Meldung bei BE=1/ 0=>Meldung bei BE=0' }, + 'Unbekannt-234': { 'ID': 234, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'MeldungBE15': { 'ID': 235, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1=>Meldung bei BE=1/ 0=>Meldung bei BE=0' }, + 'MeldungBE16': { 'ID': 236, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1=>Meldung bei BE=1/ 0=>Meldung bei BE=0' }, + 'MeldungBE17': { 'ID': 237, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1=>Meldung bei BE=1/ 0=>Meldung bei BE=0' }, + 'WMZHTNT-Tarif': { 'ID': 244, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'WMZ-Tarifumschaltung HT/NT fuer WMZ #1' }, + 'WMZKomStoer#4': { 'ID': 245, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Kommunikationsstoerung Zaehlerbus WMZ #4 (CO6, Fb10)' }, + 'WMZKomStoer#5': { 'ID': 246, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Kommunikationsstoerung Zaehlerbus WMZ #5 (CO6, Fb10)' }, + 'WMZKomStoer#6': { 'ID': 247, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Kommunikationsstoerung Zaehlerbus WMZ #6 (CO6, Fb10)' }, + 'WMZFehlerWMZ#4': { 'ID': 248, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Fehler WMZ #4 (CO6, Fb10)' }, + 'WMZFehlerWMZ#5': { 'ID': 249, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Fehler WMZ #5 (CO6, Fb10)' }, + 'WMZFehlerWMZ#6': { 'ID': 250, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Fehler WMZ #6 (CO6, Fb10)' }, + 'WMZ-Auslesung#4': { 'ID': 251, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1 = 1xAuslesung WMZ #4 veranlassen' }, + 'WMZ-Auslesung#5': { 'ID': 252, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1 = 1xAuslesung WMZ #5 veranlassen' }, + 'WMZ-Auslesung#6': { 'ID': 253, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': '1 = 1xAuslesung WMZ #6 veranlassen' }, + 'SummenBegrenzung': { 'ID': 254, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Summenbegrenzung Leistung/Durchfluss aller WMZs' }, + 'Unbekannt-255': { 'ID': 255, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-256': { 'ID': 256, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-257': { 'ID': 257, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-258': { 'ID': 258, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-259': { 'ID': 259, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-260': { 'ID': 260, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-261': { 'ID': 261, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-262': { 'ID': 262, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-263': { 'ID': 263, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-264': { 'ID': 264, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-265': { 'ID': 265, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-266': { 'ID': 266, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-267': { 'ID': 267, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-268': { 'ID': 268, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-269': { 'ID': 269, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-270': { 'ID': 270, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-271': { 'ID': 271, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-272': { 'ID': 272, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-273': { 'ID': 273, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-274': { 'ID': 274, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-275': { 'ID': 275, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-276': { 'ID': 276, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-277': { 'ID': 277, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-278': { 'ID': 278, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-279': { 'ID': 279, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-280': { 'ID': 280, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-281': { 'ID': 281, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-282': { 'ID': 282, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-283': { 'ID': 283, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-284': { 'ID': 284, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-285': { 'ID': 285, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-286': { 'ID': 286, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-287': { 'ID': 287, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-288': { 'ID': 288, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-289': { 'ID': 289, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-290': { 'ID': 290, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-291': { 'ID': 291, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-292': { 'ID': 292, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-293': { 'ID': 293, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-294': { 'ID': 294, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-295': { 'ID': 295, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-296': { 'ID': 296, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-297': { 'ID': 297, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-298': { 'ID': 298, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-299': { 'ID': 299, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'CO9FB05': { 'ID': 300, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Externe Vorlaufsoll-Korrektur (Techem/Adapterm)' }, + 'CO9FB01': { 'ID': 301, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'NI1000 Sensoren der Firma SIEMENS' }, + 'ZyklRelaisinit': { 'ID': 302, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Zyklische Relaisinitialisierung' }, + 'Fliessdruckschalt': { 'ID': 303, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Fliessdruckschalter' }, + 'WirksinnStoeraus': { 'ID': 304, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_FS', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Wirksinn Stoermeldeausgang BA13 (CO5, Fb07)' }, + 'Unbekannt-305': { 'ID': 305, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Schleichmbin': { 'ID': 306, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Schleichmenge mittels Binaereingang' }, + 'CO9FB08': { 'ID': 307, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'RK1 als Zubringerkreis' }, + 'CO9FB09': { 'ID': 308, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Modbus-Schreibfreigabe' }, + 'FB01BE01imFSR': { 'ID': 321, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB01: 1=> Meldung in Fehlerstatusregister' }, + 'FB02BE02imFSR': { 'ID': 322, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB02: 1=> Meldung in Fehlerstatusregister' }, + 'FB03BE03imFSR': { 'ID': 323, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB03: 1=> Meldung in Fehlerstatusregister' }, + 'FB04BE04imFSR': { 'ID': 324, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB04: 1=> Meldung in Fehlerstatusregister' }, + 'FB05BE05imFSR': { 'ID': 325, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB05: 1=> Meldung in Fehlerstatusregister' }, + 'FB06BE06imFSR': { 'ID': 326, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB06: 1=> Meldung in Fehlerstatusregister' }, + 'Unbekannt-327': { 'ID': 327, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-328': { 'ID': 328, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB09BE09imFSR': { 'ID': 329, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB09: 1=> Meldung in Fehlerstatusregister' }, + 'FB10BE10imFSR': { 'ID': 330, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB10: 1=> Meldung in Fehlerstatusregister' }, + 'FB11BE11imFSR': { 'ID': 331, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB11: 1=> Meldung in Fehlerstatusregister' }, + 'FB12BE12imFSR': { 'ID': 332, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB12: 1=> Meldung in Fehlerstatusregister' }, + 'FB13BE13imFSR': { 'ID': 333, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB13: 1=> Meldung in Fehlerstatusregister' }, + 'Unbekannt-334': { 'ID': 334, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB15BE15imFSR': { 'ID': 335, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB15: 1=> Meldung in Fehlerstatusregister' }, + 'FB16BE16imFSR': { 'ID': 336, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB16: 1=> Meldung in Fehlerstatusregister' }, + 'FB17BE17imFSR': { 'ID': 337, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB17: 1=> Meldung in Fehlerstatusregister' }, + 'BtrnichtAuto': { 'ID': 997, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'mind. 1 Rk ungleich Auto' }, + 'BtrSnichtAuto': { 'ID': 998, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'mind. 1 Rk ungleich Auto mittels Betriebsschalter' }, + 'AutoRk1': { 'ID': 999, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Zeitabhaengiger Betrieb Rk1' }, + 'TagbetriebRk1': { 'ID': 1000, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Tagbetrieb Rk1' }, + 'NachtbetriebRk1': { 'ID': 1001, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Nachtbetrieb Rk1' }, + 'HaltebtrRk1': { 'ID': 1002, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Haltebetrieb Rk1 (mit CO1, Fb07=1)' }, + 'StuetzbtrRk1': { 'ID': 1003, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Stuetzbetrieb Rk1 (mit CO1, Fb07=1)' }, + 'AufheizbtrRk1': { 'ID': 1004, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Aufheizbetrieb Rk1 (mit CO1, Fb07=1)' }, + 'RuecklbegRk1': { 'ID': 1005, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ruecklauftemperaturbegrenzung Rk1 aktiv' }, + 'HeizausRk1': { 'ID': 1006, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'AT-abhaengige Heizungsabschaltung Rk1 aktiv' }, + 'StandbyRk1': { 'ID': 1007, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Standby-Betrieb Rk1' }, + 'FrostschutzRk1': { 'ID': 1008, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Frostschutzbetrieb Rk1' }, + 'Unbekannt-1016': { 'ID': 1016, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-1017': { 'ID': 1017, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-1018': { 'ID': 1018, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB01RF1': { 'ID': 1024, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB01: Raumfuehler RF1' }, + 'FB02AF1': { 'ID': 1025, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB02: Aussenfuehler AF1' }, + 'FB03RueF1Rk1': { 'ID': 1026, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB03: Ruecklauffuehler RueF1 Rk1' }, + 'Unbekannt-1027': { 'ID': 1027, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB05FBHRk1': { 'ID': 1028, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB05: Fussbodenheizung Rk1' }, + 'Unbekannt-1029': { 'ID': 1029, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB07OptimierRk1': { 'ID': 1030, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB07: Optimierung Rk1' }, + 'FB08AdaptRk1': { 'ID': 1031, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB08: Adaption Rk1' }, + 'FB09KurzztAdRk1': { 'ID': 1032, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB09: Kurzzeitadaption Rk1' }, + 'FB10UPManagmt': { 'ID': 1033, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB10: Pumpenmanagement Schaltverh BA13 (bis V1.30)' }, + 'FB114PHKLRk1': { 'ID': 1034, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB11: 4-Punkte-Kennlinie Rk1' }, + 'FB123PktRegRk1': { 'ID': 1035, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB12: Regelungsart 3-Pkt (Rk1) / 0...10V (Y1)' }, + 'FB13BegxdRk1': { 'ID': 1036, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB13: Begrenzung d. Regelabweichung AUF-Signal Rk1' }, + 'FB14FreigRk1': { 'ID': 1037, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB14: Freigabe Rk1 an Eingang BE15' }, + 'FB15Bedarf': { 'ID': 1038, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB15: Bedarfsverarbeitung in Rk1' }, + 'FB1610VBedarf': { 'ID': 1039, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB16: Bedarfsverarbeitung 0-10V in Rk1 (Kl. 17/19)' }, + 'FB17binBedarf': { 'ID': 1040, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB17: Bedarfsverarbeitung binaer in Rk1 (Kl. 17/18)' }, + 'FB18maxVL-Soll': { 'ID': 1041, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB18: Max. Vorlaufsollwert mittels 0-10V anfordern' }, + 'FB19VL-SollFolg': { 'ID': 1042, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB19: Max. Vorlaufsollwert in Folge anfordern' }, + 'FB20ExtWaermean': { 'ID': 1043, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB20: Externe Waermeanforderung bei Unterversorgung' }, + 'Unbekannt-1044': { 'ID': 1044, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'AutoRk2': { 'ID': 1199, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Zeitabhaengiger Betrieb Rk2' }, + 'TagbetriebRk2': { 'ID': 1200, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Tagbetrieb Rk2' }, + 'NachtbetriebRk2': { 'ID': 1201, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Nachtbetrieb Rk2' }, + 'HaltebtrRk2': { 'ID': 1202, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Haltebetrieb Rk2 (mit CO2, Fb07=1)' }, + 'StuetzbtrRk2': { 'ID': 1203, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Stuetzbetrieb Rk2 (mit CO2, Fb07=1)' }, + 'AufheizbtrRk2': { 'ID': 1204, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Aufheizbetrieb Rk2 (mit CO2, Fb07=1)' }, + 'RuecklbegRk2': { 'ID': 1205, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ruecklauftemperaturbegrenzung Rk2 aktiv' }, + 'HeizausRk2': { 'ID': 1206, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'AT-abhaengige Heizungsabschaltung Rk2 aktiv' }, + 'StandbyRk2': { 'ID': 1207, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Standby-Betrieb Rk2' }, + 'FrostschutzRk2': { 'ID': 1208, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Frostschutzbetrieb Rk2' }, + 'Unbekannt-1211': { 'ID': 1211, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-1212': { 'ID': 1212, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-1216': { 'ID': 1216, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-1217': { 'ID': 1217, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-1218': { 'ID': 1218, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB01RF2': { 'ID': 1224, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB01: Raumfuehler RF2' }, + 'FB02AF2': { 'ID': 1225, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB02: Aussenfuehler AF2' }, + 'FB03RueF2Rk2': { 'ID': 1226, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB03: Ruecklauffuehler RueF2 Rk2' }, + 'FB05FBHRk2': { 'ID': 1227, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB05: Fussbodenheizung Rk2' }, + 'Unbekannt-1228': { 'ID': 1228, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-1229': { 'ID': 1229, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB07OptimierRk2': { 'ID': 1230, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB07: Optimierung Rk2' }, + 'FB08AdaptRk2': { 'ID': 1231, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB08: Adaption Rk2' }, + 'FB09KurzztAdRk2': { 'ID': 1232, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB09: Kurzzeitadaption Rk2' }, + 'Unbekannt-1233': { 'ID': 1233, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'FB114PHKLRk2': { 'ID': 1234, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB11: 4-Punkte-Kennlinie Rk2' }, + 'FB123PktRegRk2': { 'ID': 1235, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB12: Regelungsart 3-Pkt (Rk2) / 0...10V (Y2)' }, + 'FB13BegxdRk2': { 'ID': 1236, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB13: Begrenzung d. Regelabweichung AUF-Signal Rk2' }, + 'FB14FreigRk2': { 'ID': 1237, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB14: Freigabe Rk2 an Eingang BE16' }, + 'AutoTW': { 'ID': 1799, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Zeitabhaengiger Betrieb Trinkwasser' }, + 'ThermDesTW': { 'ID': 1800, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Thermische Desinfektion Trinkwasserkreis aktiv' }, + 'VorrangTW': { 'ID': 1801, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Vorrangbetrieb Trinkwasserkreis aktiv' }, + 'MaxLadetempbgTW': { 'ID': 1802, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Maximale Ladetemperaturbegrenzung aktiv' }, + 'RuecklbegTW': { 'ID': 1803, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Ruecklauftemperaturbegr. Trinkwasserkreis aktiv' }, + 'StandbyTW': { 'ID': 1804, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Standby-Betrieb Trinkwasser' }, + 'FrostschutzTW': { 'ID': 1805, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Frostschutzbetrieb Trinkwasser' }, + 'ZwangsladTW': { 'ID': 1806, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Zwangsladung Trinkwasserspeicher' }, + 'SolarUPTW': { 'ID': 1807, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_NJ', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Solarkreis-Umwaelzpumpe aktiv' }, + 'SF2anstattSF1': { 'ID': 1808, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Zwangsladung durch Umschaltung von SF1 auf SF2' }, + 'FB01SF1': { 'ID': 1824, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB01: Speicherfuehler SF1' }, + 'FB02SF2': { 'ID': 1825, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB02: Speicherfuehler SF2' }, + 'FB03RueF2': { 'ID': 1826, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB03: Ruecklauffuehler RueF2' }, + 'FB04StroemSensor': { 'ID': 1827, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB04: Wasserstroemungssensor' }, + 'FB05VF4': { 'ID': 1828, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB05: Vorlauffuehler VF4' }, + 'FB06ParallelTW': { 'ID': 1829, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB06: Pumpenparallellauf' }, + 'FB07Zwischenhzg': { 'ID': 1830, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB07: Zwischenheizbetrieb' }, + 'FB08VorrangInv': { 'ID': 1831, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB08: Vorrang durch Inversbetrieb' }, + 'FB09VorrangAbs': { 'ID': 1832, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB09: Vorrang durch Absenkbetrieb' }, + 'FB10ZPinWT': { 'ID': 1833, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB10: ZP in Waermetauscher eingebunden' }, + 'FB11ZPbeimLaden': { 'ID': 1834, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB11: Betrieb der ZP bei Speicherladung' }, + 'FB123PktRegTW': { 'ID': 1835, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB12: Regelungsart 3-Pkt (Rk2) / 0...10V (Y2) TW' }, + 'FB13BegRegdiff': { 'ID': 1836, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB13: Begrenzung der Regelabweichung AUF-Signal TW' }, + 'FB14ThermDes': { 'ID': 1837, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB14: Thermische Desinfektion' }, + 'FB15SLPabhRueF': { 'ID': 1838, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB15: SLP ein in Abhaengigkeit der Ruecklauftemp' }, + 'FB16BedPrio': { 'ID': 1839, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB16: Externer Bedarf hat Prioritaet' }, + 'FB17BA12Desinf': { 'ID': 1840, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB17: BA12 waehrend thermischer Desinfektion ein' }, + 'FB18BA12TWAnf': { 'ID': 1841, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB18: BA12 waehrend Trinkwasseranforderung ein' }, + 'FB19ZPSFumsch': { 'ID': 1842, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB19: Zeitprogrammgest. Speicherfuehlerumschaltung' }, + 'FB20Durchgngreg': { 'ID': 1843, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB20: TW-Kreis nachgeregelt mit Durchgangsventil' }, + 'FB21DrehzLadep': { 'ID': 1844, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_IA', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'FB21: Drehzahlregelung der Ladepumpe' }, + 'Unbekannt-9899': { 'ID': 9899, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-9900': { 'ID': 9900, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-9901': { 'ID': 9901, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-9902': { 'ID': 9902, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-9903': { 'ID': 9903, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-9904': { 'ID': 9904, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-9905': { 'ID': 9905, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-9906': { 'ID': 9906, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-9907': { 'ID': 9907, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-9908': { 'ID': 9908, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-9909': { 'ID': 9909, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-9910': { 'ID': 9910, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-55999': { 'ID': 55999, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-56000': { 'ID': 56000, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-56001': { 'ID': 56001, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-56002': { 'ID': 56002, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-56003': { 'ID': 56003, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-56004': { 'ID': 56004, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-56005': { 'ID': 56005, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-56006': { 'ID': 56006, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' }, + 'Unbekannt-65534': { 'ID': 65534, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Wert': 0, 'Einheit': '', 'Name': 'Unbekannt' } +} \ No newline at end of file diff --git a/trovis557x/templates/5576-003_listen.py b/trovis557x/templates/5576-003_listen.py new file mode 100644 index 000000000..536d93d1e --- /dev/null +++ b/trovis557x/templates/5576-003_listen.py @@ -0,0 +1,19 @@ +listen_tabelle = { # TROVIS-Listen + # Register + 'Liste_Schalter': {0: 'PA', 1: 'Auto', 2: 'Standby', 3: 'Hand', 4: 'Sonne', 5: 'Mond'}, + 'Liste_Lesemodus': {0: '24h', 1: 'Cont', 2: 'Coil'}, + 'Liste_Durchfluss': {0: 'm³/h', 1: 'l/h'}, + 'Liste_Volumen': {0: 'm³', 1: 'l'}, + 'Liste_Arbeit': {0: 'MWh', 1: 'kWh', 2: 'GJ'}, + 'Liste_Leistung': {0: 'kW', 1: 'MW'}, + 'Liste_Temperatur': {0: '°C'}, + # Coils + 'Liste_NJ': {0: 'nein', 1: 'ja'}, + 'Liste_AE': {0: 'aus', 1: 'ein'}, + 'Liste_IA': {0: 'inaktiv', 1: 'aktiv'}, + 'Liste_HZ': {0: 'halt', 1: 'zu'}, + 'Liste_HA': {0: 'halt', 1: 'auf'}, + 'Liste_FA': {0: 'ferngesteuert', 1: 'autark'}, + 'Liste_FS': {0: 'fallend', 1: 'steigend'}, + +} \ No newline at end of file diff --git a/trovis557x/templates/5576-003_registers.py b/trovis557x/templates/5576-003_registers.py new file mode 100644 index 000000000..053f3c0b8 --- /dev/null +++ b/trovis557x/templates/5576-003_registers.py @@ -0,0 +1,6478 @@ +register_tabelle = { + 'Geraetekennung': { 'ID': 0, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 5000, 'Busmax': 6000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 5000, 'Wertmax': 6000, 'Name': 'Erzeugnisnummer (Gerätekennung)' }, + 'Anlage': { 'ID': 1, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Version', 'Buswert': 0, 'Busmin': 10, 'Busmax': 500, 'Faktor': 1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 50, 'Name': 'Anlagenkennziffer' }, + 'Firmware-Version': { 'ID': 2, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Version', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Firmwareversion' }, + 'Hardware-Version': { 'ID': 3, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Version', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 100, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Hardwareversion' }, + 'Sonderfunktionen': { 'ID': 4, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 6000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 6000, 'Name': 'Reglerupdate via Modbus / Reglerneustart' }, + 'Regler-ID': { 'ID': 5, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Regler-ID (interne Seriennummer)' }, + 'Unbekannt-6': { 'ID': 6, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'AussentempAF1': { 'ID': 9, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 1600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 160, 'Name': 'Meßwert des Eingangs AF1 (CL88)' }, + 'AussentempAF2': { 'ID': 10, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 1600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 160, 'Name': 'Meßwert des Eingangs AF2' }, + 'Unbekannt-9': { 'ID': 11, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'VorlauftempVF1': { 'ID': 12, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 1600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 160, 'Name': 'Meßwert des Eingangs VF1' }, + 'VorlauftempVF2': { 'ID': 13, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 1600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 160, 'Name': 'Meßwert des Eingangs VF2' }, + 'VorlauftempVF3': { 'ID': 14, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 1600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 160, 'Name': 'Meßwert des Eingangs VF3' }, + 'VorlauftempVF4': { 'ID': 15, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 1600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 160, 'Name': 'Meßwert des Eingangs VF4' }, + 'RueckltempRueF1': { 'ID': 16, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 1600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 160, 'Name': 'Meßwert des Eingangs RüF1' }, + 'RueckltempRueF2': { 'ID': 17, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 1600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 160, 'Name': 'Meßwert des Eingangs RüF2' }, + 'Unbekannt-16': { 'ID': 18, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'RaumtempRF1': { 'ID': 19, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 1600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 160, 'Name': 'Meßwert des Eingangs RF1' }, + 'RaumtempRF2': { 'ID': 20, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 1600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 160, 'Name': 'Meßwert des Eingangs RF2' }, + 'Unbekannt-19': { 'ID': 21, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'SpeichertempSF1': { 'ID': 22, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 1600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 160, 'Name': 'Meßwert des Eingangs SF1' }, + 'SpeichertempSF2': { 'ID': 23, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 1600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 160, 'Name': 'Meßwert des Eingangs SF2' }, + 'SpeichertempSF3': { 'ID': 24, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 1600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 160, 'Name': 'Meßwert des Eingangs SF3' }, + 'FerngeberFG1': { 'ID': 25, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -50, 'Busmax': 20000, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'K', 'Wert': 0, 'Wertmin': -5, 'Wertmax': 2000, 'Name': 'Meßwert des Eingangs FG1' }, + 'FerngeberFG2': { 'ID': 26, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -50, 'Busmax': 20000, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'K', 'Wert': 0, 'Wertmin': -5, 'Wertmax': 2000, 'Name': 'Meßwert des Eingangs FG2' }, + 'Unbekannt-25': { 'ID': 27, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'MesswertImp-h': { 'ID': 28, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': 'imp/h', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'Meßwert [Imp/h] am Eingang WMZ' }, + 'Messwertm3-h': { 'ID': 29, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 10000, 'Faktor': 0.01, 'Digits': 2, 'Einheit': 'm³/h', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 100, 'Name': 'Meßwert [m3/h] am Eingang WMZ' }, + 'AA10-10V': { 'ID': 30, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'V', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Analogausgang Regelkreis 1 0-10V' }, + 'AA20-10V': { 'ID': 31, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'V', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Analogausgang Regelkreis 2 0-10V' }, + 'MaxVorlSollw': { 'ID': 98, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Maximaler Vorlaufsollwert des Reglers' }, + 'Uhrzeit': { 'ID': 99, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'Uhrzeit' }, + 'Datum': { 'ID': 100, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'Datum' }, + 'Jahr': { 'ID': 101, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 2000, 'Busmax': 2098, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 2000, 'Wertmax': 2098, 'Name': 'Jahr' }, + 'Schalteroben': { 'ID': 102, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Schalter', 'Buswert': 0, 'Busmin': 0, 'Busmax': 10, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Schalter RK1 (0=PA, 1=Auto, 2=Stdby, 3=Hand, 4=Sonne, 5=Mond)' }, + 'Schaltermitte': { 'ID': 103, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Schalter', 'Buswert': 0, 'Busmin': 0, 'Busmax': 10, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Schalter RK2 (0=PA, 1=Auto, 2=Stdby, 3=Hand, 4=Sonne, 5=Mond)' }, + 'Schalterunten': { 'ID': 104, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Schalter', 'Buswert': 0, 'Busmin': 0, 'Busmax': 10, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Schalter TW (0=PA, 1=Auto, 2=Stdby, 3=Hand)' }, + 'BetriebsArtRk1': { 'ID': 105, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_Schalter', 'Buswert': 0, 'Busmin': 2, 'Busmax': 5, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 2, 'Wertmax': 5, 'Name': '2=Stdby, 4=Sonne, 5=Mond (CL89)' }, + 'StellsignalRk1': { 'ID': 106, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 100, 'Faktor': 1, 'Digits': 0, 'Einheit': '%', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 100, 'Name': 'Stellsignal Rk1 [0...100%] (CL90)' }, + 'BetriebsArtRk2': { 'ID': 107, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_Schalter', 'Buswert': 0, 'Busmin': 2, 'Busmax': 5, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 2, 'Wertmax': 5, 'Name': '2=Stdby, 4=Sonne, 5=Mond (CL91)' }, + 'StellsignalRk2': { 'ID': 108, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 100, 'Faktor': 1, 'Digits': 0, 'Einheit': '%', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 100, 'Name': 'Stellsignal Rk2 [0...100%] (CL92)' }, + 'Unbekannt-41': { 'ID': 109, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-42': { 'ID': 110, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'BetriebsArtTW': { 'ID': 111, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_Schalter', 'Buswert': 0, 'Busmin': 2, 'Busmax': 5, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 2, 'Wertmax': 5, 'Name': '2=Stdby, 4=Sonne, 5=Mond (CL95)' }, + 'SommerDatAnf': { 'ID': 112, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'Datum Beginn Sommerzeitraum (CO5, Fb04)' }, + 'SommerDatEnd': { 'ID': 113, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'Datum Ende Sommerzeitraum (CO5, Fb04)' }, + 'SommerTagzein': { 'ID': 114, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 3, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 3, 'Name': 'Anzahl Tage für Sommerbetrieb ein (CO5, Fb04)' }, + 'SommerTagzaus': { 'ID': 115, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 3, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 3, 'Name': 'Anzahl Tage für Sommerbetrieb aus (CO5, Fb04)' }, + 'SommerAT-Wert': { 'ID': 116, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 30, 'Name': 'AT-Grenzwert Sommerbetrieb (CO5, Fb04)' }, + 'ATVerzoegerung': { 'ID': 117, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 6, 'Faktor': 1, 'Digits': 0, 'Einheit': 'K/h', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 6, 'Name': 'Verzögerung AT-Anpassung (CO5,Fb05/CO5,Fb06)' }, + 'Unbekannt-50': { 'ID': 118, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-51': { 'ID': 119, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'TempuewAbweichung': { 'ID': 120, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 10, 'Busmax': 300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 30, 'Name': 'Temperaturüberwachung: Regelabweichung (CO5,Fb19)' }, + 'TempuewZeitfenstr': { 'ID': 121, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 120, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 120, 'Name': 'Temperaturüberwachung: Zeitfenster (CO5,Fb19)' }, + 'FrostschutzGW': { 'ID': 122, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -150, 'Busmax': 30, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -15, 'Wertmax': 3, 'Name': 'Frostschutzgrenzwert (CO5, Fb09)' }, + 'AnfangAT0V': { 'ID': 123, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -300, 'Busmax': 1000, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -30, 'Wertmax': 100, 'Name': 'Übertragungsbereichsanfang, AT 0V (CO5,Fb23)' }, + 'EndeAT10V': { 'ID': 124, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -300, 'Busmax': 1000, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -30, 'Wertmax': 100, 'Name': 'Übertragungsbereichsende, AT 10V (CO5,Fb23)' }, + 'Unbekannt-57': { 'ID': 125, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-58': { 'ID': 126, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-59': { 'ID': 127, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-60': { 'ID': 128, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'MaxImp-h': { 'ID': 129, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 65000, 'Faktor': 1, 'Digits': 0, 'Einheit': 'imp/h', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 65000, 'Name': 'Maximalgrenzwert ([Imp/h], CO5->Fb10)' }, + 'MaxHImp-h': { 'ID': 130, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 65000, 'Faktor': 1, 'Digits': 0, 'Einheit': 'imp/h', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 65000, 'Name': 'Maximalgrenzwert Heizbetrieb ([Imp/h], CO5->Fb10)' }, + 'MaxTImp-h': { 'ID': 131, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 65000, 'Faktor': 1, 'Digits': 0, 'Einheit': 'imp/h', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 65000, 'Name': 'Maximalgrenzwert Trinkwasser ([Imp/h], CO5->Fb10)' }, + 'MaxWMZ': { 'ID': 132, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 65000, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'kW', 'Wert': 0, 'Wertmin': 0.1, 'Wertmax': 6500, 'Name': 'Maximalgrenzwert ([kW], CO6->Fb12)' }, + 'MaxHWMZ': { 'ID': 133, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 65000, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'kW', 'Wert': 0, 'Wertmin': 0.1, 'Wertmax': 6500, 'Name': 'Maximalgrenzwert Heizbetrieb ([kW], CO6->Fb12)' }, + 'MaxTWMZ': { 'ID': 134, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 65000, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'kW', 'Wert': 0, 'Wertmin': 0.1, 'Wertmax': 6500, 'Name': 'Maximalgrenzwert Trinkwasser ([kW], CO6->Fb12)' }, + 'BegImpWMZ': { 'ID': 135, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0.1, 'Wertmax': 10, 'Name': 'Begrenzungsfaktor Impulseingang / Leistung' }, + 'MBAnfang0-4mA': { 'ID': 136, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 4, 'Faktor': 1, 'Digits': 0, 'Einheit': 'mA', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 4, 'Name': 'Meßbereichsanfang 0 oder 4 mA' }, + 'MBEndem3-h': { 'ID': 137, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 65000, 'Faktor': 0.01, 'Digits': 2, 'Einheit': 'm³/h', 'Wert': 0, 'Wertmin': 0.01, 'Wertmax': 650, 'Name': 'Meßbereichsende bei 20mA [m3/h]' }, + 'KpKorrDfluss': { 'ID': 138, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0.1, 'Wertmax': 10, 'Name': 'Begrenzungsfaktor Durchfluss' }, + 'Maxm3-hWMZ': { 'ID': 139, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 65000, 'Faktor': 0.01, 'Digits': 2, 'Einheit': 'm³/h', 'Wert': 0, 'Wertmin': 0.01, 'Wertmax': 650, 'Name': 'Maximalgrenzwert ([m3/h], CO5,CO6->Fb11)' }, + 'MaxHm3-hWMZ': { 'ID': 140, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 65000, 'Faktor': 0.01, 'Digits': 2, 'Einheit': 'm³/h', 'Wert': 0, 'Wertmin': 0.01, 'Wertmax': 650, 'Name': 'Maximalgrenzwert Heizbetr. ([m3/h], CO5,CO6->Fb11)' }, + 'MaxTm3-hWMZ': { 'ID': 141, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 65000, 'Faktor': 0.01, 'Digits': 2, 'Einheit': 'm³/h', 'Wert': 0, 'Wertmin': 0.01, 'Wertmax': 650, 'Name': 'Maximalgrenzwert Trinkw. ([m3/h], CO5,CO6->Fb11)' }, + 'Stationsadresse': { 'ID': 142, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 32000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 32000, 'Name': 'Stationsadresse (Kaltstart 255)' }, + 'Unbekannt-75': { 'ID': 143, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Write-EnModem': { 'ID': 144, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1999, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1999, 'Name': 'Modem-Schreibfreigabe (Schlüsselzahleingabe)' }, + 'ZyklInitModem': { 'ID': 145, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 255, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 255, 'Name': 'Modem-Zyklische Initialisierung' }, + 'WahlpauseModem': { 'ID': 146, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 255, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 255, 'Name': 'Modem-Wahlpause' }, + 'AnwWdhModem': { 'ID': 147, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 99, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 99, 'Name': 'Modem-Anzahl der Anwahlversuche' }, + 'TimeoutModem': { 'ID': 148, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 255, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 255, 'Name': 'Modem-Timeout' }, + 'FehlerstatusReg': { 'ID': 149, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Fehlerstatusregister (CL1)' }, + 'Unbekannt-82': { 'ID': 150, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'FehlerstatArchiv': { 'ID': 151, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Fehlerstatusarchiv' }, + 'Unbekannt-84': { 'ID': 152, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'FehlerzaehlerReg': { 'ID': 153, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Fehlerzählerregister' }, + 'FehlerStoeranwahl': { 'ID': 154, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Störanwahl und Displayanzeige Error (Bits des FSR)' }, + 'Unbekannt-87': { 'ID': 155, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-88': { 'ID': 156, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-89': { 'ID': 157, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-90': { 'ID': 158, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-91': { 'ID': 159, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-92': { 'ID': 160, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-93': { 'ID': 161, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-94': { 'ID': 162, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-95': { 'ID': 163, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-96': { 'ID': 164, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-97': { 'ID': 165, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-98': { 'ID': 166, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr1TempRLG1': { 'ID': 200, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Temperatur 1 am RLG1 von Datenpunkt (HR)' }, + 'Nr2TempRLG1': { 'ID': 201, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Temperatur 2 am RLG1 von Datenpunkt (HR)' }, + 'Nr3TempRLG1': { 'ID': 202, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Temperatur 3 am RLG1 von Datenpunkt (HR)' }, + 'Nr4TempRLG1': { 'ID': 203, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Temperatur 4 am RLG1 von Datenpunkt (HR)' }, + 'Nr5TempRLG1': { 'ID': 204, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Temperatur 5 am RLG1 von Datenpunkt (HR)' }, + 'Nr1DezRLG1': { 'ID': 205, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Dezimalwert 1 am RLG1 von Datenpunkt (HR)' }, + 'Nr2DezRLG1': { 'ID': 206, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Dezimalwert 2 am RLG1 von Datenpunkt (HR)' }, + 'Nr3DezRLG1': { 'ID': 207, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Dezimalwert 3 am RLG1 von Datenpunkt (HR)' }, + 'Nr4DezRLG1': { 'ID': 208, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Dezimalwert 4 am RLG1 von Datenpunkt (HR)' }, + 'Nr5DezRLG1': { 'ID': 209, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Dezimalwert 5 am RLG1 von Datenpunkt (HR)' }, + 'Nr1HexRLG1': { 'ID': 210, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Hexadezimalwert 1 am RLG1 von Datenpunkt (HR)' }, + 'Nr2HexRLG1': { 'ID': 211, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Hexadezimalwert 2 am RLG1 von Datenpunkt (HR)' }, + 'Nr3HexRLG1': { 'ID': 212, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Hexadezimalwert 3 am RLG1 von Datenpunkt (HR)' }, + 'Nr4HexRLG1': { 'ID': 213, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Hexadezimalwert 4 am RLG1 von Datenpunkt (HR)' }, + 'Nr5HexRLG1': { 'ID': 214, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Hexadezimalwert 5 am RLG1 von Datenpunkt (HR)' }, + 'DlogZykluszeit': { 'ID': 299, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Zykluszeit in Minuten' }, + 'DlogAnalogRegNr01': { 'ID': 300, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Vorlaufsollwert Rk1 (HR 41000)' }, + 'DlogAnalogRegNr02': { 'ID': 301, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Vorlaufsollwert Rk2 (HR 41200)' }, + 'DlogAnalogRegNr03': { 'ID': 302, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Analoger Datenpunkt #3' }, + 'DlogAnalogRegNr04': { 'ID': 303, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Analoger Datenpunkt #4' }, + 'DlogAnalogRegNr05': { 'ID': 304, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Analoger Datenpunkt #5' }, + 'DlogAnalogRegNr06': { 'ID': 305, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Analoger Datenpunkt #6' }, + 'DlogAnalogRegNr07': { 'ID': 306, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Analoger Datenpunkt #7' }, + 'DlogAnalogRegNr08': { 'ID': 307, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Analoger Datenpunkt #8' }, + 'DlogAnalogRegNr09': { 'ID': 308, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Analoger Datenpunkt #9' }, + 'DlogAnalogRegNr10': { 'ID': 309, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Analoger Datenpunkt #10' }, + 'DlogBinaerRegNr01': { 'ID': 310, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Binärer Datenpunkt #01' }, + 'DlogBinaerRegNr02': { 'ID': 311, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Binärer Datenpunkt #02' }, + 'DlogBinaerRegNr03': { 'ID': 312, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Binärer Datenpunkt #03' }, + 'DlogBinaerRegNr04': { 'ID': 313, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Binärer Datenpunkt #04' }, + 'DlogBinaerRegNr05': { 'ID': 314, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Binärer Datenpunkt #05' }, + 'DlogBinaerRegNr06': { 'ID': 315, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Binärer Datenpunkt #06' }, + 'DlogBinaerRegNr07': { 'ID': 316, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Binärer Datenpunkt #07' }, + 'DlogBinaerRegNr08': { 'ID': 317, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Binärer Datenpunkt #08' }, + 'DlogBinaerRegNr09': { 'ID': 318, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Binärer Datenpunkt #09' }, + 'DlogBinaerRegNr10': { 'ID': 319, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Datenlogger: Binärer Datenpunkt #10' }, + 'VorlSollwRk1': { 'ID': 999, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlaufsollwert Rk1 (CL116)' }, + 'MaxVorlRk1': { 'ID': 1000, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Maximale Vorlauftemperatur Rk1' }, + 'MinVorlRk1': { 'ID': 1001, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Minimale Vorlauftemperatur Rk1' }, + 'TagSollRk1': { 'ID': 1002, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 400, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 40, 'Name': 'Raumsollwert Tag Rk1' }, + 'NachtSollRk1': { 'ID': 1003, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 400, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 40, 'Name': 'Raumsollwert Nacht Rk1' }, + 'Unbekannt-140': { 'ID': 1004, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'SteigHeizKLRk1': { 'ID': 1005, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 2, 'Busmax': 32, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0.2, 'Wertmax': 3.2, 'Name': 'Steigung VL Heizkennlinie Rk1 (KL nach Steigung)' }, + 'NivHeizKLRk1': { 'ID': 1006, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -300, 'Busmax': 300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'K', 'Wert': 0, 'Wertmin': -30, 'Wertmax': 30, 'Name': 'Niveau VL Heizkennlinie Rk1 (KL nach Steigung)' }, + 'Unbekannt-143': { 'ID': 1007, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'StgRuecklKLRk1': { 'ID': 1008, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 2, 'Busmax': 32, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0.2, 'Wertmax': 3.2, 'Name': 'Steigung Rücklaufkennlinie Rk1 (KL nach Steigung)' }, + 'NivRuecklKLRk1': { 'ID': 1009, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -300, 'Busmax': 300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'K', 'Wert': 0, 'Wertmin': -30, 'Wertmax': 30, 'Name': 'Niveau Rücklaufkennlinie Rk1 (KL nach Steigung)' }, + 'MaxRuecklRk1': { 'ID': 1010, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Maximale Rücklauftemperatur Rk1' }, + 'FussRuecklRk1': { 'ID': 1011, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Fußpunkt Rücklauftemperatur Rk1' }, + 'AT1HeizKLRk1': { 'ID': 1012, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 50, 'Name': 'Außentemperatur 1.Punkt Rk1 (KL nach 4 Punkten)' }, + 'AT2HeizKLRk1': { 'ID': 1013, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 50, 'Name': 'Außentemperatur 2.Punkt Rk1 (KL nach 4 Punkten)' }, + 'AT3HeizKLRk1': { 'ID': 1014, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 50, 'Name': 'Außentemperatur 3.Punkt Rk1 (KL nach 4 Punkten)' }, + 'AT4HeizKLRk1': { 'ID': 1015, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 50, 'Name': 'Außentemperatur 4.Punkt Rk1 (KL nach 4 Punkten)' }, + 'VT1THeizKLRk1': { 'ID': 1016, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Tag 1.Punkt Rk1 (KL 4 Punkte)' }, + 'VT2THeizKLRk1': { 'ID': 1017, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Tag 2.Punkt Rk1 (KL 4 Punkte)' }, + 'VT3THeizKLRk1': { 'ID': 1018, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Tag 3.Punkt Rk1 (KL 4 Punkte)' }, + 'VT4THeizKLRk1': { 'ID': 1019, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Tag 4.Punkt Rk1 (KL 4 Punkte)' }, + 'VT1NHeizKLRk1': { 'ID': 1020, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Nacht 1.Punkt Rk1 (KL 4 Punkte)' }, + 'VT2NHeizKLRk1': { 'ID': 1021, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Nacht 2.Punkt Rk1 (KL 4 Punkte)' }, + 'VT3NHeizKLRk1': { 'ID': 1022, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Nacht 3.Punkt Rk1 (KL 4 Punkte)' }, + 'VT4NHeizKLRk1': { 'ID': 1023, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Nacht 4.Punkt Rk1 (KL 4 Punkte)' }, + 'RL1HeizKLRk1': { 'ID': 1024, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Rücklauftemperatur 1.Punkt Rk1 (KL nach 4 Punkten)' }, + 'RL2HeizKLRk1': { 'ID': 1025, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Rücklauftemperatur 2.Punkt Rk1 (KL nach 4 Punkten)' }, + 'RL3HeizKLRk1': { 'ID': 1026, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Rücklauftemperatur 3.Punkt Rk1 (KL nach 4 Punkten)' }, + 'RL4HeizKLRk1': { 'ID': 1027, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Rücklauftemperatur 4.Punkt Rk1 (KL nach 4 Punkten)' }, + 'Unbekannt-164': { 'ID': 1028, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-165': { 'ID': 1029, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-166': { 'ID': 1030, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-167': { 'ID': 1031, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'RuecklSollwRk1': { 'ID': 1032, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Rücklaufsollwert Rk1 (CL117)' }, + 'BegRuecklRk1': { 'ID': 1033, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0.1, 'Wertmax': 10, 'Name': 'Begrenzungsfaktor Rücklauf Rk1 (CO1, Fb03)' }, + 'Unbekannt-170': { 'ID': 1034, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'ATAusNennbRk1': { 'ID': 1035, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 50, 'Name': 'AT-Abschaltwert Nennbetrieb Rk1' }, + 'ATAusReduzRk1': { 'ID': 1036, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -200, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -20, 'Wertmax': 50, 'Name': 'AT-Abschaltwert Reduzierbetrieb Rk1' }, + 'ATEinNennbRk1': { 'ID': 1037, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -200, 'Busmax': 50, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -20, 'Wertmax': 5, 'Name': 'AT-Einschaltwert Nennbetrieb Rk1' }, + 'ueberhoehungSoll': { 'ID': 1038, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 50, 'Name': 'Überhöhung Sollwert Primärtauscherregelung' }, + 'SollbinBedarf': { 'ID': 1039, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Sollwert bei binärer Bedarfsverarbeitung' }, + 'ZykluszeitRk1': { 'ID': 1040, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 100, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 100, 'Name': 'Zykluszeit Rk1 (CO1, Fb09)' }, + 'TagSollFWRk1': { 'ID': 1041, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Sollwert Tagbetrieb Rk1 (Festwertregelung)' }, + 'NachtSollFWRk1': { 'ID': 1042, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Sollwert Nachtbetrieb Rk1 (Festwertregelung)' }, + 'KpKuzztadapRk1': { 'ID': 1043, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 250, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 25, 'Name': 'Kp (Verstärung) Kurzzeitadaption Rk1 (C01F09)' }, + 'SonderPufferSoll': { 'ID': 1044, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 5, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 0.5, 'Wertmax': 130, 'Name': 'Sonder-Pufferspeichersollwert, Anl 14,15 (CL133)' }, + 'Unbekannt-181': { 'ID': 1053, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-182': { 'ID': 1054, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'StarttempRk1': { 'ID': 1055, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 200, 'Busmax': 600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 20, 'Wertmax': 60, 'Name': 'CO1, Fb05: Starttemperatur Rk1' }, + 'AnfangBedarf0V': { 'ID': 1056, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 130, 'Name': 'Übertragungsbereichsanfang, Bedarf 0V (CO1, Fb08)' }, + 'EndeBedarf10V': { 'ID': 1057, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 130, 'Name': 'Übertragungsbereichsende, Bedarf 10V (CO1, Fb08)' }, + 'TempanstiegRk1': { 'ID': 1058, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 10, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C/h', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 10, 'Name': 'CO1, Fb05: Temperaturanstieg Rk1' }, + 'MaxTempRk1': { 'ID': 1059, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 250, 'Busmax': 600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 25, 'Wertmax': 60, 'Name': 'CO1, Fb05: Maximaltemperatur Rk1' }, + 'HalteMaxTempRk1': { 'ID': 1060, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 10, 'Faktor': 1, 'Digits': 1, 'Einheit': 'd', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 10, 'Name': 'CO1, Fb05: Haltezeit Maximaltemperatur Rk1' }, + 'TempAbsenkngRk1': { 'ID': 1061, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C/h', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'CO1, Fb05: Temperaturabsenkung Rk1' }, + 'RegdiffVorlRk1': { 'ID': 1062, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -1000, 'Busmax': 1000, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -100, 'Wertmax': 100, 'Name': 'Regeldifferenz Vorlauf Rk1' }, + 'BegRegdiffRk1': { 'ID': 1063, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 20, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'K', 'Wert': 0, 'Wertmin': 2, 'Wertmax': 10, 'Name': 'Maximale Regelabweichung Rk1 (CO1, Fb13)' }, + 'KpRk1Y1': { 'ID': 1064, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0.1, 'Wertmax': 50, 'Name': 'Proportionalverstärkung Rk1(Y1)' }, + 'TnRk1Y1': { 'ID': 1065, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 999, 'Faktor': 1, 'Digits': 0, 'Einheit': 's', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 999, 'Name': 'Nachstellzeit Rk1(Y1)' }, + 'TyRk1': { 'ID': 1066, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 15, 'Busmax': 240, 'Faktor': 1, 'Digits': 0, 'Einheit': 's', 'Wert': 0, 'Wertmin': 15, 'Wertmax': 240, 'Name': 'Laufzeit Stellantrieb Rk1 (bei 3-Punkt)' }, + 'TvY1': { 'ID': 1067, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999, 'Faktor': 1, 'Digits': 0, 'Einheit': 's', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 999, 'Name': 'Vorhaltezeit Y1 (bei 0...10V)' }, + 'SchaltdiffRk1': { 'ID': 1068, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 10, 'Busmax': 300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'K', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 30, 'Name': 'Schaltdifferenz Rk1 (bei 2-Punkt)' }, + 'MinEinRk1': { 'ID': 1069, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 10, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Minimale Einschaltzeit Rk1 (bei 2-Punkt)' }, + 'MinAusRk1': { 'ID': 1070, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 10, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Minimale Ausschaltzeit Rk1 (bei 2-Punkt)' }, + 'Unbekannt-199': { 'ID': 1071, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'AktuelMittelwY1': { 'ID': 1089, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Aktueller Mittelwert, Y1 bei aktiver Regelung' }, + 'LMonatMittelwY1': { 'ID': 1090, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Mittelwert letzter Monat, Y1 bei aktiver Regelung' }, + 'VMonatMittelwY1': { 'ID': 1091, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Mittelwert vorletzter Monat, Y1 bei aktiv. Regel.' }, + 'Unbekannt-203': { 'ID': 1092, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-204': { 'ID': 1093, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-205': { 'ID': 1094, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-206': { 'ID': 1095, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'VorlSollwRk2': { 'ID': 1199, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlaufsollwert Rk2 (CL118)' }, + 'MaxVorlRk2': { 'ID': 1200, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Maximale Vorlauftemperatur Rk2' }, + 'MinVorlRk2': { 'ID': 1201, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Minimale Vorlauftemperatur Rk2' }, + 'TagSollRk2': { 'ID': 1202, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 400, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 40, 'Name': 'Raumsollwert Tag Rk2' }, + 'NachtSollRk2': { 'ID': 1203, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 400, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 40, 'Name': 'Raumsollwert Nacht Rk2' }, + 'Unbekannt-212': { 'ID': 1204, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'SteigHeizKLRk2': { 'ID': 1205, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 2, 'Busmax': 32, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0.2, 'Wertmax': 3.2, 'Name': 'Steigung VL Heizkennlinie Rk2 (KL nach Steigung)' }, + 'NivHeizKLRk2': { 'ID': 1206, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -300, 'Busmax': 300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'K', 'Wert': 0, 'Wertmin': -30, 'Wertmax': 30, 'Name': 'Niveau VL Heizkennlinie Rk2 (KL nach Steigung)' }, + 'Unbekannt-215': { 'ID': 1207, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'StgRuecklKLRk2': { 'ID': 1208, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 2, 'Busmax': 32, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0.2, 'Wertmax': 3.2, 'Name': 'Steigung Rücklaufkennlinie Rk2 (KL nach Steigung)' }, + 'NivRuecklKLRk2': { 'ID': 1209, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -300, 'Busmax': 300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'K', 'Wert': 0, 'Wertmin': -30, 'Wertmax': 30, 'Name': 'Niveau Rücklaufkennlinie Rk2 (KL nach Steigung)' }, + 'MaxRuecklRk2': { 'ID': 1210, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Maximale Rücklauftemperatur Rk2 (KL nach Steigung)' }, + 'FussRuecklRk2': { 'ID': 1211, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Fußpunkt Rücklauftemperatur Rk2 (KL nach Steigung)' }, + 'AT1HeizKLRk2': { 'ID': 1212, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 50, 'Name': 'Außentemperatur 1.Punkt Rk2 (KL nach 4 Punkten)' }, + 'AT2HeizKLRk2': { 'ID': 1213, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 50, 'Name': 'Außentemperatur 2.Punkt Rk2 (KL nach 4 Punkten)' }, + 'AT3HeizKLRk2': { 'ID': 1214, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 50, 'Name': 'Außentemperatur 3.Punkt Rk2 (KL nach 4 Punkten)' }, + 'AT4HeizKLRk2': { 'ID': 1215, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -400, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -40, 'Wertmax': 50, 'Name': 'Außentemperatur 4.Punkt Rk2 (KL nach 4 Punkten)' }, + 'VT1THeizKLRk2': { 'ID': 1216, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Tag 1.Punkt Rk2 (KL 4 Punkte)' }, + 'VT2THeizKLRk2': { 'ID': 1217, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Tag 2.Punkt Rk2 (KL 4 Punkte)' }, + 'VT3THeizKLRk2': { 'ID': 1218, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Tag 3.Punkt Rk2 (KL 4 Punkte)' }, + 'VT4THeizKLRk2': { 'ID': 1219, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Tag 4.Punkt Rk2 (KL 4 Punkte)' }, + 'VT1NHeizKLRk2': { 'ID': 1220, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Nacht 1.Punkt Rk2 (KL 4 Punkte)' }, + 'VT2NHeizKLRk2': { 'ID': 1221, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Nacht 2.Punkt Rk2 (KL 4 Punkte)' }, + 'VT3NHeizKLRk2': { 'ID': 1222, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Nacht 3.Punkt Rk2 (KL 4 Punkte)' }, + 'VT4NHeizKLRk2': { 'ID': 1223, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Vorlauftemperatur Nacht 4.Punkt Rk2 (KL 4 Punkte)' }, + 'RL1HeizKLRk2': { 'ID': 1224, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Rücklauftemperatur 1.Punkt Rk2 (KL nach 4 Punkten)' }, + 'RL2HeizKLRk2': { 'ID': 1225, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Rücklauftemperatur 2.Punkt Rk2 (KL nach 4 Punkten)' }, + 'RL3HeizKLRk2': { 'ID': 1226, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Rücklauftemperatur 3.Punkt Rk2 (KL nach 4 Punkten)' }, + 'RL4HeizKLRk2': { 'ID': 1227, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Rücklauftemperatur 4.Punkt Rk2 (KL nach 4 Punkten)' }, + 'Unbekannt-236': { 'ID': 1228, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-237': { 'ID': 1229, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-238': { 'ID': 1230, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-239': { 'ID': 1231, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'RuecklSollwRk2': { 'ID': 1232, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Rücklaufsollwert Rk2 (CL119)' }, + 'BegRuecklRk2': { 'ID': 1233, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0.1, 'Wertmax': 10, 'Name': 'Begrenzungsfaktor Rücklauf Rk2 (CO2, Fb03)' }, + 'Unbekannt-242': { 'ID': 1234, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'ATAusNennbRk2': { 'ID': 1235, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 50, 'Name': 'AT-Abschaltwert Nennbetrieb Rk2' }, + 'ATAusReduzRk2': { 'ID': 1236, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -200, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -20, 'Wertmax': 50, 'Name': 'AT-Abschaltwert Reduzierbetrieb Rk2' }, + 'ATEinNennbRk2': { 'ID': 1237, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -200, 'Busmax': 50, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -20, 'Wertmax': 5, 'Name': 'AT-Einschaltwert Nennbetrieb Rk2' }, + 'Unbekannt-246': { 'ID': 1238, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-247': { 'ID': 1239, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'ZykluszeitRk2': { 'ID': 1240, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 100, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 100, 'Name': 'Zykluszeit Rk2 (CO2, Fb09)' }, + 'TagSollFWRk2': { 'ID': 1241, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Sollwert Tagbetrieb Rk2 (Festwertregelung)' }, + 'NachtSollFWRk2': { 'ID': 1242, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 1300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 130, 'Name': 'Sollwert Nachtbetrieb Rk2 (Festwertregelung)' }, + 'KpKuzztadapRk2': { 'ID': 1243, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 250, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 25, 'Name': 'Kp (Verstärung) Kurzzeitadaption Rk2 (C02F09)' }, + 'StarttempRk2': { 'ID': 1255, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 200, 'Busmax': 600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 20, 'Wertmax': 60, 'Name': 'CO2, Fb05: Starttemperatur Rk2' }, + 'Unbekannt-253': { 'ID': 1256, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-254': { 'ID': 1257, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'TempanstiegRk2': { 'ID': 1258, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 10, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C/h', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 10, 'Name': 'CO2, Fb05: Temperaturanstieg Rk2' }, + 'MaxTempRk2': { 'ID': 1259, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 250, 'Busmax': 600, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 25, 'Wertmax': 60, 'Name': 'CO2, Fb05: Maximaltemperatur Rk2' }, + 'HalteMaxTempRk2': { 'ID': 1260, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 10, 'Faktor': 1, 'Digits': 0, 'Einheit': 'd', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 10, 'Name': 'CO2, Fb05: Haltezeit Maximaltemperatur Rk2' }, + 'TempAbsenkngRk2': { 'ID': 1261, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C/h', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'CO2, Fb05: Temperaturabsenkung Rk2' }, + 'RegdiffVorlRk2': { 'ID': 1262, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -1000, 'Busmax': 1000, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -100, 'Wertmax': 100, 'Name': 'Regeldifferenz Vorlauf Rk2' }, + 'BegRegdiffRk2': { 'ID': 1263, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 20, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'K', 'Wert': 0, 'Wertmin': 2, 'Wertmax': 10, 'Name': 'Maximale Regelabweichung Rk2 (CO2, Fb13)' }, + 'KpRk2Y2': { 'ID': 1264, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0.1, 'Wertmax': 50, 'Name': 'Proportionalverstärkung Rk2(Y2)' }, + 'TnRk2Y2': { 'ID': 1265, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 999, 'Faktor': 1, 'Digits': 0, 'Einheit': 's', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 999, 'Name': 'Nachstellzeit Rk2(Y2)' }, + 'TyRk2': { 'ID': 1266, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 15, 'Busmax': 240, 'Faktor': 1, 'Digits': 0, 'Einheit': 's', 'Wert': 0, 'Wertmin': 15, 'Wertmax': 240, 'Name': 'Laufzeit Stellantrieb Rk2 (bei 3-Punkt)' }, + 'TvY2': { 'ID': 1267, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999, 'Faktor': 1, 'Digits': 0, 'Einheit': 's', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 999, 'Name': 'Vorhaltezeit Y2 (bei 0...10V)' }, + 'SchaltdiffRk2': { 'ID': 1268, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 10, 'Busmax': 300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'K', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 30, 'Name': 'Schaltdifferenz Rk2 (bei 2-Punkt)' }, + 'MinEinRk2': { 'ID': 1269, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 10, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Minimale Einschaltzeit Rk2 (bei 2-Punkt)' }, + 'MinAusRk2': { 'ID': 1270, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 10, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Minimale Ausschaltzeit Rk2 (bei 2-Punkt)' }, + 'Unbekannt-268': { 'ID': 1271, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-269': { 'ID': 1455, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-270': { 'ID': 1456, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-271': { 'ID': 1457, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-272': { 'ID': 1458, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-273': { 'ID': 1459, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-274': { 'ID': 1460, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-275': { 'ID': 1461, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-276': { 'ID': 1462, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-277': { 'ID': 1463, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-278': { 'ID': 1464, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-279': { 'ID': 1465, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-280': { 'ID': 1466, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-281': { 'ID': 1467, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-282': { 'ID': 1468, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-283': { 'ID': 1469, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-284': { 'ID': 1470, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'TWSollw': { 'ID': 1799, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 200, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 20, 'Wertmax': 90, 'Name': 'Trinkwasser (Speicher) -Sollwert' }, + 'MaxTWSollw': { 'ID': 1800, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Maximale Einstellgrenztemperatur TW-Sollwert' }, + 'MinTWSollw': { 'ID': 1801, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Minimale Einstellgrenztemperatur TW-Sollwert' }, + 'SchaltdiffTW': { 'ID': 1802, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'K', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 30, 'Name': 'Schaltdifferenz Trinkwasser (bzgl. TWSollw)' }, + 'LadTempdiffTW': { 'ID': 1803, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'K', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 50, 'Name': 'Ladetemperaturüberhöhung (bzgl. TWSollw)' }, + 'NachlaufSLP': { 'ID': 1804, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0.1, 'Wertmax': 10, 'Name': 'Nachlauffaktor der SLP' }, + 'MaxLadeTW': { 'ID': 1805, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 90, 'Name': 'Maximale LadetemperaturTW' }, + 'TWHaltewert': { 'ID': 1806, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 200, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 20, 'Wertmax': 90, 'Name': 'Haltewert Trinkwasser (minimale Temperatur TW)' }, + 'AktiverTWSollw': { 'ID': 1807, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Aktiver Trinkwassersollwert' }, + 'SonderTWSollw': { 'ID': 1808, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Sonder-Trinkwassersollwert (CL112)' }, + 'SolarUPEIN': { 'ID': 1809, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 10, 'Busmax': 400, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 40, 'Name': 'Solarkreispumpe EIN' }, + 'SolarUPAUS': { 'ID': 1810, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 10, 'Busmax': 400, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 40, 'Name': 'Solarkreispumpe AUS' }, + 'SolarmaxSpeich': { 'ID': 1811, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 200, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 20, 'Wertmax': 90, 'Name': 'Maximale Speichertemperatur' }, + 'Solarbetrh': { 'ID': 1812, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': 'h', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Solarkreisbetriebsstunden (Reset durch „0“)' }, + 'RuecklSollwTW': { 'ID': 1827, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 50, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 5, 'Wertmax': 90, 'Name': 'Maximale Rücklauftemperatur TW' }, + 'BegRuecklTW': { 'ID': 1828, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0.1, 'Wertmax': 10, 'Name': 'Begrenzungsfaktor Rücklauf TW (CO4, Fb03)' }, + 'ThermDesSollw': { 'ID': 1829, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 600, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 60, 'Wertmax': 90, 'Name': 'Desinfektionstemperatur' }, + 'ThermDesTag': { 'ID': 1830, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 7, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 7, 'Name': 'Wochentag der thermischen Desinfektion' }, + 'ThermDesStart': { 'ID': 1831, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'Startzeit der thermischen Desinfektion' }, + 'ThermDesStop': { 'ID': 1832, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'Stoppzeit der thermischen Desinfektion' }, + 'ZeitParallelTW': { 'ID': 1833, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 10, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Zeit bis Abbruch Parallellauf (CO4, Fb06)' }, + 'GTParallelTW': { 'ID': 1834, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 200, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 20, 'Wertmax': 90, 'Name': 'VL-Grenztemperatur für Parallellauf (CO4, Fb06)' }, + 'ZeitVorrangTW': { 'ID': 1835, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 2, 'Busmax': 10, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 2, 'Wertmax': 10, 'Name': 'Zeit bis Trinkwasservorrang (CO4, Fb08/ 09)' }, + 'BegInversregTW': { 'ID': 1836, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0.1, 'Wertmax': 10, 'Name': 'Einflussfaktor Inversregelung (CO4, Fb08)' }, + 'AktiverLadeSoll': { 'ID': 1837, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 200, 'Busmax': 900, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': 20, 'Wertmax': 90, 'Name': 'Aktiver Ladetemperatur-Sollwert' }, + 'ThermDesHalte': { 'ID': 1838, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 255, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 255, 'Name': 'Haltezeit Desinfektionstemperatur' }, + 'VorrangTWRK': { 'ID': 1839, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 7, 'Busmax': 0, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 7, 'Wertmax': 0, 'Name': 'RK-Auswahl: 1=RK1/2=RK2/3=RK1+2' }, + 'RegeldiffTW': { 'ID': 1862, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': -1000, 'Busmax': 1000, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '°C', 'Wert': 0, 'Wertmin': -100, 'Wertmax': 100, 'Name': 'Regeldifferenz TW-Kreis' }, + 'BegRdiffTW': { 'ID': 1863, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 20, 'Busmax': 100, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'K', 'Wert': 0, 'Wertmin': 2, 'Wertmax': 10, 'Name': 'Maximale Regelabweichung TW-Kreis (CO4, Fb13)' }, + 'KpTW': { 'ID': 1864, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 500, 'Faktor': 0.1, 'Digits': 1, 'Einheit': '', 'Wert': 0, 'Wertmin': 0.1, 'Wertmax': 50, 'Name': 'Proportionalverstärkung TW-Kreis' }, + 'TnTW': { 'ID': 1865, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1, 'Busmax': 999, 'Faktor': 1, 'Digits': 0, 'Einheit': 's', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 999, 'Name': 'Nachstellzeit TW-Kreis' }, + 'TyTW': { 'ID': 1866, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 15, 'Busmax': 240, 'Faktor': 1, 'Digits': 0, 'Einheit': 's', 'Wert': 0, 'Wertmin': 15, 'Wertmax': 240, 'Name': 'Laufzeit Stellantrieb TW-Kreis (bei 3-Punkt)' }, + 'TvTW': { 'ID': 1867, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999, 'Faktor': 1, 'Digits': 0, 'Einheit': 's', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 999, 'Name': 'Vorhaltezeit TW-Kreis (bei 0...10V)' }, + 'SchaltdiffTW2P': { 'ID': 1868, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 10, 'Busmax': 300, 'Faktor': 0.1, 'Digits': 1, 'Einheit': 'K', 'Wert': 0, 'Wertmin': 1, 'Wertmax': 30, 'Name': 'Schaltdifferenz TW-Kreis (bei 2-Punkt)' }, + 'MinEinTW': { 'ID': 1869, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 10, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Minimale Einschaltzeit TW-Kreis (bei 2-Punkt)' }, + 'MinAusTW': { 'ID': 1870, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 10, 'Faktor': 1, 'Digits': 0, 'Einheit': 'min', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Minimale Ausschaltzeit TW-Kreis (bei 2-Punkt)' }, + 'Unbekannt-321': { 'ID': 2999, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-322': { 'ID': 3000, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-323': { 'ID': 3001, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-324': { 'ID': 3002, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-325': { 'ID': 3003, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-326': { 'ID': 3004, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-327': { 'ID': 3005, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-328': { 'ID': 3006, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-329': { 'ID': 3007, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-330': { 'ID': 3008, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-331': { 'ID': 3009, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-332': { 'ID': 3010, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-333': { 'ID': 3011, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-334': { 'ID': 3012, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-335': { 'ID': 3013, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-336': { 'ID': 3014, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-337': { 'ID': 3015, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-338': { 'ID': 3016, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-339': { 'ID': 3017, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-340': { 'ID': 3018, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-341': { 'ID': 3019, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-342': { 'ID': 3020, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-343': { 'ID': 3021, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-344': { 'ID': 3022, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-345': { 'ID': 3023, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-346': { 'ID': 3024, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-347': { 'ID': 3025, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-348': { 'ID': 3026, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-349': { 'ID': 3027, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-350': { 'ID': 3028, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-351': { 'ID': 3029, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-352': { 'ID': 3030, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-353': { 'ID': 3031, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-354': { 'ID': 3032, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-355': { 'ID': 3033, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-356': { 'ID': 3034, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-357': { 'ID': 3035, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-358': { 'ID': 3036, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-359': { 'ID': 3037, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-360': { 'ID': 3038, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-361': { 'ID': 3039, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-362': { 'ID': 3040, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-363': { 'ID': 3041, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-364': { 'ID': 3042, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-365': { 'ID': 3043, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-366': { 'ID': 3044, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-367': { 'ID': 3045, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-368': { 'ID': 3046, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-369': { 'ID': 3047, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-370': { 'ID': 3048, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-371': { 'ID': 3049, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-372': { 'ID': 3050, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-373': { 'ID': 3051, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-374': { 'ID': 3052, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-375': { 'ID': 3053, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-376': { 'ID': 3054, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-377': { 'ID': 3055, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-378': { 'ID': 3056, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-379': { 'ID': 3057, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-380': { 'ID': 3058, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-381': { 'ID': 3059, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-382': { 'ID': 3060, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-383': { 'ID': 3061, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-384': { 'ID': 3062, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-385': { 'ID': 3063, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-386': { 'ID': 3064, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-387': { 'ID': 3065, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-388': { 'ID': 3066, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-389': { 'ID': 3067, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-390': { 'ID': 3068, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-391': { 'ID': 3069, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-392': { 'ID': 3070, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-393': { 'ID': 3071, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-394': { 'ID': 3072, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-395': { 'ID': 3073, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-396': { 'ID': 3074, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-397': { 'ID': 3075, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-398': { 'ID': 3076, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-399': { 'ID': 3077, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-400': { 'ID': 3078, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-401': { 'ID': 3079, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-402': { 'ID': 3080, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-403': { 'ID': 3081, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-404': { 'ID': 3082, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-405': { 'ID': 3083, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-406': { 'ID': 3084, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-407': { 'ID': 3085, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-408': { 'ID': 3086, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-409': { 'ID': 3087, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-410': { 'ID': 3088, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-411': { 'ID': 3089, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-412': { 'ID': 3090, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-413': { 'ID': 3091, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-414': { 'ID': 3092, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-415': { 'ID': 3093, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-416': { 'ID': 3094, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-417': { 'ID': 3095, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-418': { 'ID': 3096, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-419': { 'ID': 3097, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-420': { 'ID': 3098, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-421': { 'ID': 3099, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-422': { 'ID': 3100, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-423': { 'ID': 3101, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-424': { 'ID': 3102, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-425': { 'ID': 3103, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-426': { 'ID': 3104, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-427': { 'ID': 3105, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-428': { 'ID': 3106, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-429': { 'ID': 3107, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-430': { 'ID': 3108, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-431': { 'ID': 3109, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-432': { 'ID': 3110, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-433': { 'ID': 3111, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-434': { 'ID': 3112, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-435': { 'ID': 3113, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-436': { 'ID': 3114, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-437': { 'ID': 3115, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-438': { 'ID': 3116, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-439': { 'ID': 3117, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-440': { 'ID': 3118, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-441': { 'ID': 3119, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-442': { 'ID': 3120, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-443': { 'ID': 3121, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-444': { 'ID': 3122, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-445': { 'ID': 3123, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-446': { 'ID': 3124, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-447': { 'ID': 3125, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-448': { 'ID': 3126, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-449': { 'ID': 3127, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-450': { 'ID': 3128, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-451': { 'ID': 3129, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-452': { 'ID': 3130, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-453': { 'ID': 3131, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-454': { 'ID': 3132, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-455': { 'ID': 3133, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-456': { 'ID': 3134, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-457': { 'ID': 3135, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-458': { 'ID': 3136, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-459': { 'ID': 3137, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-460': { 'ID': 3138, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-461': { 'ID': 3139, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-462': { 'ID': 3140, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-463': { 'ID': 3141, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-464': { 'ID': 3142, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-465': { 'ID': 3143, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-466': { 'ID': 3144, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-467': { 'ID': 3145, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-468': { 'ID': 3146, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-469': { 'ID': 3147, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-470': { 'ID': 3148, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-471': { 'ID': 3149, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-472': { 'ID': 3150, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-473': { 'ID': 3151, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-474': { 'ID': 3152, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-475': { 'ID': 3153, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-476': { 'ID': 3154, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-477': { 'ID': 3155, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-478': { 'ID': 3156, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-479': { 'ID': 3157, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-480': { 'ID': 3158, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-481': { 'ID': 3159, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-482': { 'ID': 3160, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-483': { 'ID': 3161, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-484': { 'ID': 3162, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-485': { 'ID': 3163, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-486': { 'ID': 3164, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-487': { 'ID': 3165, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-488': { 'ID': 3166, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-489': { 'ID': 3167, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-490': { 'ID': 3168, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-491': { 'ID': 3169, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-492': { 'ID': 3170, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-493': { 'ID': 3171, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-494': { 'ID': 3172, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-495': { 'ID': 3173, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-496': { 'ID': 3174, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-497': { 'ID': 3175, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-498': { 'ID': 3176, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-499': { 'ID': 3177, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-500': { 'ID': 3178, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-501': { 'ID': 3179, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-502': { 'ID': 3180, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-503': { 'ID': 3181, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-504': { 'ID': 3182, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-505': { 'ID': 3183, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-506': { 'ID': 3184, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-507': { 'ID': 3185, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-508': { 'ID': 3186, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-509': { 'ID': 3187, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-510': { 'ID': 3188, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-511': { 'ID': 3189, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-512': { 'ID': 3190, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-513': { 'ID': 3191, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-514': { 'ID': 3192, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-515': { 'ID': 3193, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-516': { 'ID': 3194, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-517': { 'ID': 3195, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-518': { 'ID': 3196, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-519': { 'ID': 3197, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-520': { 'ID': 3198, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-521': { 'ID': 3199, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-522': { 'ID': 3200, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-523': { 'ID': 3201, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-524': { 'ID': 3202, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-525': { 'ID': 3203, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-526': { 'ID': 3204, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-527': { 'ID': 3205, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-528': { 'ID': 3206, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-529': { 'ID': 3207, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-530': { 'ID': 3208, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-531': { 'ID': 3209, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-532': { 'ID': 3210, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-533': { 'ID': 3211, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-534': { 'ID': 3212, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-535': { 'ID': 3213, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-536': { 'ID': 3214, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-537': { 'ID': 3215, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-538': { 'ID': 3216, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-539': { 'ID': 3217, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-540': { 'ID': 3218, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-541': { 'ID': 3219, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-542': { 'ID': 3220, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-543': { 'ID': 3221, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-544': { 'ID': 3222, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-545': { 'ID': 3223, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-546': { 'ID': 3224, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-547': { 'ID': 3225, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-548': { 'ID': 3226, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-549': { 'ID': 3227, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-550': { 'ID': 3228, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-551': { 'ID': 3229, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-552': { 'ID': 3230, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-553': { 'ID': 3231, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-554': { 'ID': 3232, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-555': { 'ID': 3233, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-556': { 'ID': 3234, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-557': { 'ID': 3235, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-558': { 'ID': 3236, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-559': { 'ID': 3237, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-560': { 'ID': 3238, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-561': { 'ID': 3239, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-562': { 'ID': 3240, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-563': { 'ID': 3241, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-564': { 'ID': 3242, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-565': { 'ID': 3243, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-566': { 'ID': 3244, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-567': { 'ID': 3245, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-568': { 'ID': 3246, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-569': { 'ID': 3247, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-570': { 'ID': 3248, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-571': { 'ID': 3249, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-572': { 'ID': 3250, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-573': { 'ID': 3499, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-574': { 'ID': 3500, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-575': { 'ID': 3501, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-576': { 'ID': 3502, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-577': { 'ID': 3503, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-578': { 'ID': 3504, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-579': { 'ID': 3505, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-580': { 'ID': 3506, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-581': { 'ID': 3507, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-582': { 'ID': 3508, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-583': { 'ID': 3509, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-584': { 'ID': 3510, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-585': { 'ID': 3511, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-586': { 'ID': 3512, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-587': { 'ID': 3513, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-588': { 'ID': 3514, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-589': { 'ID': 3515, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-590': { 'ID': 3516, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-591': { 'ID': 3517, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-592': { 'ID': 3518, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-593': { 'ID': 3519, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-594': { 'ID': 3520, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-595': { 'ID': 3521, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-596': { 'ID': 3522, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-597': { 'ID': 3523, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-598': { 'ID': 3524, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-599': { 'ID': 3525, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-600': { 'ID': 3526, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-601': { 'ID': 3527, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-602': { 'ID': 3528, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-603': { 'ID': 3529, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-604': { 'ID': 3530, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-605': { 'ID': 3531, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-606': { 'ID': 3532, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-607': { 'ID': 3533, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-608': { 'ID': 3534, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-609': { 'ID': 3535, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-610': { 'ID': 3536, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-611': { 'ID': 3537, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-612': { 'ID': 3538, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-613': { 'ID': 3539, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-614': { 'ID': 3540, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-615': { 'ID': 3541, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-616': { 'ID': 3542, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-617': { 'ID': 3543, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-618': { 'ID': 3544, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-619': { 'ID': 3545, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-620': { 'ID': 3546, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-621': { 'ID': 3547, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-622': { 'ID': 3548, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-623': { 'ID': 3999, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-624': { 'ID': 4000, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-625': { 'ID': 4001, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-626': { 'ID': 4002, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-627': { 'ID': 4003, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-628': { 'ID': 4004, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-629': { 'ID': 4005, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-630': { 'ID': 4006, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-631': { 'ID': 4007, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-632': { 'ID': 4008, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-633': { 'ID': 4009, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-634': { 'ID': 4010, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-635': { 'ID': 4011, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-636': { 'ID': 4012, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-637': { 'ID': 4013, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-638': { 'ID': 4014, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-639': { 'ID': 4015, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-640': { 'ID': 4016, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-641': { 'ID': 4017, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-642': { 'ID': 4018, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-643': { 'ID': 4019, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-644': { 'ID': 4020, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-645': { 'ID': 4021, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-646': { 'ID': 4022, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-647': { 'ID': 4023, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-648': { 'ID': 4024, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-649': { 'ID': 4025, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-650': { 'ID': 4026, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-651': { 'ID': 4027, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-652': { 'ID': 4028, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-653': { 'ID': 4029, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-654': { 'ID': 4030, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-655': { 'ID': 4031, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-656': { 'ID': 4032, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-657': { 'ID': 4033, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-658': { 'ID': 4034, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-659': { 'ID': 4035, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-660': { 'ID': 4036, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-661': { 'ID': 4037, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-662': { 'ID': 4038, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-663': { 'ID': 4039, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-664': { 'ID': 4040, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-665': { 'ID': 4041, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-666': { 'ID': 4042, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-667': { 'ID': 4043, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-668': { 'ID': 4044, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-669': { 'ID': 4045, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-670': { 'ID': 4046, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-671': { 'ID': 4047, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-672': { 'ID': 4048, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-673': { 'ID': 4049, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-674': { 'ID': 4050, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-675': { 'ID': 4051, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-676': { 'ID': 4052, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-677': { 'ID': 4053, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-678': { 'ID': 4054, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-679': { 'ID': 4055, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-680': { 'ID': 4056, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-681': { 'ID': 4057, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-682': { 'ID': 4058, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-683': { 'ID': 4059, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-684': { 'ID': 4060, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-685': { 'ID': 4061, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-686': { 'ID': 4062, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-687': { 'ID': 4063, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-688': { 'ID': 4064, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-689': { 'ID': 4065, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-690': { 'ID': 4066, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-691': { 'ID': 4067, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-692': { 'ID': 4068, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-693': { 'ID': 4069, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-694': { 'ID': 4070, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-695': { 'ID': 4071, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-696': { 'ID': 4072, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-697': { 'ID': 4073, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-698': { 'ID': 4074, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-699': { 'ID': 4075, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-700': { 'ID': 4076, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-701': { 'ID': 4077, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-702': { 'ID': 4078, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-703': { 'ID': 4079, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-704': { 'ID': 4080, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-705': { 'ID': 4081, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-706': { 'ID': 4082, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-707': { 'ID': 4083, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-708': { 'ID': 4084, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-709': { 'ID': 4085, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-710': { 'ID': 4086, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-711': { 'ID': 4087, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-712': { 'ID': 4088, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-713': { 'ID': 4089, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-714': { 'ID': 4090, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-715': { 'ID': 4091, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-716': { 'ID': 4092, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-717': { 'ID': 4093, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-718': { 'ID': 4094, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-719': { 'ID': 4095, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-720': { 'ID': 4096, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-721': { 'ID': 4097, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-722': { 'ID': 4098, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-723': { 'ID': 4099, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-724': { 'ID': 4100, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-725': { 'ID': 4101, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-726': { 'ID': 4102, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-727': { 'ID': 4103, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-728': { 'ID': 4104, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-729': { 'ID': 4105, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-730': { 'ID': 4106, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-731': { 'ID': 4107, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-732': { 'ID': 4108, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-733': { 'ID': 4109, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-734': { 'ID': 4110, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-735': { 'ID': 4111, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-736': { 'ID': 4112, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-737': { 'ID': 4113, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-738': { 'ID': 4114, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-739': { 'ID': 4115, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-740': { 'ID': 4116, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-741': { 'ID': 4117, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-742': { 'ID': 4118, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-743': { 'ID': 4119, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-744': { 'ID': 4120, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-745': { 'ID': 4121, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-746': { 'ID': 4122, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-747': { 'ID': 4123, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-748': { 'ID': 4124, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-749': { 'ID': 4125, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-750': { 'ID': 4126, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-751': { 'ID': 4127, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-752': { 'ID': 4128, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-753': { 'ID': 4129, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-754': { 'ID': 4130, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-755': { 'ID': 4131, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-756': { 'ID': 4132, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-757': { 'ID': 4133, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-758': { 'ID': 4134, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-759': { 'ID': 4135, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-760': { 'ID': 4136, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-761': { 'ID': 4137, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-762': { 'ID': 4138, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-763': { 'ID': 4139, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-764': { 'ID': 4140, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-765': { 'ID': 4141, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-766': { 'ID': 4142, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-767': { 'ID': 4143, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-768': { 'ID': 4144, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-769': { 'ID': 4145, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-770': { 'ID': 4146, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-771': { 'ID': 4147, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-772': { 'ID': 4148, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-773': { 'ID': 4149, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-774': { 'ID': 4150, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-775': { 'ID': 4151, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-776': { 'ID': 4152, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-777': { 'ID': 4153, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-778': { 'ID': 4154, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-779': { 'ID': 4155, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-780': { 'ID': 4156, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-781': { 'ID': 4157, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-782': { 'ID': 4158, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-783': { 'ID': 4159, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-784': { 'ID': 4160, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-785': { 'ID': 4161, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-786': { 'ID': 4162, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-787': { 'ID': 4163, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-788': { 'ID': 4164, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-789': { 'ID': 4165, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-790': { 'ID': 4166, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-791': { 'ID': 4167, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-792': { 'ID': 4168, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-793': { 'ID': 4169, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-794': { 'ID': 4170, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-795': { 'ID': 4171, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-796': { 'ID': 4172, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-797': { 'ID': 4173, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-798': { 'ID': 4174, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-799': { 'ID': 4175, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-800': { 'ID': 4176, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-801': { 'ID': 4177, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-802': { 'ID': 4178, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-803': { 'ID': 4179, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-804': { 'ID': 4180, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-805': { 'ID': 4181, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-806': { 'ID': 4182, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-807': { 'ID': 4183, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-808': { 'ID': 4184, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-809': { 'ID': 4185, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-810': { 'ID': 4186, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-811': { 'ID': 4187, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-812': { 'ID': 4188, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-813': { 'ID': 4189, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-814': { 'ID': 4190, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-815': { 'ID': 4191, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-816': { 'ID': 4192, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-817': { 'ID': 4193, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-818': { 'ID': 4194, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-819': { 'ID': 4195, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-820': { 'ID': 4196, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-821': { 'ID': 4197, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-822': { 'ID': 4198, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-823': { 'ID': 4199, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-824': { 'ID': 4200, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-825': { 'ID': 4201, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-826': { 'ID': 4202, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-827': { 'ID': 4203, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-828': { 'ID': 4204, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-829': { 'ID': 4205, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-830': { 'ID': 4206, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-831': { 'ID': 4207, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-832': { 'ID': 4208, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-833': { 'ID': 4209, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-834': { 'ID': 4210, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-835': { 'ID': 4211, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-836': { 'ID': 4212, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-837': { 'ID': 4213, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-838': { 'ID': 4214, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-839': { 'ID': 4215, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-840': { 'ID': 4216, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-841': { 'ID': 4217, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-842': { 'ID': 4218, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-843': { 'ID': 4219, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-844': { 'ID': 4220, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-845': { 'ID': 4221, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-846': { 'ID': 4222, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-847': { 'ID': 4223, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-848': { 'ID': 4224, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-849': { 'ID': 4225, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-850': { 'ID': 4226, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-851': { 'ID': 4227, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-852': { 'ID': 4228, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-853': { 'ID': 4229, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-854': { 'ID': 4230, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-855': { 'ID': 4231, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-856': { 'ID': 4232, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-857': { 'ID': 4233, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-858': { 'ID': 4234, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-859': { 'ID': 4235, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-860': { 'ID': 4236, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-861': { 'ID': 4237, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-862': { 'ID': 4238, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-863': { 'ID': 4239, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-864': { 'ID': 4240, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-865': { 'ID': 4241, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-866': { 'ID': 4242, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-867': { 'ID': 4243, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-868': { 'ID': 4244, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-869': { 'ID': 4245, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-870': { 'ID': 4246, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-871': { 'ID': 4247, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-872': { 'ID': 4248, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-873': { 'ID': 4249, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-874': { 'ID': 4250, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-875': { 'ID': 4251, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-876': { 'ID': 4252, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-877': { 'ID': 4253, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-878': { 'ID': 4254, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-879': { 'ID': 4255, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-880': { 'ID': 4256, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-881': { 'ID': 4257, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-882': { 'ID': 4258, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-883': { 'ID': 4259, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-884': { 'ID': 4260, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-885': { 'ID': 4261, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-886': { 'ID': 4262, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-887': { 'ID': 4263, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-888': { 'ID': 4264, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-889': { 'ID': 4265, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-890': { 'ID': 4266, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-891': { 'ID': 4267, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-892': { 'ID': 4268, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-893': { 'ID': 4269, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-894': { 'ID': 4270, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-895': { 'ID': 4271, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-896': { 'ID': 4272, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-897': { 'ID': 4273, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-898': { 'ID': 4274, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-899': { 'ID': 4275, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-900': { 'ID': 4276, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-901': { 'ID': 4277, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-902': { 'ID': 4278, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-903': { 'ID': 4279, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-904': { 'ID': 4280, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-905': { 'ID': 4281, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-906': { 'ID': 4282, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-907': { 'ID': 4283, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-908': { 'ID': 4284, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-909': { 'ID': 4285, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-910': { 'ID': 4286, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-911': { 'ID': 4287, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-912': { 'ID': 4288, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-913': { 'ID': 4289, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-914': { 'ID': 4290, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-915': { 'ID': 4291, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-916': { 'ID': 4292, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-917': { 'ID': 4293, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-918': { 'ID': 4294, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-919': { 'ID': 4295, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-920': { 'ID': 4296, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-921': { 'ID': 4297, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-922': { 'ID': 4298, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-923': { 'ID': 4299, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-924': { 'ID': 4300, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-925': { 'ID': 4301, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-926': { 'ID': 4302, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-927': { 'ID': 4303, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-928': { 'ID': 4304, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-929': { 'ID': 4305, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-930': { 'ID': 4306, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-931': { 'ID': 4307, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-932': { 'ID': 4308, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-933': { 'ID': 4309, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-934': { 'ID': 4310, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-935': { 'ID': 4311, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-936': { 'ID': 4312, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-937': { 'ID': 4313, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-938': { 'ID': 4314, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-939': { 'ID': 4315, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-940': { 'ID': 4316, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-941': { 'ID': 4317, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-942': { 'ID': 4318, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-943': { 'ID': 4319, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-944': { 'ID': 4320, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-945': { 'ID': 4321, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-946': { 'ID': 4322, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-947': { 'ID': 4323, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-948': { 'ID': 4324, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-949': { 'ID': 4325, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-950': { 'ID': 4326, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-951': { 'ID': 4327, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-952': { 'ID': 4328, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-953': { 'ID': 4329, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-954': { 'ID': 4330, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-955': { 'ID': 4331, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-956': { 'ID': 4332, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-957': { 'ID': 4333, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-958': { 'ID': 4334, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-959': { 'ID': 4335, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-960': { 'ID': 4336, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-961': { 'ID': 4337, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-962': { 'ID': 4338, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-963': { 'ID': 4339, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-964': { 'ID': 4340, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-965': { 'ID': 4341, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-966': { 'ID': 4342, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-967': { 'ID': 4343, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-968': { 'ID': 4344, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-969': { 'ID': 4345, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-970': { 'ID': 4346, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-971': { 'ID': 4347, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-972': { 'ID': 4348, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-973': { 'ID': 4349, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-974': { 'ID': 4350, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-975': { 'ID': 4351, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-976': { 'ID': 4352, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-977': { 'ID': 4353, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-978': { 'ID': 4354, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-979': { 'ID': 4355, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-980': { 'ID': 4356, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-981': { 'ID': 4357, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-982': { 'ID': 4358, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-983': { 'ID': 4359, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-984': { 'ID': 4360, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-985': { 'ID': 4361, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-986': { 'ID': 4362, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-987': { 'ID': 4363, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-988': { 'ID': 4364, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-989': { 'ID': 4365, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-990': { 'ID': 4366, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-991': { 'ID': 4367, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-992': { 'ID': 4368, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-993': { 'ID': 4369, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-994': { 'ID': 4370, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-995': { 'ID': 4371, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-996': { 'ID': 4372, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-997': { 'ID': 4373, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-998': { 'ID': 4374, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-999': { 'ID': 4375, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1000': { 'ID': 4376, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1001': { 'ID': 4377, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1002': { 'ID': 4378, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1003': { 'ID': 4379, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1004': { 'ID': 4380, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1005': { 'ID': 4381, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1006': { 'ID': 4382, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1007': { 'ID': 4383, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1008': { 'ID': 4384, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1009': { 'ID': 4385, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1010': { 'ID': 4386, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1011': { 'ID': 4387, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1012': { 'ID': 4388, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1013': { 'ID': 4389, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1014': { 'ID': 4390, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1015': { 'ID': 4391, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1016': { 'ID': 4392, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1017': { 'ID': 4393, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1018': { 'ID': 4394, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1019': { 'ID': 4395, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1020': { 'ID': 4396, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1021': { 'ID': 4397, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1022': { 'ID': 4398, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1023': { 'ID': 4399, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1024': { 'ID': 4400, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1025': { 'ID': 4401, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1026': { 'ID': 4402, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1027': { 'ID': 4403, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1028': { 'ID': 4404, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1029': { 'ID': 4405, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1030': { 'ID': 4406, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1031': { 'ID': 4407, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1032': { 'ID': 4408, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1033': { 'ID': 4409, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1034': { 'ID': 4410, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1035': { 'ID': 4411, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1036': { 'ID': 4412, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1037': { 'ID': 4413, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1038': { 'ID': 4414, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1039': { 'ID': 4415, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1040': { 'ID': 4416, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1041': { 'ID': 4417, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1042': { 'ID': 4418, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1043': { 'ID': 4419, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1044': { 'ID': 4420, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1045': { 'ID': 4421, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1046': { 'ID': 4422, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1047': { 'ID': 4423, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1048': { 'ID': 4424, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1049': { 'ID': 4425, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1050': { 'ID': 4426, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1051': { 'ID': 4427, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1052': { 'ID': 4428, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1053': { 'ID': 4429, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1054': { 'ID': 4430, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1055': { 'ID': 4431, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1056': { 'ID': 4432, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1057': { 'ID': 4433, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1058': { 'ID': 4434, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1059': { 'ID': 4435, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1060': { 'ID': 4436, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1061': { 'ID': 4437, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1062': { 'ID': 4438, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1063': { 'ID': 4439, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1064': { 'ID': 4440, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1065': { 'ID': 4441, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1066': { 'ID': 4442, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1067': { 'ID': 4443, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1068': { 'ID': 4444, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1069': { 'ID': 4445, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1070': { 'ID': 4446, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1071': { 'ID': 4447, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1072': { 'ID': 4448, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1073': { 'ID': 4449, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1074': { 'ID': 4450, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1075': { 'ID': 4451, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1076': { 'ID': 4452, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1077': { 'ID': 4453, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1078': { 'ID': 4454, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1079': { 'ID': 4455, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1080': { 'ID': 4456, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1081': { 'ID': 4457, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1082': { 'ID': 4458, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1083': { 'ID': 4459, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1084': { 'ID': 4460, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1085': { 'ID': 4461, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1086': { 'ID': 4462, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1087': { 'ID': 4463, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1088': { 'ID': 4464, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1089': { 'ID': 4465, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1090': { 'ID': 4466, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1091': { 'ID': 4467, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1092': { 'ID': 4468, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1093': { 'ID': 4469, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1094': { 'ID': 4470, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1095': { 'ID': 4471, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1096': { 'ID': 4472, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1097': { 'ID': 4473, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1098': { 'ID': 4474, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1099': { 'ID': 4475, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1100': { 'ID': 4476, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1101': { 'ID': 4477, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1102': { 'ID': 4478, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1103': { 'ID': 4479, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1104': { 'ID': 4480, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1105': { 'ID': 4481, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1106': { 'ID': 4482, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1107': { 'ID': 4483, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1108': { 'ID': 4484, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1109': { 'ID': 4485, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1110': { 'ID': 4486, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1111': { 'ID': 4487, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1112': { 'ID': 4488, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1113': { 'ID': 4489, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1114': { 'ID': 4490, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1115': { 'ID': 4491, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1116': { 'ID': 4492, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1117': { 'ID': 4493, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1118': { 'ID': 4494, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1119': { 'ID': 4495, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1120': { 'ID': 4496, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1121': { 'ID': 4497, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1122': { 'ID': 4498, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1123': { 'ID': 4499, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1124': { 'ID': 4500, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1125': { 'ID': 4501, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1126': { 'ID': 4502, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1127': { 'ID': 4503, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1128': { 'ID': 4504, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1129': { 'ID': 4505, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1130': { 'ID': 4506, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1131': { 'ID': 4507, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1132': { 'ID': 4508, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1133': { 'ID': 4509, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1134': { 'ID': 4510, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1135': { 'ID': 4511, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1136': { 'ID': 4512, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1137': { 'ID': 4513, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1138': { 'ID': 4514, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1139': { 'ID': 4515, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1140': { 'ID': 4516, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1141': { 'ID': 4517, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1142': { 'ID': 4518, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1143': { 'ID': 4519, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1144': { 'ID': 4520, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1145': { 'ID': 4521, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1146': { 'ID': 4522, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1147': { 'ID': 4523, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1148': { 'ID': 4524, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1149': { 'ID': 4525, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1150': { 'ID': 4526, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1151': { 'ID': 4527, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1152': { 'ID': 4528, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1153': { 'ID': 4529, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1154': { 'ID': 4530, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1155': { 'ID': 4531, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1156': { 'ID': 4532, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1157': { 'ID': 4533, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1158': { 'ID': 4534, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1159': { 'ID': 4535, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1160': { 'ID': 4536, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1161': { 'ID': 4537, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1162': { 'ID': 4538, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1163': { 'ID': 4539, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1164': { 'ID': 4540, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1165': { 'ID': 4541, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1166': { 'ID': 4542, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1167': { 'ID': 4543, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1168': { 'ID': 4544, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1169': { 'ID': 4545, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1170': { 'ID': 4546, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1171': { 'ID': 4547, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1172': { 'ID': 4548, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1173': { 'ID': 4549, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1174': { 'ID': 4550, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1175': { 'ID': 4551, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1176': { 'ID': 4552, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1177': { 'ID': 4553, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1178': { 'ID': 4554, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1179': { 'ID': 4555, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1180': { 'ID': 4556, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1181': { 'ID': 4557, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1182': { 'ID': 4558, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1183': { 'ID': 4559, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1184': { 'ID': 4560, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1185': { 'ID': 4561, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1186': { 'ID': 4562, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1187': { 'ID': 4563, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1188': { 'ID': 4564, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1189': { 'ID': 4565, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1190': { 'ID': 4566, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1191': { 'ID': 4567, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1192': { 'ID': 4568, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1193': { 'ID': 4569, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1194': { 'ID': 4570, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1195': { 'ID': 4571, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1196': { 'ID': 4572, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1197': { 'ID': 4573, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1198': { 'ID': 4574, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1199': { 'ID': 4575, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1200': { 'ID': 4576, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1201': { 'ID': 4577, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1202': { 'ID': 4578, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1203': { 'ID': 4579, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1204': { 'ID': 4580, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1205': { 'ID': 4581, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1206': { 'ID': 4582, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1207': { 'ID': 4583, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1208': { 'ID': 4584, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1209': { 'ID': 4585, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1210': { 'ID': 4586, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1211': { 'ID': 4587, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1212': { 'ID': 4588, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1213': { 'ID': 4589, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1214': { 'ID': 4590, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1215': { 'ID': 4591, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1216': { 'ID': 4592, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1217': { 'ID': 4593, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1218': { 'ID': 4594, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1219': { 'ID': 4595, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1220': { 'ID': 4596, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1221': { 'ID': 4597, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1222': { 'ID': 4598, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1223': { 'ID': 4599, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1224': { 'ID': 4600, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1225': { 'ID': 4601, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1226': { 'ID': 4602, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1227': { 'ID': 4603, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1228': { 'ID': 4604, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1229': { 'ID': 4605, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1230': { 'ID': 4606, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1231': { 'ID': 4607, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1232': { 'ID': 4608, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1233': { 'ID': 4609, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1234': { 'ID': 4610, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1235': { 'ID': 4611, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1236': { 'ID': 4612, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1237': { 'ID': 4613, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1238': { 'ID': 4614, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1239': { 'ID': 4615, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1240': { 'ID': 4616, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1241': { 'ID': 4617, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1242': { 'ID': 4618, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1243': { 'ID': 4619, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1244': { 'ID': 4620, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1245': { 'ID': 4621, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1246': { 'ID': 4622, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1247': { 'ID': 4623, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1248': { 'ID': 4624, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1249': { 'ID': 4625, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1250': { 'ID': 4626, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1251': { 'ID': 4627, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1252': { 'ID': 4628, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1253': { 'ID': 4629, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1254': { 'ID': 4630, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1255': { 'ID': 4631, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1256': { 'ID': 4632, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1257': { 'ID': 4633, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1258': { 'ID': 4634, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1259': { 'ID': 4635, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1260': { 'ID': 4636, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1261': { 'ID': 4637, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1262': { 'ID': 4638, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1263': { 'ID': 4639, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1264': { 'ID': 4640, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1265': { 'ID': 4641, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1266': { 'ID': 4642, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1267': { 'ID': 4643, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1268': { 'ID': 4644, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1269': { 'ID': 4645, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1270': { 'ID': 4646, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1271': { 'ID': 4647, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1272': { 'ID': 4648, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1273': { 'ID': 4649, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1274': { 'ID': 4650, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1275': { 'ID': 4651, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1276': { 'ID': 4652, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1277': { 'ID': 4653, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1278': { 'ID': 4654, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1279': { 'ID': 4655, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1280': { 'ID': 4656, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1281': { 'ID': 4657, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1282': { 'ID': 4658, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1283': { 'ID': 4659, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1284': { 'ID': 4660, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1285': { 'ID': 4661, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1286': { 'ID': 4662, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1287': { 'ID': 4663, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1288': { 'ID': 4664, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1289': { 'ID': 4665, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1290': { 'ID': 4666, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1291': { 'ID': 4667, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1292': { 'ID': 4668, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1293': { 'ID': 4669, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1294': { 'ID': 4670, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1295': { 'ID': 4671, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1296': { 'ID': 4672, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1297': { 'ID': 4673, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1298': { 'ID': 4674, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1299': { 'ID': 4675, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1300': { 'ID': 4676, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1301': { 'ID': 4677, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1302': { 'ID': 4678, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1303': { 'ID': 4679, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1304': { 'ID': 4680, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1305': { 'ID': 4681, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1306': { 'ID': 4682, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1307': { 'ID': 4683, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1308': { 'ID': 4684, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1309': { 'ID': 4685, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1310': { 'ID': 4686, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1311': { 'ID': 4687, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1312': { 'ID': 4688, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1313': { 'ID': 4689, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1314': { 'ID': 4690, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1315': { 'ID': 4691, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1316': { 'ID': 4692, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1317': { 'ID': 4693, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1318': { 'ID': 4694, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1319': { 'ID': 4695, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1320': { 'ID': 4696, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1321': { 'ID': 4697, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1322': { 'ID': 4698, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1323': { 'ID': 4699, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1324': { 'ID': 4700, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1325': { 'ID': 4701, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1326': { 'ID': 4702, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1327': { 'ID': 4703, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1328': { 'ID': 4704, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1329': { 'ID': 4705, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1330': { 'ID': 4706, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1331': { 'ID': 4707, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1332': { 'ID': 4708, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1333': { 'ID': 4709, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1334': { 'ID': 4710, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1335': { 'ID': 4711, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1336': { 'ID': 4712, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1337': { 'ID': 4713, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1338': { 'ID': 4714, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1339': { 'ID': 4715, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1340': { 'ID': 4716, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1341': { 'ID': 4717, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1342': { 'ID': 4718, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1343': { 'ID': 4719, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1344': { 'ID': 4720, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1345': { 'ID': 4721, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1346': { 'ID': 4722, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1347': { 'ID': 4723, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1348': { 'ID': 4724, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1349': { 'ID': 4725, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1350': { 'ID': 4726, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1351': { 'ID': 4727, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1352': { 'ID': 4728, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1353': { 'ID': 4729, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1354': { 'ID': 4730, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1355': { 'ID': 4731, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1356': { 'ID': 4732, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1357': { 'ID': 4733, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1358': { 'ID': 4734, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1359': { 'ID': 4735, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1360': { 'ID': 4736, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1361': { 'ID': 4737, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1362': { 'ID': 4738, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1363': { 'ID': 4739, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1364': { 'ID': 4740, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1365': { 'ID': 4741, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1366': { 'ID': 4742, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1367': { 'ID': 4743, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1368': { 'ID': 4744, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1369': { 'ID': 4745, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1370': { 'ID': 4746, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1371': { 'ID': 4747, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1372': { 'ID': 4748, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1373': { 'ID': 4749, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1374': { 'ID': 4750, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1375': { 'ID': 4751, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1376': { 'ID': 4752, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1377': { 'ID': 4753, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1378': { 'ID': 4754, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1379': { 'ID': 4755, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1380': { 'ID': 4756, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1381': { 'ID': 4757, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1382': { 'ID': 4758, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1383': { 'ID': 4759, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1384': { 'ID': 4760, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1385': { 'ID': 4761, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1386': { 'ID': 4762, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1387': { 'ID': 4763, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1388': { 'ID': 4764, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1389': { 'ID': 4765, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1390': { 'ID': 4766, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1391': { 'ID': 4767, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1392': { 'ID': 4768, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1393': { 'ID': 4769, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1394': { 'ID': 4770, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1395': { 'ID': 4771, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1396': { 'ID': 4772, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1397': { 'ID': 4773, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1398': { 'ID': 4774, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1399': { 'ID': 4775, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1400': { 'ID': 4776, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1401': { 'ID': 4777, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1402': { 'ID': 4778, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1403': { 'ID': 4779, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1404': { 'ID': 4780, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1405': { 'ID': 4781, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1406': { 'ID': 4782, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1407': { 'ID': 4783, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1408': { 'ID': 4784, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1409': { 'ID': 4785, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1410': { 'ID': 4786, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1411': { 'ID': 4787, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1412': { 'ID': 4788, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1413': { 'ID': 4789, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1414': { 'ID': 4790, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1415': { 'ID': 4791, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1416': { 'ID': 4792, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1417': { 'ID': 4793, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1418': { 'ID': 4794, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1419': { 'ID': 4795, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1420': { 'ID': 4796, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1421': { 'ID': 4797, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1422': { 'ID': 4798, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1423': { 'ID': 4799, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1424': { 'ID': 4800, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1425': { 'ID': 4801, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1426': { 'ID': 4802, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1427': { 'ID': 4803, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1428': { 'ID': 4804, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1429': { 'ID': 4805, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1430': { 'ID': 4806, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1431': { 'ID': 4807, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1432': { 'ID': 4808, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1433': { 'ID': 4809, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1434': { 'ID': 4810, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1435': { 'ID': 4811, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1436': { 'ID': 4812, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1437': { 'ID': 4813, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1438': { 'ID': 4814, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1439': { 'ID': 4815, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1440': { 'ID': 4816, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1441': { 'ID': 4817, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1442': { 'ID': 4818, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1443': { 'ID': 4819, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1444': { 'ID': 4820, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1445': { 'ID': 4821, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1446': { 'ID': 4822, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1447': { 'ID': 4823, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1448': { 'ID': 4824, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1449': { 'ID': 4825, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1450': { 'ID': 4826, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1451': { 'ID': 4827, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1452': { 'ID': 4828, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1453': { 'ID': 4829, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1454': { 'ID': 4830, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1455': { 'ID': 4831, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1456': { 'ID': 4832, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1457': { 'ID': 4833, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1458': { 'ID': 4834, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1459': { 'ID': 4835, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1460': { 'ID': 4836, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1461': { 'ID': 4837, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1462': { 'ID': 4838, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1463': { 'ID': 4839, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1464': { 'ID': 4840, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1465': { 'ID': 4841, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1466': { 'ID': 4842, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1467': { 'ID': 4843, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1468': { 'ID': 4844, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1469': { 'ID': 4845, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1470': { 'ID': 4846, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1471': { 'ID': 4847, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1472': { 'ID': 4848, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1473': { 'ID': 4849, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1474': { 'ID': 4850, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1475': { 'ID': 4851, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1476': { 'ID': 4852, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1477': { 'ID': 4853, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1478': { 'ID': 4854, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1479': { 'ID': 4855, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1480': { 'ID': 4856, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1481': { 'ID': 4857, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1482': { 'ID': 4858, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1483': { 'ID': 4859, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1484': { 'ID': 4860, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1485': { 'ID': 4861, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1486': { 'ID': 4862, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1487': { 'ID': 4863, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1488': { 'ID': 4864, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1489': { 'ID': 4865, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1490': { 'ID': 4866, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1491': { 'ID': 4867, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1492': { 'ID': 4868, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1493': { 'ID': 4869, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1494': { 'ID': 4870, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1495': { 'ID': 4871, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1496': { 'ID': 4872, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1497': { 'ID': 4873, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1498': { 'ID': 4874, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1499': { 'ID': 4875, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1500': { 'ID': 4876, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1501': { 'ID': 4877, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1502': { 'ID': 4878, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1503': { 'ID': 4879, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1504': { 'ID': 4880, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1505': { 'ID': 4881, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1506': { 'ID': 4882, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1507': { 'ID': 4883, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1508': { 'ID': 4884, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1509': { 'ID': 4885, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1510': { 'ID': 4886, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1511': { 'ID': 4887, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1512': { 'ID': 4888, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1513': { 'ID': 4889, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1514': { 'ID': 4890, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1515': { 'ID': 4891, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1516': { 'ID': 4892, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1517': { 'ID': 4893, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1518': { 'ID': 4894, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1519': { 'ID': 4895, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1520': { 'ID': 4896, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1521': { 'ID': 4897, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1522': { 'ID': 4898, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1523': { 'ID': 4899, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1524': { 'ID': 4900, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1525': { 'ID': 4901, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1526': { 'ID': 4902, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1527': { 'ID': 4903, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1528': { 'ID': 4904, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1529': { 'ID': 4905, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1530': { 'ID': 4906, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1531': { 'ID': 4907, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1532': { 'ID': 4908, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1533': { 'ID': 4909, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1534': { 'ID': 4910, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1535': { 'ID': 4911, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1536': { 'ID': 4912, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1537': { 'ID': 4913, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1538': { 'ID': 4914, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1539': { 'ID': 4915, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1540': { 'ID': 4916, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1541': { 'ID': 4917, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1542': { 'ID': 4918, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1543': { 'ID': 4919, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1544': { 'ID': 4920, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1545': { 'ID': 4921, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1546': { 'ID': 4922, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1547': { 'ID': 4923, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1548': { 'ID': 4924, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1549': { 'ID': 4925, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1550': { 'ID': 4926, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1551': { 'ID': 4927, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1552': { 'ID': 4928, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1553': { 'ID': 4929, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1554': { 'ID': 4930, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1555': { 'ID': 4931, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1556': { 'ID': 4932, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1557': { 'ID': 4933, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1558': { 'ID': 4934, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1559': { 'ID': 4935, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1560': { 'ID': 4936, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1561': { 'ID': 4937, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1562': { 'ID': 4938, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1563': { 'ID': 4939, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1564': { 'ID': 4940, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1565': { 'ID': 4941, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1566': { 'ID': 4942, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1567': { 'ID': 4943, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1568': { 'ID': 4944, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1569': { 'ID': 4945, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1570': { 'ID': 4946, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1571': { 'ID': 4947, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1572': { 'ID': 4948, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1573': { 'ID': 4949, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1574': { 'ID': 4950, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1575': { 'ID': 4951, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1576': { 'ID': 4952, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1577': { 'ID': 4953, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1578': { 'ID': 4954, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1579': { 'ID': 4955, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1580': { 'ID': 4956, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1581': { 'ID': 4957, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1582': { 'ID': 4958, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1583': { 'ID': 4959, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1584': { 'ID': 4960, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1585': { 'ID': 4961, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1586': { 'ID': 4962, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1587': { 'ID': 4963, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1588': { 'ID': 4964, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1589': { 'ID': 4965, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1590': { 'ID': 4966, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1591': { 'ID': 4967, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1592': { 'ID': 4968, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1593': { 'ID': 4969, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1594': { 'ID': 4970, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1595': { 'ID': 4971, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1596': { 'ID': 4972, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1597': { 'ID': 4973, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1598': { 'ID': 4974, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1599': { 'ID': 4975, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1600': { 'ID': 4976, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1601': { 'ID': 4977, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1602': { 'ID': 4978, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1603': { 'ID': 4979, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1604': { 'ID': 4980, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1605': { 'ID': 4981, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1606': { 'ID': 4982, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1607': { 'ID': 4983, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1608': { 'ID': 4984, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1609': { 'ID': 4985, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1610': { 'ID': 4986, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1611': { 'ID': 4987, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1612': { 'ID': 4988, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1613': { 'ID': 4989, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1614': { 'ID': 4990, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1615': { 'ID': 4991, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1616': { 'ID': 4992, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1617': { 'ID': 4993, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1618': { 'ID': 4994, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1619': { 'ID': 4995, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1620': { 'ID': 4996, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1621': { 'ID': 4997, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1622': { 'ID': 4998, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1623': { 'ID': 4999, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1624': { 'ID': 5000, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1625': { 'ID': 5001, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1626': { 'ID': 5002, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1627': { 'ID': 5003, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1628': { 'ID': 5004, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1629': { 'ID': 5005, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1630': { 'ID': 5006, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1631': { 'ID': 5007, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1632': { 'ID': 5008, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1633': { 'ID': 5009, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1634': { 'ID': 5010, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1635': { 'ID': 5011, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1636': { 'ID': 5012, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1637': { 'ID': 5013, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1638': { 'ID': 5014, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1639': { 'ID': 5015, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1640': { 'ID': 5016, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1641': { 'ID': 5017, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1642': { 'ID': 5018, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1643': { 'ID': 5019, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1644': { 'ID': 5020, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1645': { 'ID': 5021, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1646': { 'ID': 5022, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1647': { 'ID': 5023, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1648': { 'ID': 5024, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1649': { 'ID': 5025, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1650': { 'ID': 5026, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1651': { 'ID': 5027, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1652': { 'ID': 5028, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1653': { 'ID': 5029, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1654': { 'ID': 5030, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1655': { 'ID': 5031, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1656': { 'ID': 5032, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1657': { 'ID': 5033, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1658': { 'ID': 5034, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1659': { 'ID': 5035, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1660': { 'ID': 5036, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1661': { 'ID': 5037, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1662': { 'ID': 5038, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1663': { 'ID': 5039, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1664': { 'ID': 5040, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1665': { 'ID': 5041, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1666': { 'ID': 5042, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1667': { 'ID': 5043, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1668': { 'ID': 5044, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1669': { 'ID': 5045, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1670': { 'ID': 5046, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1671': { 'ID': 5047, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1672': { 'ID': 5048, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1673': { 'ID': 5049, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1674': { 'ID': 5050, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1675': { 'ID': 5051, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1676': { 'ID': 5052, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1677': { 'ID': 5053, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1678': { 'ID': 5054, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1679': { 'ID': 5055, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1680': { 'ID': 5056, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1681': { 'ID': 5057, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1682': { 'ID': 5058, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1683': { 'ID': 5059, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1684': { 'ID': 5060, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1685': { 'ID': 5061, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1686': { 'ID': 5062, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1687': { 'ID': 5063, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1688': { 'ID': 5064, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1689': { 'ID': 5065, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1690': { 'ID': 5066, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1691': { 'ID': 5067, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1692': { 'ID': 5068, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1693': { 'ID': 5069, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1694': { 'ID': 5070, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1695': { 'ID': 5071, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1696': { 'ID': 5072, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1697': { 'ID': 5073, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1698': { 'ID': 5074, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1699': { 'ID': 5075, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1700': { 'ID': 5076, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1701': { 'ID': 5077, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1702': { 'ID': 5078, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1703': { 'ID': 5079, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1704': { 'ID': 5080, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1705': { 'ID': 5081, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1706': { 'ID': 5082, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1707': { 'ID': 5083, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1708': { 'ID': 5084, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1709': { 'ID': 5085, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1710': { 'ID': 5086, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1711': { 'ID': 5087, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1712': { 'ID': 5088, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1713': { 'ID': 5089, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1714': { 'ID': 5090, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1715': { 'ID': 5091, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1716': { 'ID': 5092, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1717': { 'ID': 5093, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1718': { 'ID': 5094, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1719': { 'ID': 5095, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1720': { 'ID': 5096, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1721': { 'ID': 5097, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1722': { 'ID': 5098, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1723': { 'ID': 5099, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1724': { 'ID': 5100, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1725': { 'ID': 5101, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1726': { 'ID': 5102, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1727': { 'ID': 5103, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1728': { 'ID': 5104, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1729': { 'ID': 5105, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1730': { 'ID': 5106, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1731': { 'ID': 5107, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1732': { 'ID': 5108, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1733': { 'ID': 5109, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1734': { 'ID': 5110, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1735': { 'ID': 5111, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1736': { 'ID': 5112, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1737': { 'ID': 5113, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1738': { 'ID': 5114, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1739': { 'ID': 5115, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1740': { 'ID': 5116, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1741': { 'ID': 5117, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1742': { 'ID': 5118, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1743': { 'ID': 5119, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1744': { 'ID': 5120, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1745': { 'ID': 5121, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1746': { 'ID': 5122, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1747': { 'ID': 5123, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1748': { 'ID': 5124, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1749': { 'ID': 5125, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1750': { 'ID': 5126, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1751': { 'ID': 5127, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1752': { 'ID': 5128, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1753': { 'ID': 5129, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1754': { 'ID': 5130, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1755': { 'ID': 5131, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1756': { 'ID': 5132, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1757': { 'ID': 5133, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1758': { 'ID': 5134, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1759': { 'ID': 5135, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1760': { 'ID': 5136, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1761': { 'ID': 5137, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1762': { 'ID': 5138, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1763': { 'ID': 5139, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1764': { 'ID': 5140, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1765': { 'ID': 5141, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1766': { 'ID': 5142, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1767': { 'ID': 5143, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1768': { 'ID': 5144, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1769': { 'ID': 5145, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1770': { 'ID': 5146, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1771': { 'ID': 5147, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1772': { 'ID': 5148, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1773': { 'ID': 5149, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1774': { 'ID': 5150, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1775': { 'ID': 5151, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1776': { 'ID': 5152, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1777': { 'ID': 5153, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1778': { 'ID': 5154, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1779': { 'ID': 5155, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1780': { 'ID': 5156, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1781': { 'ID': 5157, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1782': { 'ID': 5158, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1783': { 'ID': 5159, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1784': { 'ID': 5160, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1785': { 'ID': 5161, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1786': { 'ID': 5162, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1787': { 'ID': 5163, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1788': { 'ID': 5164, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1789': { 'ID': 5165, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1790': { 'ID': 5166, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1791': { 'ID': 5167, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1792': { 'ID': 5168, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1793': { 'ID': 5169, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1794': { 'ID': 5170, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1795': { 'ID': 5171, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1796': { 'ID': 5172, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1797': { 'ID': 5173, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1798': { 'ID': 5174, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1799': { 'ID': 5175, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1800': { 'ID': 5176, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1801': { 'ID': 5177, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1802': { 'ID': 5178, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1803': { 'ID': 5179, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1804': { 'ID': 5180, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1805': { 'ID': 5181, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1806': { 'ID': 5182, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1807': { 'ID': 5183, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1808': { 'ID': 5184, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1809': { 'ID': 5185, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1810': { 'ID': 5186, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1811': { 'ID': 5187, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1812': { 'ID': 5188, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1813': { 'ID': 5189, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1814': { 'ID': 5190, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1815': { 'ID': 5191, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1816': { 'ID': 5192, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1817': { 'ID': 5193, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1818': { 'ID': 5194, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1819': { 'ID': 5195, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1820': { 'ID': 5196, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1821': { 'ID': 5197, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1822': { 'ID': 5198, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1823': { 'ID': 5199, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1824': { 'ID': 5200, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1825': { 'ID': 5201, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1826': { 'ID': 5202, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1827': { 'ID': 5203, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1828': { 'ID': 5204, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1829': { 'ID': 5205, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1830': { 'ID': 5206, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1831': { 'ID': 5207, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1832': { 'ID': 5208, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1833': { 'ID': 5209, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1834': { 'ID': 5210, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1835': { 'ID': 5211, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1836': { 'ID': 5212, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1837': { 'ID': 5213, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1838': { 'ID': 5214, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1839': { 'ID': 5215, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1840': { 'ID': 5216, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1841': { 'ID': 5217, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1842': { 'ID': 5218, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1843': { 'ID': 5219, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1844': { 'ID': 5220, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1845': { 'ID': 5221, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1846': { 'ID': 5222, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1847': { 'ID': 5223, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1848': { 'ID': 5224, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1849': { 'ID': 5225, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1850': { 'ID': 5226, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1851': { 'ID': 5227, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1852': { 'ID': 5228, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1853': { 'ID': 5229, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1854': { 'ID': 5230, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1855': { 'ID': 5231, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1856': { 'ID': 5232, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1857': { 'ID': 5233, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1858': { 'ID': 5234, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1859': { 'ID': 5235, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1860': { 'ID': 5236, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1861': { 'ID': 5237, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1862': { 'ID': 5238, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1863': { 'ID': 5239, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1864': { 'ID': 5240, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1865': { 'ID': 5241, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1866': { 'ID': 5242, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1867': { 'ID': 5243, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1868': { 'ID': 5244, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1869': { 'ID': 5245, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1870': { 'ID': 5246, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1871': { 'ID': 5247, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1872': { 'ID': 5248, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1873': { 'ID': 5249, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1874': { 'ID': 5250, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1875': { 'ID': 5251, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1876': { 'ID': 5252, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1877': { 'ID': 5253, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1878': { 'ID': 5254, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1879': { 'ID': 5255, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1880': { 'ID': 5256, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1881': { 'ID': 5257, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1882': { 'ID': 5258, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1883': { 'ID': 5259, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1884': { 'ID': 5260, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1885': { 'ID': 5261, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1886': { 'ID': 5262, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1887': { 'ID': 5263, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1888': { 'ID': 5264, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1889': { 'ID': 5265, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1890': { 'ID': 5266, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1891': { 'ID': 5267, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1892': { 'ID': 5268, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1893': { 'ID': 5269, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1894': { 'ID': 5270, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1895': { 'ID': 5271, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1896': { 'ID': 5272, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1897': { 'ID': 5273, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1898': { 'ID': 5274, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1899': { 'ID': 5275, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1900': { 'ID': 5276, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1901': { 'ID': 5277, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1902': { 'ID': 5278, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1903': { 'ID': 5279, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1904': { 'ID': 5280, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1905': { 'ID': 5281, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1906': { 'ID': 5282, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1907': { 'ID': 5283, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1908': { 'ID': 5284, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1909': { 'ID': 5285, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1910': { 'ID': 5286, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1911': { 'ID': 5287, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1912': { 'ID': 5288, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1913': { 'ID': 5289, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1914': { 'ID': 5290, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1915': { 'ID': 5291, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1916': { 'ID': 5292, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1917': { 'ID': 5293, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1918': { 'ID': 5294, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1919': { 'ID': 5295, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1920': { 'ID': 5296, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1921': { 'ID': 5297, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1922': { 'ID': 5298, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1923': { 'ID': 5299, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1924': { 'ID': 5300, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1925': { 'ID': 5301, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1926': { 'ID': 5302, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1927': { 'ID': 5303, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1928': { 'ID': 5304, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1929': { 'ID': 5305, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1930': { 'ID': 5306, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1931': { 'ID': 5307, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1932': { 'ID': 5308, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1933': { 'ID': 5309, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1934': { 'ID': 5310, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1935': { 'ID': 5311, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1936': { 'ID': 5312, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1937': { 'ID': 5313, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1938': { 'ID': 5314, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1939': { 'ID': 5315, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1940': { 'ID': 5316, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1941': { 'ID': 5317, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1942': { 'ID': 5318, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1943': { 'ID': 5319, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1944': { 'ID': 5320, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1945': { 'ID': 5321, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1946': { 'ID': 5322, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1947': { 'ID': 5323, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1948': { 'ID': 5324, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1949': { 'ID': 5325, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1950': { 'ID': 5326, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1951': { 'ID': 5327, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1952': { 'ID': 5328, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1953': { 'ID': 5329, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1954': { 'ID': 5330, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1955': { 'ID': 5331, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1956': { 'ID': 5332, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1957': { 'ID': 5333, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1958': { 'ID': 5334, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1959': { 'ID': 5335, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1960': { 'ID': 5336, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1961': { 'ID': 5337, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1962': { 'ID': 5338, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1963': { 'ID': 5339, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1964': { 'ID': 5340, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1965': { 'ID': 5341, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1966': { 'ID': 5342, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1967': { 'ID': 5343, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1968': { 'ID': 5344, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1969': { 'ID': 5345, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1970': { 'ID': 5346, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1971': { 'ID': 5347, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1972': { 'ID': 5348, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1973': { 'ID': 5349, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1974': { 'ID': 5350, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1975': { 'ID': 5351, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1976': { 'ID': 5352, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1977': { 'ID': 5353, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1978': { 'ID': 5354, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1979': { 'ID': 5355, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1980': { 'ID': 5356, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1981': { 'ID': 5357, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1982': { 'ID': 5358, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1983': { 'ID': 5359, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1984': { 'ID': 5360, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1985': { 'ID': 5361, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1986': { 'ID': 5362, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1987': { 'ID': 5363, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1988': { 'ID': 5364, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1989': { 'ID': 5365, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1990': { 'ID': 5366, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1991': { 'ID': 5367, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1992': { 'ID': 5368, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1993': { 'ID': 5369, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1994': { 'ID': 5370, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1995': { 'ID': 5371, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1996': { 'ID': 5372, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1997': { 'ID': 5373, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1998': { 'ID': 5374, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-1999': { 'ID': 5375, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2000': { 'ID': 5376, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2001': { 'ID': 5377, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2002': { 'ID': 5378, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2003': { 'ID': 5379, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2004': { 'ID': 5380, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2005': { 'ID': 5381, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2006': { 'ID': 5382, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2007': { 'ID': 5383, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2008': { 'ID': 5384, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2009': { 'ID': 5385, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2010': { 'ID': 5386, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2011': { 'ID': 5387, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2012': { 'ID': 5388, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2013': { 'ID': 5389, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2014': { 'ID': 5390, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2015': { 'ID': 5391, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2016': { 'ID': 5392, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2017': { 'ID': 5393, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2018': { 'ID': 5394, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2019': { 'ID': 5395, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2020': { 'ID': 5396, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2021': { 'ID': 5397, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2022': { 'ID': 5398, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2023': { 'ID': 5399, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2024': { 'ID': 5400, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2025': { 'ID': 5401, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2026': { 'ID': 5402, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2027': { 'ID': 5403, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2028': { 'ID': 5404, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2029': { 'ID': 5405, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2030': { 'ID': 5406, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2031': { 'ID': 5407, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2032': { 'ID': 5408, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2033': { 'ID': 5409, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2034': { 'ID': 5410, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2035': { 'ID': 5411, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2036': { 'ID': 5412, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2037': { 'ID': 5413, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2038': { 'ID': 5414, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2039': { 'ID': 5415, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2040': { 'ID': 5416, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2041': { 'ID': 5417, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2042': { 'ID': 5418, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2043': { 'ID': 5419, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2044': { 'ID': 5420, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2045': { 'ID': 5421, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2046': { 'ID': 5422, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2047': { 'ID': 5423, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2048': { 'ID': 5424, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2049': { 'ID': 5425, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2050': { 'ID': 5426, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2051': { 'ID': 5427, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2052': { 'ID': 5428, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2053': { 'ID': 5429, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2054': { 'ID': 5430, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2055': { 'ID': 5431, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2056': { 'ID': 5432, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2057': { 'ID': 5433, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2058': { 'ID': 5434, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2059': { 'ID': 5435, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2060': { 'ID': 5436, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2061': { 'ID': 5437, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2062': { 'ID': 5438, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2063': { 'ID': 5439, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2064': { 'ID': 5440, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2065': { 'ID': 5441, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2066': { 'ID': 5442, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2067': { 'ID': 5443, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2068': { 'ID': 5444, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2069': { 'ID': 5445, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2070': { 'ID': 5446, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2071': { 'ID': 5447, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2072': { 'ID': 5448, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2073': { 'ID': 5449, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2074': { 'ID': 5450, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2075': { 'ID': 5451, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2076': { 'ID': 5452, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2077': { 'ID': 5453, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2078': { 'ID': 5454, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2079': { 'ID': 5455, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2080': { 'ID': 5456, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2081': { 'ID': 5457, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2082': { 'ID': 5458, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2083': { 'ID': 5459, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2084': { 'ID': 5460, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2085': { 'ID': 5461, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2086': { 'ID': 5462, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2087': { 'ID': 5463, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2088': { 'ID': 5464, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2089': { 'ID': 5465, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2090': { 'ID': 5466, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2091': { 'ID': 5467, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2092': { 'ID': 5468, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2093': { 'ID': 5469, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2094': { 'ID': 5470, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2095': { 'ID': 5471, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2096': { 'ID': 5472, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2097': { 'ID': 5473, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2098': { 'ID': 5474, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2099': { 'ID': 5475, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2100': { 'ID': 5476, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2101': { 'ID': 5477, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2102': { 'ID': 5478, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2103': { 'ID': 5479, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2104': { 'ID': 5480, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2105': { 'ID': 5481, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2106': { 'ID': 5482, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2107': { 'ID': 5483, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2108': { 'ID': 5484, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2109': { 'ID': 5485, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2110': { 'ID': 5486, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2111': { 'ID': 5487, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2112': { 'ID': 5488, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2113': { 'ID': 5489, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2114': { 'ID': 5490, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2115': { 'ID': 5491, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2116': { 'ID': 5492, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2117': { 'ID': 5493, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2118': { 'ID': 5494, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2119': { 'ID': 5495, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2120': { 'ID': 5496, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2121': { 'ID': 5497, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2122': { 'ID': 5498, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2123': { 'ID': 5499, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2124': { 'ID': 5500, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2125': { 'ID': 5501, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2126': { 'ID': 5502, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2127': { 'ID': 5503, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2128': { 'ID': 5504, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2129': { 'ID': 5505, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2130': { 'ID': 5506, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2131': { 'ID': 5507, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2132': { 'ID': 5508, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2133': { 'ID': 5509, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2134': { 'ID': 5510, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2135': { 'ID': 5511, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2136': { 'ID': 5512, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2137': { 'ID': 5513, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2138': { 'ID': 5514, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2139': { 'ID': 5515, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2140': { 'ID': 5516, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2141': { 'ID': 5517, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2142': { 'ID': 5518, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2143': { 'ID': 5519, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2144': { 'ID': 5520, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2145': { 'ID': 5521, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2146': { 'ID': 5522, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2147': { 'ID': 5523, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2148': { 'ID': 5524, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2149': { 'ID': 5525, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2150': { 'ID': 5526, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2151': { 'ID': 5527, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2152': { 'ID': 5528, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2153': { 'ID': 5529, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2154': { 'ID': 5530, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2155': { 'ID': 5531, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2156': { 'ID': 5532, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2157': { 'ID': 5533, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2158': { 'ID': 5534, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2159': { 'ID': 5535, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2160': { 'ID': 5536, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2161': { 'ID': 5537, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2162': { 'ID': 5538, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2163': { 'ID': 5539, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2164': { 'ID': 5540, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2165': { 'ID': 5541, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2166': { 'ID': 5542, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2167': { 'ID': 5543, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2168': { 'ID': 5544, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2169': { 'ID': 5545, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2170': { 'ID': 5546, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2171': { 'ID': 5547, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2172': { 'ID': 5548, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2173': { 'ID': 5549, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2174': { 'ID': 5550, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2175': { 'ID': 5551, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2176': { 'ID': 5552, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2177': { 'ID': 5553, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2178': { 'ID': 5554, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2179': { 'ID': 5555, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2180': { 'ID': 5556, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2181': { 'ID': 5557, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2182': { 'ID': 5558, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2183': { 'ID': 5559, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2184': { 'ID': 5560, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2185': { 'ID': 5561, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2186': { 'ID': 5562, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2187': { 'ID': 5563, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2188': { 'ID': 5564, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2189': { 'ID': 5565, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2190': { 'ID': 5566, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2191': { 'ID': 5567, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2192': { 'ID': 5568, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2193': { 'ID': 5569, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2194': { 'ID': 5570, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2195': { 'ID': 5571, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2196': { 'ID': 5572, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2197': { 'ID': 5573, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2198': { 'ID': 5574, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2199': { 'ID': 5575, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2200': { 'ID': 5576, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2201': { 'ID': 5577, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2202': { 'ID': 5578, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2203': { 'ID': 5579, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2204': { 'ID': 5580, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2205': { 'ID': 5581, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2206': { 'ID': 5582, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2207': { 'ID': 5583, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2208': { 'ID': 5584, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2209': { 'ID': 5585, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2210': { 'ID': 5586, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2211': { 'ID': 5587, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2212': { 'ID': 5588, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2213': { 'ID': 5589, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2214': { 'ID': 5590, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2215': { 'ID': 5591, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2216': { 'ID': 5592, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2217': { 'ID': 5593, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2218': { 'ID': 5594, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2219': { 'ID': 5595, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2220': { 'ID': 5596, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2221': { 'ID': 5597, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2222': { 'ID': 5598, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2223': { 'ID': 5599, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2224': { 'ID': 5600, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2225': { 'ID': 5601, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2226': { 'ID': 5602, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2227': { 'ID': 5603, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2228': { 'ID': 5604, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2229': { 'ID': 5605, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2230': { 'ID': 5606, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2231': { 'ID': 5607, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2232': { 'ID': 5608, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2233': { 'ID': 5609, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2234': { 'ID': 5610, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2235': { 'ID': 5611, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2236': { 'ID': 5612, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2237': { 'ID': 5613, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2238': { 'ID': 5614, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2239': { 'ID': 5615, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2240': { 'ID': 5616, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2241': { 'ID': 5617, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2242': { 'ID': 5618, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2243': { 'ID': 5619, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2244': { 'ID': 5620, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2245': { 'ID': 5621, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2246': { 'ID': 5622, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2247': { 'ID': 5623, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2248': { 'ID': 5624, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2249': { 'ID': 5625, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2250': { 'ID': 5626, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2251': { 'ID': 5627, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2252': { 'ID': 5628, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2253': { 'ID': 5629, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2254': { 'ID': 5630, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2255': { 'ID': 5631, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2256': { 'ID': 5632, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2257': { 'ID': 5633, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2258': { 'ID': 5634, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2259': { 'ID': 5635, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2260': { 'ID': 5636, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2261': { 'ID': 5637, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2262': { 'ID': 5638, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2263': { 'ID': 5639, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2264': { 'ID': 5640, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2265': { 'ID': 5641, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2266': { 'ID': 5642, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2267': { 'ID': 5643, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2268': { 'ID': 5644, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2269': { 'ID': 5645, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2270': { 'ID': 5646, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2271': { 'ID': 5647, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2272': { 'ID': 5648, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2273': { 'ID': 5649, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2274': { 'ID': 5650, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2275': { 'ID': 5651, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2276': { 'ID': 5652, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2277': { 'ID': 5653, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2278': { 'ID': 5654, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2279': { 'ID': 5655, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2280': { 'ID': 5656, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2281': { 'ID': 5657, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2282': { 'ID': 5658, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2283': { 'ID': 5659, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2284': { 'ID': 5660, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2285': { 'ID': 5661, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2286': { 'ID': 5662, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2287': { 'ID': 5663, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2288': { 'ID': 5664, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2289': { 'ID': 5665, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2290': { 'ID': 5666, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2291': { 'ID': 5667, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2292': { 'ID': 5668, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2293': { 'ID': 5669, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2294': { 'ID': 5670, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2295': { 'ID': 5671, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2296': { 'ID': 5672, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2297': { 'ID': 5673, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2298': { 'ID': 5674, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2299': { 'ID': 5675, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2300': { 'ID': 5676, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2301': { 'ID': 5677, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2302': { 'ID': 5678, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2303': { 'ID': 5679, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2304': { 'ID': 5680, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2305': { 'ID': 5681, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2306': { 'ID': 5682, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2307': { 'ID': 5683, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2308': { 'ID': 5684, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2309': { 'ID': 5685, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2310': { 'ID': 5686, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2311': { 'ID': 5687, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2312': { 'ID': 5688, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2313': { 'ID': 5689, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2314': { 'ID': 5690, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2315': { 'ID': 5691, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2316': { 'ID': 5692, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2317': { 'ID': 5693, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2318': { 'ID': 5694, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2319': { 'ID': 5695, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2320': { 'ID': 5696, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2321': { 'ID': 5697, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2322': { 'ID': 5698, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2323': { 'ID': 5699, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2324': { 'ID': 5700, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2325': { 'ID': 5701, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2326': { 'ID': 5702, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2327': { 'ID': 5703, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2328': { 'ID': 5704, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2329': { 'ID': 5705, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2330': { 'ID': 5706, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2331': { 'ID': 5707, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2332': { 'ID': 5708, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2333': { 'ID': 5709, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2334': { 'ID': 5710, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2335': { 'ID': 5711, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2336': { 'ID': 5712, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2337': { 'ID': 5713, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2338': { 'ID': 5714, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2339': { 'ID': 5715, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2340': { 'ID': 5716, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2341': { 'ID': 5717, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2342': { 'ID': 5718, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2343': { 'ID': 5719, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2344': { 'ID': 5720, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2345': { 'ID': 5721, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2346': { 'ID': 5722, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2347': { 'ID': 5723, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2348': { 'ID': 5724, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2349': { 'ID': 5725, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2350': { 'ID': 5726, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2351': { 'ID': 5727, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2352': { 'ID': 5728, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2353': { 'ID': 5729, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2354': { 'ID': 5730, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2355': { 'ID': 5731, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2356': { 'ID': 5732, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2357': { 'ID': 5733, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2358': { 'ID': 5734, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2359': { 'ID': 5735, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2360': { 'ID': 5736, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2361': { 'ID': 5737, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2362': { 'ID': 5738, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2363': { 'ID': 5739, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2364': { 'ID': 5740, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2365': { 'ID': 5741, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2366': { 'ID': 5742, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2367': { 'ID': 5743, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2368': { 'ID': 5744, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2369': { 'ID': 5745, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2370': { 'ID': 5746, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2371': { 'ID': 5747, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2372': { 'ID': 5748, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2373': { 'ID': 5749, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2374': { 'ID': 5750, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2375': { 'ID': 5751, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2376': { 'ID': 5752, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2377': { 'ID': 5753, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2378': { 'ID': 5754, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2379': { 'ID': 5755, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2380': { 'ID': 5756, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2381': { 'ID': 5757, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2382': { 'ID': 5758, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2383': { 'ID': 5759, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2384': { 'ID': 5760, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2385': { 'ID': 5761, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2386': { 'ID': 5762, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2387': { 'ID': 5763, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2388': { 'ID': 5764, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2389': { 'ID': 5765, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2390': { 'ID': 5766, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2391': { 'ID': 5767, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2392': { 'ID': 5768, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2393': { 'ID': 5769, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2394': { 'ID': 5770, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2395': { 'ID': 5771, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2396': { 'ID': 5772, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2397': { 'ID': 5773, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2398': { 'ID': 5774, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2399': { 'ID': 5775, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2400': { 'ID': 5776, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2401': { 'ID': 5777, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2402': { 'ID': 5778, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2403': { 'ID': 5779, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2404': { 'ID': 5780, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2405': { 'ID': 5781, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2406': { 'ID': 5782, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2407': { 'ID': 5783, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2408': { 'ID': 5784, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2409': { 'ID': 5785, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2410': { 'ID': 5786, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2411': { 'ID': 5787, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2412': { 'ID': 5788, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2413': { 'ID': 5789, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2414': { 'ID': 5790, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2415': { 'ID': 5791, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2416': { 'ID': 5792, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2417': { 'ID': 5793, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2418': { 'ID': 5794, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2419': { 'ID': 5795, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2420': { 'ID': 5796, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2421': { 'ID': 5797, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2422': { 'ID': 5798, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2423': { 'ID': 5799, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2424': { 'ID': 5800, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2425': { 'ID': 5801, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2426': { 'ID': 5802, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2427': { 'ID': 5803, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2428': { 'ID': 5804, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2429': { 'ID': 5805, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2430': { 'ID': 5806, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2431': { 'ID': 5807, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2432': { 'ID': 5808, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2433': { 'ID': 5809, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2434': { 'ID': 5810, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2435': { 'ID': 5811, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2436': { 'ID': 5812, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2437': { 'ID': 5813, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2438': { 'ID': 5814, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2439': { 'ID': 5815, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2440': { 'ID': 5816, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2441': { 'ID': 5817, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2442': { 'ID': 5818, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2443': { 'ID': 5819, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2444': { 'ID': 5820, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2445': { 'ID': 5821, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2446': { 'ID': 5822, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2447': { 'ID': 5823, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2448': { 'ID': 5824, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2449': { 'ID': 5825, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2450': { 'ID': 5826, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2451': { 'ID': 5827, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2452': { 'ID': 5828, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2453': { 'ID': 5829, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2454': { 'ID': 5830, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2455': { 'ID': 5831, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2456': { 'ID': 5832, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2457': { 'ID': 5833, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2458': { 'ID': 5834, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2459': { 'ID': 5835, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2460': { 'ID': 5836, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2461': { 'ID': 5837, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2462': { 'ID': 5838, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2463': { 'ID': 5839, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2464': { 'ID': 5840, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2465': { 'ID': 5841, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2466': { 'ID': 5842, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2467': { 'ID': 5843, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2468': { 'ID': 5844, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2469': { 'ID': 5845, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2470': { 'ID': 5846, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2471': { 'ID': 5847, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2472': { 'ID': 5848, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2473': { 'ID': 5849, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2474': { 'ID': 5850, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2475': { 'ID': 5851, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2476': { 'ID': 5852, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2477': { 'ID': 5853, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2478': { 'ID': 5854, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2479': { 'ID': 5855, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2480': { 'ID': 5856, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2481': { 'ID': 5857, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2482': { 'ID': 5858, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2483': { 'ID': 5859, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2484': { 'ID': 5860, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2485': { 'ID': 5861, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2486': { 'ID': 5862, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2487': { 'ID': 5863, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2488': { 'ID': 5864, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2489': { 'ID': 5865, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2490': { 'ID': 5866, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2491': { 'ID': 5867, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2492': { 'ID': 5868, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2493': { 'ID': 5869, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2494': { 'ID': 5870, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2495': { 'ID': 5871, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2496': { 'ID': 5872, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2497': { 'ID': 5873, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2498': { 'ID': 5874, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2499': { 'ID': 5875, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2500': { 'ID': 5876, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2501': { 'ID': 5877, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2502': { 'ID': 5878, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2503': { 'ID': 5879, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2504': { 'ID': 5880, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2505': { 'ID': 5881, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2506': { 'ID': 5882, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2507': { 'ID': 5883, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2508': { 'ID': 5884, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2509': { 'ID': 5885, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2510': { 'ID': 5886, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2511': { 'ID': 5887, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2512': { 'ID': 5888, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2513': { 'ID': 5889, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2514': { 'ID': 5890, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2515': { 'ID': 5891, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2516': { 'ID': 5892, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2517': { 'ID': 5893, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2518': { 'ID': 5894, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2519': { 'ID': 5895, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2520': { 'ID': 5896, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2521': { 'ID': 5897, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2522': { 'ID': 5898, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2523': { 'ID': 5899, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2524': { 'ID': 5900, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2525': { 'ID': 5901, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2526': { 'ID': 5902, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2527': { 'ID': 5903, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2528': { 'ID': 5904, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2529': { 'ID': 5905, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2530': { 'ID': 5906, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2531': { 'ID': 5907, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2532': { 'ID': 5908, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2533': { 'ID': 5909, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2534': { 'ID': 5910, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2535': { 'ID': 5911, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2536': { 'ID': 5912, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2537': { 'ID': 5913, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2538': { 'ID': 5914, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2539': { 'ID': 5915, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2540': { 'ID': 5916, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2541': { 'ID': 5917, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2542': { 'ID': 5918, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2543': { 'ID': 5919, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2544': { 'ID': 5920, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2545': { 'ID': 5921, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2546': { 'ID': 5922, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2547': { 'ID': 5923, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2548': { 'ID': 5924, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2549': { 'ID': 5925, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2550': { 'ID': 5926, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2551': { 'ID': 5927, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2552': { 'ID': 5928, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2553': { 'ID': 5929, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2554': { 'ID': 5930, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2555': { 'ID': 5931, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2556': { 'ID': 5932, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2557': { 'ID': 5933, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2558': { 'ID': 5934, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2559': { 'ID': 5935, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2560': { 'ID': 5936, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2561': { 'ID': 5937, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2562': { 'ID': 5938, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2563': { 'ID': 5939, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2564': { 'ID': 5940, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2565': { 'ID': 5941, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2566': { 'ID': 5942, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2567': { 'ID': 5943, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2568': { 'ID': 5944, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2569': { 'ID': 5945, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2570': { 'ID': 5946, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2571': { 'ID': 5947, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2572': { 'ID': 5948, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2573': { 'ID': 5949, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2574': { 'ID': 5950, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2575': { 'ID': 5951, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2576': { 'ID': 5952, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2577': { 'ID': 5953, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2578': { 'ID': 5954, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2579': { 'ID': 5955, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2580': { 'ID': 5956, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2581': { 'ID': 5957, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2582': { 'ID': 5958, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2583': { 'ID': 5959, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2584': { 'ID': 5960, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2585': { 'ID': 5961, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2586': { 'ID': 5962, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2587': { 'ID': 5963, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2588': { 'ID': 5964, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2589': { 'ID': 5965, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2590': { 'ID': 5966, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2591': { 'ID': 5967, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2592': { 'ID': 5968, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2593': { 'ID': 5969, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2594': { 'ID': 5970, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2595': { 'ID': 5971, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2596': { 'ID': 5972, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2597': { 'ID': 5973, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2598': { 'ID': 5974, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2599': { 'ID': 5975, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2600': { 'ID': 5976, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2601': { 'ID': 5977, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2602': { 'ID': 5978, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2603': { 'ID': 5979, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2604': { 'ID': 5980, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2605': { 'ID': 5981, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2606': { 'ID': 5982, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2607': { 'ID': 5983, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2608': { 'ID': 5984, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2609': { 'ID': 5985, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2610': { 'ID': 5986, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2611': { 'ID': 5987, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2612': { 'ID': 5988, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2613': { 'ID': 5989, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2614': { 'ID': 5990, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2615': { 'ID': 5991, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2616': { 'ID': 5992, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2617': { 'ID': 5993, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2618': { 'ID': 5994, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2619': { 'ID': 5995, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2620': { 'ID': 5996, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2621': { 'ID': 5997, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2622': { 'ID': 5998, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2623': { 'ID': 5999, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2624': { 'ID': 6000, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2625': { 'ID': 6001, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2626': { 'ID': 6002, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2627': { 'ID': 6003, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2628': { 'ID': 6004, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2629': { 'ID': 6005, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2630': { 'ID': 6006, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2631': { 'ID': 6007, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2632': { 'ID': 6008, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2633': { 'ID': 6009, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2634': { 'ID': 6010, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2635': { 'ID': 6011, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2636': { 'ID': 6012, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2637': { 'ID': 6013, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2638': { 'ID': 6014, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2639': { 'ID': 6015, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2640': { 'ID': 6016, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2641': { 'ID': 6017, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2642': { 'ID': 6018, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2643': { 'ID': 6019, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2644': { 'ID': 6020, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2645': { 'ID': 6021, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2646': { 'ID': 6022, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2647': { 'ID': 6023, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2648': { 'ID': 6024, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2649': { 'ID': 6025, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2650': { 'ID': 6026, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2651': { 'ID': 6027, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2652': { 'ID': 6028, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2653': { 'ID': 6029, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2654': { 'ID': 6030, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2655': { 'ID': 6031, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2656': { 'ID': 6032, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2657': { 'ID': 6033, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2658': { 'ID': 6034, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2659': { 'ID': 6035, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2660': { 'ID': 6036, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2661': { 'ID': 6037, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2662': { 'ID': 6038, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2663': { 'ID': 6039, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2664': { 'ID': 6040, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2665': { 'ID': 6041, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2666': { 'ID': 6042, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2667': { 'ID': 6043, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2668': { 'ID': 6044, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2669': { 'ID': 6045, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2670': { 'ID': 6046, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'HR46400': { 'ID': 6399, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46401': { 'ID': 6400, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46402': { 'ID': 6401, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46403': { 'ID': 6402, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46404': { 'ID': 6403, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46405': { 'ID': 6404, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46406': { 'ID': 6405, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46407': { 'ID': 6406, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46408': { 'ID': 6407, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46409': { 'ID': 6408, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46410': { 'ID': 6409, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46411': { 'ID': 6410, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46412': { 'ID': 6411, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46413': { 'ID': 6412, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46414': { 'ID': 6413, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46415': { 'ID': 6414, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46416': { 'ID': 6415, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46417': { 'ID': 6416, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46418': { 'ID': 6417, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'HR46419': { 'ID': 6418, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Testregister für den internen Gebrauch' }, + 'Nr1WMZAdresse': { 'ID': 6469, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 255, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 255, 'Name': 'Zählerbusadresse WMZ1 (CO6, Fb10)' }, + 'Nr1WMZTyp': { 'ID': 6470, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 5, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 5, 'Name': 'Typenschlüssel (2=1434, 3=CAL3, 4=APAtO, 5=SLS)' }, + 'Nr1WMZAusl': { 'ID': 6471, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_Lesemodus', 'Buswert': 0, 'Busmin': 0, 'Busmax': 3, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 3, 'Name': 'Auslesemodus 0=24h, 1=Cont, 2=Coil(CL16)(CO6,Fb10)' }, + 'Nr2WMZAdresse': { 'ID': 6472, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 255, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 255, 'Name': 'Zählerbusadresse WMZ2 (CO6, Fb10)' }, + 'Nr2WMZTyp': { 'ID': 6473, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 5, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 5, 'Name': 'Typenschlüssel (2=1434, 3=CAL3, 4=APAtO, 5=SLS)' }, + 'Nr2WMZAusl': { 'ID': 6474, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_Lesemodus', 'Buswert': 0, 'Busmin': 0, 'Busmax': 3, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 3, 'Name': 'Auslesemodus 0=24h, 1=Cont, 2=Coil(CL17)(CO6,Fb10)' }, + 'Nr3WMZAdresse': { 'ID': 6475, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 255, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 255, 'Name': 'Zählerbusadresse WMZ3 (CO6, Fb10)' }, + 'Nr3WMZTyp': { 'ID': 6476, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 5, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 5, 'Name': 'Typenschlüssel (2=1434, 3=CAL3, 4=APAtO, 5=SLS)' }, + 'Nr3WMZAusl': { 'ID': 6477, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_Lesemodus', 'Buswert': 0, 'Busmin': 0, 'Busmax': 3, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 3, 'Name': 'Auslesemodus 0=24h, 1=Cont, 2=Coil(CL18)(CO6,Fb10)' }, + 'Nr4WMZAdresse': { 'ID': 6478, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 255, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 255, 'Name': 'Zählerbusadresse WMZ4 (CO6, Fb10)' }, + 'Nr4WMZTyp': { 'ID': 6479, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 5, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 5, 'Name': 'Typenschlüssel (2=1434, 3=CAL3, 4=APAtO, 5=SLS)' }, + 'Nr4WMZAusl': { 'ID': 6480, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_Lesemodus', 'Buswert': 0, 'Busmin': 0, 'Busmax': 3, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 3, 'Name': 'Auslesemodus 0=24h, 1=Cont, 2=Coil(CL252)(CO6Fb10)' }, + 'Nr5WMZAdresse': { 'ID': 6481, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 255, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 255, 'Name': 'Zählerbusadresse WMZ5 (CO6, Fb10)' }, + 'Nr5WMZTyp': { 'ID': 6482, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 5, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 5, 'Name': 'Typenschlüssel (2=1434, 3=CAL3, 4=APAtO, 5=SLS)' }, + 'Nr5WMZAusl': { 'ID': 6483, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_Lesemodus', 'Buswert': 0, 'Busmin': 0, 'Busmax': 3, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 3, 'Name': 'Auslesemodus 0=24h, 1=Cont, 2=Coil(CL253)(CO6Fb10)' }, + 'Nr6WMZAdresse': { 'ID': 6484, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 255, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 255, 'Name': 'Zählerbusadresse WMZ6 (CO6, Fb10)' }, + 'Nr6WMZTyp': { 'ID': 6485, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 5, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 5, 'Name': 'Typenschlüssel (2=1434, 3=CAL3, 4=APAtO, 5=SLS)' }, + 'Nr6WMZAusl': { 'ID': 6486, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Liste_Lesemodus', 'Buswert': 0, 'Busmin': 0, 'Busmax': 3, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 3, 'Name': 'Auslesemodus 0=24h, 1=Cont, 2=Coil(CL254)(CO6Fb10)' }, + 'M-BusAusleseint': { 'ID': 6487, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 3, 'Busmax': 43200, 'Faktor': 1, 'Digits': 0, 'Einheit': 's', 'Wert': 0, 'Wertmin': 3, 'Wertmax': 43200, 'Name': 'M-Bus Ausleseintervall' }, + 'Unbekannt-2710': { 'ID': 6488, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2711': { 'ID': 6489, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Hardw-VersM-Bus': { 'ID': 6490, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Version', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Hardware-Version M-Bus-Platine' }, + 'Software-Version': { 'ID': 6491, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Version', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Software-Version M-Bus-Platine' }, + 'Unbekannt-2714': { 'ID': 6492, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Bootprog-Version': { 'ID': 6493, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Version', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 10, 'Name': 'Bootprogramm-Version M-Bus-Platine' }, + 'Unbekannt-2716': { 'ID': 6494, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2717': { 'ID': 6495, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2718': { 'ID': 6496, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2719': { 'ID': 6497, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2720': { 'ID': 6498, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr1SysWMZFLAG': { 'ID': 6499, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 32767000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 32767000, 'Name': 'WMZ1 Betriebszustand' }, + 'Nr1SysFSR': { 'ID': 6500, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 32767000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 32767000, 'Name': 'WMZ1 Fehlerstatus-Register' }, + 'Nr1VDatum': { 'ID': 6501, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ1 Lesedatum Volumen' }, + 'Nr1VZeit': { 'ID': 6502, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ1 Leseuhrzeit Volumen' }, + 'Nr1tBtre3': { 'ID': 6503, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ1 Betriebszeit x 10^3' }, + 'Nr1tBtre0': { 'ID': 6504, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ1 Betriebszeit x 10^0' }, + 'Nr1Qe4': { 'ID': 6505, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Durchfluß (10^4)' }, + 'Nr1Qe0': { 'ID': 6506, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Durchfluß (10^0)' }, + 'Nr1Qe-3': { 'ID': 6507, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Durchfluß (10^-3)' }, + 'Nr1QEinh': { 'ID': 6508, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Durchfluß, 0=m³/h, 1=l/h' }, + 'Nr1Ve4': { 'ID': 6509, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Volumen (10^4)' }, + 'Nr1Ve0': { 'ID': 6510, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Volumen (10^0)' }, + 'Nr1Ve-3': { 'ID': 6511, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Volumen (10^-3)' }, + 'Nr1VEinh': { 'ID': 6512, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Volumen, 0=m³, 1=l' }, + 'Nr1Pe4': { 'ID': 6513, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Leistung (10^4)' }, + 'Nr1Pe0': { 'ID': 6514, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Leistung (10^0)' }, + 'Nr1Pe-3': { 'ID': 6515, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Leistung (10^-3)' }, + 'Nr1PEinh': { 'ID': 6516, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Leistung, 0=kW, 1=MW' }, + 'Nr1We4': { 'ID': 6517, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Arbeit (10^4)' }, + 'Nr1We0': { 'ID': 6518, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Arbeit (10^0)' }, + 'Nr1We-3': { 'ID': 6519, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Arbeit (10^-3)' }, + 'Nr1WEinh': { 'ID': 6520, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ1 Einheit Arbeit, 0=MWh, 1=kWh, 2=GJ' }, + 'Nr1Hersteller-ID': { 'ID': 6521, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ1 Hersteller-Identifikation' }, + 'Nr1VLe0': { 'ID': 6522, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ1 Vorlauftemperatur (10^0)' }, + 'Nr1VLe-3': { 'ID': 6523, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Vorlauftemperatur (10^-3)' }, + 'Nr1VLEinh': { 'ID': 6524, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Vorlauftemperatur, 0=°C' }, + 'Nr1WMZ-Firmware': { 'ID': 6525, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Version', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65000000, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 650000, 'Name': 'WMZ1 Firmware-Version Zähler' }, + 'Nr1RLe0': { 'ID': 6526, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ1 Rücklauftemperatur (10^0)' }, + 'Nr1RLe-3': { 'ID': 6527, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Rücklauftemperatur (10^-3)' }, + 'Nr1RLEinh': { 'ID': 6528, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Rücklauftemperatur, 0=°C' }, + 'Unbekannt-2751': { 'ID': 6529, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr1SysAnsFail': { 'ID': 6530, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ1 Testregister für den internen Gebrauch' }, + 'Nr1SysZeroBack': { 'ID': 6531, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ1 Testregister für den internen Gebrauch' }, + 'Unbekannt-2754': { 'ID': 6532, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2755': { 'ID': 6533, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2756': { 'ID': 6534, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr1STagDatum': { 'ID': 6535, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ1 Lesedatum Stichtag' }, + 'Nr1STagZeit': { 'ID': 6536, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ1 Leseuhrzeit Stichtag' }, + 'Nr1WSTag1e4': { 'ID': 6537, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Arbeit Stichtag1 (10^4)' }, + 'Nr1WSTag1e0': { 'ID': 6538, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Arbeit Stichtag1 (10^0)' }, + 'Nr1WSTag1e-3': { 'ID': 6539, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Arbeit Stichtag1 (10^-3)' }, + 'Nr1WSTag1Einh': { 'ID': 6540, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ1 Einheit Arbeit Stichtag 1,0=MWh,1=kWh,2=GJ' }, + 'Nr1STag1Jahr': { 'ID': 6541, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ1 Jahr Stichtag 1' }, + 'Nr1STag1Datum': { 'ID': 6542, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ1 Datum Stichtag 1' }, + 'Nr1VSTag1e4': { 'ID': 6543, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Volumen Stichtag1 (10^4)' }, + 'Nr1VSTag1e0': { 'ID': 6544, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Volumen Stichtag1 (10^0)' }, + 'Nr1VSTag1e-3': { 'ID': 6545, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Volumen Stichtag1 (10^-3)' }, + 'Nr1VSTag1Einh': { 'ID': 6546, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Volumen Stichtag1, 0=m³, 1=l' }, + 'Nr1WSTag2e4': { 'ID': 6547, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Arbeit Stichtag2 (10^4)' }, + 'Nr1WSTag2e0': { 'ID': 6548, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Arbeit Stichtag2 (10^0)' }, + 'Nr1WSTag2e-3': { 'ID': 6549, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Arbeit Stichtag2 (10^-3)' }, + 'Nr1WSTag2Einh': { 'ID': 6550, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ1 Einheit Arbeit Stichtag 2,0=MWh,1=kWh,2=GJ' }, + 'Nr1STag2Jahr': { 'ID': 6551, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ1 Jahr Stichtag2' }, + 'Nr1STag2Datum': { 'ID': 6552, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ1 Datum Stichtag2' }, + 'Nr1VSTag2e4': { 'ID': 6553, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Volumen Stichtag2 (10^4)' }, + 'Nr1VSTag2e0': { 'ID': 6554, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Volumen Stichtag2 (10^0)' }, + 'Nr1VSTag2e-3': { 'ID': 6555, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Volumen Stichtag2 (10^-3)' }, + 'Nr1VSTag2Einh': { 'ID': 6556, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Volumen Stichtag2, 0=m³, 1=l' }, + 'Nr1WDev1e4': { 'ID': 6557, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Arbeit Device1 (10^4)' }, + 'Nr1WDev1e0': { 'ID': 6558, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Arbeit Device1 (10^0)' }, + 'Nr1WDev1e-3': { 'ID': 6559, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Arbeit Device1 (10^-3)' }, + 'Nr1WDev1Einh': { 'ID': 6560, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ1 Device1-Arbeit Einheit,0=MWh,1=kWh,2=GJ' }, + 'Nr1VDev1e4': { 'ID': 6561, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Volumen Device1 (10^4)' }, + 'Nr1VDev1e0': { 'ID': 6562, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Volumen Device1 (10^0)' }, + 'Nr1VDev1e-3': { 'ID': 6563, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Volumen Device1 (10^-3)' }, + 'Nr1VDev1Einh': { 'ID': 6564, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Volumen Device1, 0=m³, 1=l' }, + 'Nr1WDev2e4': { 'ID': 6565, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Arbeit Device2 (10^4)' }, + 'Nr1WDev2e0': { 'ID': 6566, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Arbeit Device2 (10^0)' }, + 'Nr1WDev2e-3': { 'ID': 6567, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Arbeit Device2 (10^-3)' }, + 'Nr1WDev2Einh': { 'ID': 6568, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ1 Einheit Arbeit Device2,0=MWh,1=kWh,2=GJ' }, + 'Nr1VDev2e4': { 'ID': 6569, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Volumen Device2 (10^4)' }, + 'Nr1VDev2e0': { 'ID': 6570, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Volumen Device2 (10^0)' }, + 'Nr1VDev2e-3': { 'ID': 6571, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Volumen Device2 (10^-3)' }, + 'Nr1VDev2Einh': { 'ID': 6572, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Volumen Device2, 0=m³, 1=l' }, + 'Nr1WTa1e4': { 'ID': 6573, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Arbeit Tarif1 (10^4)' }, + 'Nr1WTa1e0': { 'ID': 6574, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Arbeit Tarif1 (10^0)' }, + 'Nr1WTa1e-3': { 'ID': 6575, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Arbeit Tarif1 (10^-3)' }, + 'Nr1WTa1Einh': { 'ID': 6576, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ1 Einheit Arbeit Tarif1,0=MWh,1=kWh,2=GJ' }, + 'Nr1VTa1e4': { 'ID': 6577, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Volumen Tarif1 (10^4)' }, + 'Nr1VTa1e0': { 'ID': 6578, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Volumen Tarif1 (10^0)' }, + 'Nr1VTa1e-3': { 'ID': 6579, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Volumen Tarif1 (10^-3)' }, + 'Nr1VTa1Einh': { 'ID': 6580, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Volumen Tarif1, 0=m³, 1=l' }, + 'Nr1WTa2e4': { 'ID': 6581, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Arbeit Tarif2 (10^4)' }, + 'Nr1WTa2e0': { 'ID': 6582, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Arbeit Tarif2 (10^0)' }, + 'Nr1WTa2e-3': { 'ID': 6583, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Arbeit Tarif2 (10^-3)' }, + 'Nr1WTa2Einh': { 'ID': 6584, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ1 Einheit Arbeit Tarif2,0=MWh,1=kWh,2=GJ' }, + 'Nr1VTa2e4': { 'ID': 6585, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Volumen Tarif2 (10^4)' }, + 'Nr1VTa2e0': { 'ID': 6586, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Volumen Tarif2 (10^0)' }, + 'Nr1VTa2e-3': { 'ID': 6587, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Volumen Tarif2 (10^-3)' }, + 'Nr1VTa2Einh': { 'ID': 6588, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Volumen Tarif2, 0=m³, 1=l' }, + 'Nr1SysIDHB': { 'ID': 6589, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Identnummer obere 4 Stellen' }, + 'Nr1SysIDLB': { 'ID': 6590, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Identnummer untere 4 Stellen' }, + 'Nr1Dev1HCAe7': { 'ID': 6591, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ1 Device 1 Zählen ohne Einheit (10^7)' }, + 'Nr1Dev1HCAe4': { 'ID': 6592, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Device 1 Zählen ohne Einheit (10^4)' }, + 'Nr1Dev1HCAe0': { 'ID': 6593, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Device 1 Zählen ohne Einheit (10^0)' }, + 'Nr1Dev2HCAe7': { 'ID': 6594, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ1 Device 2 Zählen ohne Einheit (10^7)' }, + 'Nr1Dev2HCAe4': { 'ID': 6595, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Device 2 Zählen ohne Einheit (10^4)' }, + 'Nr1Dev2HCAe0': { 'ID': 6596, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Device 2 Zählen ohne Einheit (10^0)' }, + 'Nr1Dev3HCAe7': { 'ID': 6597, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ1 Device 3 Zählen ohne Einheit (10^7)' }, + 'Nr1Dev3HCAe4': { 'ID': 6598, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Device 3 Zählen ohne Einheit (10^4)' }, + 'Nr1Dev3HCAe0': { 'ID': 6599, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Device 3 Zählen ohne Einheit (10^0)' }, + 'Nr1QDev1Nr5e4': { 'ID': 6600, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Qmax Dev1 Speichernr5 10^4' }, + 'Nr1QDev1Nr5e0': { 'ID': 6601, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Qmax Dev1 Speichernr5 10^0' }, + 'Nr1QDev1Nr5e-3': { 'ID': 6602, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Qmax Dev1 Speichernr5 10^-3' }, + 'Nr1QDev1Nr5Einh': { 'ID': 6603, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit QmaxDev1Spnr5,0=m³/h,1=l/h' }, + 'Nr1Dev1Nr5Jahr': { 'ID': 6604, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ1 Jahr für Dev1maxStorNr5' }, + 'Nr1Dev1Nr5Datum': { 'ID': 6605, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ1 Datum für Dev1maxStorNr5' }, + 'Nr1Dev1Nr5Zeit': { 'ID': 6606, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ1 Uhrzeit für Dev1maxStorNr5' }, + 'Nr1PDev1Nr1e4': { 'ID': 6607, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Pmax für Dev1StorNr1 (10^4)' }, + 'Nr1PDev1Nr1e0': { 'ID': 6608, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Pmax für Dev1StorNr1 (10^0)' }, + 'Nr1PDev1Nr1e-3': { 'ID': 6609, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Pmax für Dev1StorNr1 (10^-3)' }, + 'Nr1PDev1Nr1Einh': { 'ID': 6610, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit PmaxDev1StorNr1, 0=kW, 1=MW' }, + 'Nr1Dev1Nr1Jahr': { 'ID': 6611, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ1 Jahr für Dev1maxStorNr1' }, + 'Nr1Dev1Nr1Datum': { 'ID': 6612, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ1 Datum für Dev1maxStorNr1' }, + 'Nr1Dev1Nr1Zeit': { 'ID': 6613, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ1 Uhrzeit für Dev1maxStorNr1' }, + 'Nr1Pmaxe4': { 'ID': 6614, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Leistung max (10^4)' }, + 'Nr1Pmaxe0': { 'ID': 6615, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Leistung max (10^0)' }, + 'Nr1Pmaxe-3': { 'ID': 6616, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Leistung max (10^-3)' }, + 'Nr1PmaxEinh': { 'ID': 6617, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Leistung max, 0=kW, 1=MW' }, + 'Nr1Qmaxe4': { 'ID': 6618, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Durchfluß max (10^4)' }, + 'Nr1Qmaxe0': { 'ID': 6619, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Durchfluß max (10^0)' }, + 'Nr1Qmaxe-3': { 'ID': 6620, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Durchfluß max (10^-3)' }, + 'Nr1QmaxEinh': { 'ID': 6621, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Durchfluß max,0=m³/h,1=l/h' }, + 'Unbekannt-2844': { 'ID': 6622, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr1VLmaxe0': { 'ID': 6623, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ1 Vorlauftemperatur max (10^0)' }, + 'Nr1VLmaxe-3': { 'ID': 6624, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Vorlauftemperatur max (10^-3)' }, + 'Nr1VLmaxEinh': { 'ID': 6625, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Vorlauftemperatur max, 0=°C' }, + 'Unbekannt-2848': { 'ID': 6626, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr1RLmaxe0': { 'ID': 6627, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ1 Rücklauftemperatur max (10^0)' }, + 'Nr1RLmaxe-3': { 'ID': 6628, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Rücklauftemperatur max (10^-3)' }, + 'Nr1RLmaxEinh': { 'ID': 6629, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Rücklauftemperatur max, 0=°C' }, + 'Nr1SysSlaveadr': { 'ID': 6630, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 255000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 255000, 'Name': 'WMZ1 echte WMZ-Adresse nach Zählerantwort' }, + 'Nr1DeltaTe0': { 'ID': 6631, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ1 Differenz (Vorlauf-Rücklauf) (10^0)' }, + 'Nr1DeltaTe-3': { 'ID': 6632, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Differenz (Vorlauf-Rücklauf) (10^-3)' }, + 'Nr1VTa3e4': { 'ID': 6633, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Volumen Tarif3 (10^4)' }, + 'Nr1VTa3e0': { 'ID': 6634, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Volumen Tarif3 (10^0)' }, + 'Nr1VTa3e-3': { 'ID': 6635, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Volumen Tarif3 (10^-3)' }, + 'Nr1VTa3Einh': { 'ID': 6636, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit Volumen Tarif3, 0=m³, 1=l' }, + 'Nr1PTa1Nr24e4': { 'ID': 6637, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 P Tarif1StorNr24 (10^4)' }, + 'Nr1PTa1Nr24e0': { 'ID': 6638, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 P Tarif1StorNr24 (10^0)' }, + 'Nr1PTa1Nr24e-3': { 'ID': 6639, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 P Tarif1StorNr24 (10^-3)' }, + 'Nr1PTa1Nr24Einh': { 'ID': 6640, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Einheit PTarif1StorNr24, 0=kW, 1=MW' }, + 'Nr1QTa1Nr24e4': { 'ID': 6641, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ1 Q Tarif1StorNr24 (10^4)' }, + 'Nr1QTa1Nr24e0': { 'ID': 6642, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ1 Q Tarif1StorNr24 (10^0)' }, + 'Nr1QTa1Nr24e-3': { 'ID': 6643, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ1 Q Tarif1StorNr24 (10^-3)' }, + 'Nr1QTa1Nr24Einh': { 'ID': 6644, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 EinheitQTarif1StorNr24,0=m³/h,1=l/h' }, + 'Nr1tErrore3': { 'ID': 6645, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Zeit während Fehler (10^3)' }, + 'Nr1tErrore0': { 'ID': 6646, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Zeit während Fehler (10^0)' }, + 'Nr1tInfoe3': { 'ID': 6647, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Info (10^3)' }, + 'Nr1tInfoe0': { 'ID': 6648, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ1 Info (10^0)' }, + 'Unbekannt-2871': { 'ID': 6649, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2872': { 'ID': 6650, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2873': { 'ID': 6651, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2874': { 'ID': 6652, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2875': { 'ID': 6653, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2876': { 'ID': 6654, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2877': { 'ID': 6655, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2878': { 'ID': 6656, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2879': { 'ID': 6657, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2880': { 'ID': 6658, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2881': { 'ID': 6659, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2882': { 'ID': 6660, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2883': { 'ID': 6661, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2884': { 'ID': 6662, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2885': { 'ID': 6663, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2886': { 'ID': 6664, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2887': { 'ID': 6665, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2888': { 'ID': 6666, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2889': { 'ID': 6667, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2890': { 'ID': 6668, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2891': { 'ID': 6669, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2892': { 'ID': 6670, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2893': { 'ID': 6671, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2894': { 'ID': 6672, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2895': { 'ID': 6673, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2896': { 'ID': 6674, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2897': { 'ID': 6675, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2898': { 'ID': 6676, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2899': { 'ID': 6677, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2900': { 'ID': 6678, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2901': { 'ID': 6679, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2902': { 'ID': 6680, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2903': { 'ID': 6681, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2904': { 'ID': 6682, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2905': { 'ID': 6683, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2906': { 'ID': 6684, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2907': { 'ID': 6685, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2908': { 'ID': 6686, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2909': { 'ID': 6687, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2910': { 'ID': 6688, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2911': { 'ID': 6689, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2912': { 'ID': 6690, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2913': { 'ID': 6691, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2914': { 'ID': 6692, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2915': { 'ID': 6693, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2916': { 'ID': 6694, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2917': { 'ID': 6695, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2918': { 'ID': 6696, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2919': { 'ID': 6697, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2920': { 'ID': 6698, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2921': { 'ID': 6699, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2922': { 'ID': 6700, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2923': { 'ID': 6701, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2924': { 'ID': 6702, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2925': { 'ID': 6703, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2926': { 'ID': 6704, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2927': { 'ID': 6705, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2928': { 'ID': 6706, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2929': { 'ID': 6707, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2930': { 'ID': 6708, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2931': { 'ID': 6709, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2932': { 'ID': 6710, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2933': { 'ID': 6711, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2934': { 'ID': 6712, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2935': { 'ID': 6713, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2936': { 'ID': 6714, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2937': { 'ID': 6715, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2938': { 'ID': 6716, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2939': { 'ID': 6717, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2940': { 'ID': 6718, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2941': { 'ID': 6719, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2942': { 'ID': 6720, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2943': { 'ID': 6721, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2944': { 'ID': 6722, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2945': { 'ID': 6723, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2946': { 'ID': 6724, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2947': { 'ID': 6725, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2948': { 'ID': 6726, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2949': { 'ID': 6727, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2950': { 'ID': 6728, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2951': { 'ID': 6729, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2952': { 'ID': 6730, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2953': { 'ID': 6731, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2954': { 'ID': 6732, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2955': { 'ID': 6733, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2956': { 'ID': 6734, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2957': { 'ID': 6735, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2958': { 'ID': 6736, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2959': { 'ID': 6737, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2960': { 'ID': 6738, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2961': { 'ID': 6739, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2962': { 'ID': 6740, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2963': { 'ID': 6741, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2964': { 'ID': 6742, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2965': { 'ID': 6743, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2966': { 'ID': 6744, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2967': { 'ID': 6745, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2968': { 'ID': 6746, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2969': { 'ID': 6747, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2970': { 'ID': 6748, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2971': { 'ID': 6749, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2972': { 'ID': 6750, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2973': { 'ID': 6751, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2974': { 'ID': 6752, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2975': { 'ID': 6753, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2976': { 'ID': 6754, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2977': { 'ID': 6755, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2978': { 'ID': 6756, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2979': { 'ID': 6757, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2980': { 'ID': 6758, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2981': { 'ID': 6759, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2982': { 'ID': 6760, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2983': { 'ID': 6761, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2984': { 'ID': 6762, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2985': { 'ID': 6763, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2986': { 'ID': 6764, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2987': { 'ID': 6765, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2988': { 'ID': 6766, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2989': { 'ID': 6767, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2990': { 'ID': 6768, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2991': { 'ID': 6769, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2992': { 'ID': 6770, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2993': { 'ID': 6771, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2994': { 'ID': 6772, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2995': { 'ID': 6773, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2996': { 'ID': 6774, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2997': { 'ID': 6775, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2998': { 'ID': 6776, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-2999': { 'ID': 6777, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3000': { 'ID': 6778, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3001': { 'ID': 6779, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3002': { 'ID': 6780, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3003': { 'ID': 6781, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3004': { 'ID': 6782, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3005': { 'ID': 6783, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3006': { 'ID': 6784, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3007': { 'ID': 6785, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3008': { 'ID': 6786, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3009': { 'ID': 6787, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3010': { 'ID': 6788, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3011': { 'ID': 6789, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3012': { 'ID': 6790, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3013': { 'ID': 6791, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3014': { 'ID': 6792, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3015': { 'ID': 6793, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3016': { 'ID': 6794, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3017': { 'ID': 6795, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3018': { 'ID': 6796, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3019': { 'ID': 6797, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3020': { 'ID': 6798, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3021': { 'ID': 6799, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3022': { 'ID': 6800, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3023': { 'ID': 6801, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3024': { 'ID': 6802, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3025': { 'ID': 6803, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3026': { 'ID': 6804, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3027': { 'ID': 6805, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3028': { 'ID': 6806, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3029': { 'ID': 6807, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3030': { 'ID': 6808, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3031': { 'ID': 6809, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3032': { 'ID': 6810, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3033': { 'ID': 6811, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3034': { 'ID': 6812, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3035': { 'ID': 6813, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3036': { 'ID': 6814, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3037': { 'ID': 6815, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3038': { 'ID': 6816, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3039': { 'ID': 6817, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3040': { 'ID': 6818, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3041': { 'ID': 6819, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3042': { 'ID': 6820, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3043': { 'ID': 6821, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3044': { 'ID': 6822, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3045': { 'ID': 6823, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3046': { 'ID': 6824, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3047': { 'ID': 6825, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3048': { 'ID': 6826, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3049': { 'ID': 6827, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3050': { 'ID': 6828, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3051': { 'ID': 6829, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3052': { 'ID': 6830, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3053': { 'ID': 6831, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3054': { 'ID': 6832, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3055': { 'ID': 6833, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3056': { 'ID': 6834, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3057': { 'ID': 6835, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3058': { 'ID': 6836, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3059': { 'ID': 6837, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3060': { 'ID': 6838, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3061': { 'ID': 6839, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3062': { 'ID': 6840, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3063': { 'ID': 6841, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3064': { 'ID': 6842, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3065': { 'ID': 6843, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3066': { 'ID': 6844, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3067': { 'ID': 6845, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3068': { 'ID': 6846, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3069': { 'ID': 6847, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3070': { 'ID': 6848, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3071': { 'ID': 6849, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3072': { 'ID': 6850, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3073': { 'ID': 6851, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3074': { 'ID': 6852, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3075': { 'ID': 6853, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3076': { 'ID': 6854, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3077': { 'ID': 6855, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3078': { 'ID': 6856, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3079': { 'ID': 6857, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3080': { 'ID': 6858, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3081': { 'ID': 6859, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3082': { 'ID': 6860, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3083': { 'ID': 6861, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3084': { 'ID': 6862, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3085': { 'ID': 6863, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3086': { 'ID': 6864, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3087': { 'ID': 6865, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3088': { 'ID': 6866, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3089': { 'ID': 6867, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3090': { 'ID': 6868, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3091': { 'ID': 6869, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3092': { 'ID': 6870, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3093': { 'ID': 6871, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3094': { 'ID': 6872, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3095': { 'ID': 6873, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3096': { 'ID': 6874, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3097': { 'ID': 6875, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3098': { 'ID': 6876, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3099': { 'ID': 6877, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3100': { 'ID': 6878, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3101': { 'ID': 6879, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3102': { 'ID': 6880, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3103': { 'ID': 6881, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3104': { 'ID': 6882, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3105': { 'ID': 6883, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3106': { 'ID': 6884, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3107': { 'ID': 6885, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3108': { 'ID': 6886, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3109': { 'ID': 6887, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3110': { 'ID': 6888, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3111': { 'ID': 6889, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3112': { 'ID': 6890, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3113': { 'ID': 6891, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3114': { 'ID': 6892, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3115': { 'ID': 6893, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3116': { 'ID': 6894, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3117': { 'ID': 6895, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3118': { 'ID': 6896, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3119': { 'ID': 6897, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3120': { 'ID': 6898, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3121': { 'ID': 6899, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3122': { 'ID': 6900, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3123': { 'ID': 6901, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3124': { 'ID': 6902, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3125': { 'ID': 6903, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3126': { 'ID': 6904, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3127': { 'ID': 6905, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3128': { 'ID': 6906, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3129': { 'ID': 6907, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3130': { 'ID': 6908, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3131': { 'ID': 6909, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3132': { 'ID': 6910, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3133': { 'ID': 6911, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3134': { 'ID': 6912, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3135': { 'ID': 6913, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3136': { 'ID': 6914, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3137': { 'ID': 6915, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3138': { 'ID': 6916, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3139': { 'ID': 6917, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3140': { 'ID': 6918, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3141': { 'ID': 6919, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3142': { 'ID': 6920, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3143': { 'ID': 6921, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3144': { 'ID': 6922, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3145': { 'ID': 6923, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3146': { 'ID': 6924, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3147': { 'ID': 6925, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3148': { 'ID': 6926, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3149': { 'ID': 6927, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3150': { 'ID': 6928, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3151': { 'ID': 6929, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3152': { 'ID': 6930, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3153': { 'ID': 6931, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3154': { 'ID': 6932, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3155': { 'ID': 6933, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3156': { 'ID': 6934, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3157': { 'ID': 6935, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3158': { 'ID': 6936, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3159': { 'ID': 6937, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3160': { 'ID': 6938, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3161': { 'ID': 6939, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3162': { 'ID': 6940, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3163': { 'ID': 6941, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3164': { 'ID': 6942, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3165': { 'ID': 6943, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3166': { 'ID': 6944, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3167': { 'ID': 6945, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3168': { 'ID': 6946, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3169': { 'ID': 6947, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3170': { 'ID': 6948, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3171': { 'ID': 6949, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3172': { 'ID': 6950, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3173': { 'ID': 6951, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3174': { 'ID': 6952, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3175': { 'ID': 6953, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3176': { 'ID': 6954, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3177': { 'ID': 6955, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3178': { 'ID': 6956, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3179': { 'ID': 6957, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3180': { 'ID': 6958, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3181': { 'ID': 6959, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3182': { 'ID': 6960, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3183': { 'ID': 6961, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3184': { 'ID': 6962, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3185': { 'ID': 6963, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3186': { 'ID': 6964, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3187': { 'ID': 6965, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3188': { 'ID': 6966, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3189': { 'ID': 6967, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3190': { 'ID': 6968, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3191': { 'ID': 6969, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3192': { 'ID': 6970, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3193': { 'ID': 6971, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3194': { 'ID': 6972, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3195': { 'ID': 6973, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3196': { 'ID': 6974, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3197': { 'ID': 6975, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3198': { 'ID': 6976, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3199': { 'ID': 6977, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3200': { 'ID': 6978, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3201': { 'ID': 6979, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3202': { 'ID': 6980, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3203': { 'ID': 6981, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3204': { 'ID': 6982, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3205': { 'ID': 6983, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3206': { 'ID': 6984, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3207': { 'ID': 6985, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3208': { 'ID': 6986, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3209': { 'ID': 6987, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3210': { 'ID': 6988, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3211': { 'ID': 6989, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3212': { 'ID': 6990, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3213': { 'ID': 6991, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3214': { 'ID': 6992, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3215': { 'ID': 6993, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3216': { 'ID': 6994, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3217': { 'ID': 6995, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3218': { 'ID': 6996, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3219': { 'ID': 6997, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3220': { 'ID': 6998, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr2SysWMZFLAG': { 'ID': 6999, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 32767000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 32767000, 'Name': 'WMZ2 Betriebszustand' }, + 'Nr2SysFSR': { 'ID': 7000, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 32767000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 32767000, 'Name': 'WMZ2 Fehlerstatus-Register' }, + 'Nr2VDatum': { 'ID': 7001, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ2 Lesedatum Volumen' }, + 'Nr2VZeit': { 'ID': 7002, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ2 Leseuhrzeit Volumen' }, + 'Nr2tBtre3': { 'ID': 7003, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ2 Betriebszeit x 10^3' }, + 'Nr2tBtre0': { 'ID': 7004, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ2 Betriebszeit x 10^0' }, + 'Nr2Qe4': { 'ID': 7005, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Durchfluß (10^4)' }, + 'Nr2Qe0': { 'ID': 7006, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Durchfluß (10^0)' }, + 'Nr2Qe-3': { 'ID': 7007, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Durchfluß (10^-3)' }, + 'Nr2QEinh': { 'ID': 7008, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Durchfluß, 0=m³/h, 1=l/h' }, + 'Nr2Ve4': { 'ID': 7009, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Volumen (10^4)' }, + 'Nr2Ve0': { 'ID': 7010, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Volumen (10^0)' }, + 'Nr2Ve-3': { 'ID': 7011, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Volumen (10^-3)' }, + 'Nr2VEinh': { 'ID': 7012, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Volumen, 0=m³, 1=l' }, + 'Nr2Pe4': { 'ID': 7013, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Leistung (10^4)' }, + 'Nr2Pe0': { 'ID': 7014, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Leistung (10^0)' }, + 'Nr2Pe-3': { 'ID': 7015, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Leistung (10^-3)' }, + 'Nr2PEinh': { 'ID': 7016, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Leistung, 0=kW, 1=MW' }, + 'Nr2We4': { 'ID': 7017, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Arbeit (10^4)' }, + 'Nr2We0': { 'ID': 7018, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Arbeit (10^0)' }, + 'Nr2We-3': { 'ID': 7019, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Arbeit (10^-3)' }, + 'Nr2WEinh': { 'ID': 7020, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ2 Einheit Arbeit, 0=MWh, 1=kWh, 2=GJ' }, + 'Nr2Hersteller-ID': { 'ID': 7021, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ2 Hersteller-Identifikation' }, + 'Nr2VLe0': { 'ID': 7022, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ2 Vorlauftemperatur (10^0)' }, + 'Nr2VLe-3': { 'ID': 7023, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Vorlauftemperatur (10^-3)' }, + 'Nr2VLEinh': { 'ID': 7024, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Vorlauftemperatur, 0=°C' }, + 'Nr2WMZ-Firmware': { 'ID': 7025, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Version', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65000000, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 650000, 'Name': 'WMZ2 Firmware-Version Zähler' }, + 'Nr2RLe0': { 'ID': 7026, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ2 Rücklauftemperatur (10^0)' }, + 'Nr2RLe-3': { 'ID': 7027, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Rücklauftemperatur (10^-3)' }, + 'Nr2RLEinh': { 'ID': 7028, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Rücklauftemperatur, 0=°C' }, + 'Unbekannt-3251': { 'ID': 7029, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr2SysAnsFail': { 'ID': 7030, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ2 Testregister für den internen Gebrauch' }, + 'Nr2SysZeroBack': { 'ID': 7031, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ2 Testregister für den internen Gebrauch' }, + 'Unbekannt-3254': { 'ID': 7032, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3255': { 'ID': 7033, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3256': { 'ID': 7034, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr2STagDatum': { 'ID': 7035, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ2 Lesedatum Stichtag' }, + 'Nr2STagZeit': { 'ID': 7036, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ2 Leseuhrzeit Stichtag' }, + 'Nr2WSTag1e4': { 'ID': 7037, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Arbeit Stichtag1 (10^4)' }, + 'Nr2WSTag1e0': { 'ID': 7038, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Arbeit Stichtag1 (10^0)' }, + 'Nr2WSTag1e-3': { 'ID': 7039, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Arbeit Stichtag1 (10^-3)' }, + 'Nr2WSTag1Einh': { 'ID': 7040, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ2 Einheit Arbeit Stichtag 1,0=MWh,1=kWh,2=GJ' }, + 'Nr2STag1Jahr': { 'ID': 7041, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ2 Jahr Stichtag 1' }, + 'Nr2STag1Datum': { 'ID': 7042, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ2 Datum Stichtag 1' }, + 'Nr2VSTag1e4': { 'ID': 7043, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Volumen Stichtag1 (10^4)' }, + 'Nr2VSTag1e0': { 'ID': 7044, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Volumen Stichtag1 (10^0)' }, + 'Nr2VSTag1e-3': { 'ID': 7045, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Volumen Stichtag1 (10^-3)' }, + 'Nr2VSTag1Einh': { 'ID': 7046, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Volumen Stichtag1, 0=m³, 1=l' }, + 'Nr2WSTag2e4': { 'ID': 7047, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Arbeit Stichtag2 (10^4)' }, + 'Nr2WSTag2e0': { 'ID': 7048, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Arbeit Stichtag2 (10^0)' }, + 'Nr2WSTag2e-3': { 'ID': 7049, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Arbeit Stichtag2 (10^-3)' }, + 'Nr2WSTag2Einh': { 'ID': 7050, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ2 Einheit Arbeit Stichtag 2,0=MWh,1=kWh,2=GJ' }, + 'Nr2STag2Jahr': { 'ID': 7051, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ2 Jahr Stichtag2' }, + 'Nr2STag2Datum': { 'ID': 7052, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ2 Datum Stichtag2' }, + 'Nr2VSTag2e4': { 'ID': 7053, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Volumen Stichtag2 (10^4)' }, + 'Nr2VSTag2e0': { 'ID': 7054, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Volumen Stichtag2 (10^0)' }, + 'Nr2VSTag2e-3': { 'ID': 7055, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Volumen Stichtag2 (10^-3)' }, + 'Nr2VSTag2Einh': { 'ID': 7056, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Volumen Stichtag2, 0=m³, 1=l' }, + 'Nr2WDev1e4': { 'ID': 7057, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Arbeit Device1 (10^4)' }, + 'Nr2WDev1e0': { 'ID': 7058, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Arbeit Device1 (10^0)' }, + 'Nr2WDev1e-3': { 'ID': 7059, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Arbeit Device1 (10^-3)' }, + 'Nr2WDev1Einh': { 'ID': 7060, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ2 Device1-Arbeit Einheit,0=MWh,1=kWh,2=GJ' }, + 'Nr2VDev1e4': { 'ID': 7061, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Volumen Device1 (10^4)' }, + 'Nr2VDev1e0': { 'ID': 7062, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Volumen Device1 (10^0)' }, + 'Nr2VDev1e-3': { 'ID': 7063, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Volumen Device1 (10^-3)' }, + 'Nr2VDev1Einh': { 'ID': 7064, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Volumen Device1, 0=m³, 1=l' }, + 'Nr2WDev2e4': { 'ID': 7065, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Arbeit Device2 (10^4)' }, + 'Nr2WDev2e0': { 'ID': 7066, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Arbeit Device2 (10^0)' }, + 'Nr2WDev2e-3': { 'ID': 7067, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Arbeit Device2 (10^-3)' }, + 'Nr2WDev2Einh': { 'ID': 7068, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ2 Einheit Arbeit Device2,0=MWh,1=kWh,2=GJ' }, + 'Nr2VDev2e4': { 'ID': 7069, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Volumen Device2 (10^4)' }, + 'Nr2VDev2e0': { 'ID': 7070, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Volumen Device2 (10^0)' }, + 'Nr2VDev2e-3': { 'ID': 7071, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Volumen Device2 (10^-3)' }, + 'Nr2VDev2Einh': { 'ID': 7072, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Volumen Device2, 0=m³, 1=l' }, + 'Nr2WTa1e4': { 'ID': 7073, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Arbeit Tarif1 (10^4)' }, + 'Nr2WTa1e0': { 'ID': 7074, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Arbeit Tarif1 (10^0)' }, + 'Nr2WTa1e-3': { 'ID': 7075, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Arbeit Tarif1 (10^-3)' }, + 'Nr2WTa1Einh': { 'ID': 7076, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ2 Einheit Arbeit Tarif1,0=MWh,1=kWh,2=GJ' }, + 'Nr2VTa1e4': { 'ID': 7077, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Volumen Tarif1 (10^4)' }, + 'Nr2VTa1e0': { 'ID': 7078, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Volumen Tarif1 (10^0)' }, + 'Nr2VTa1e-3': { 'ID': 7079, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Volumen Tarif1 (10^-3)' }, + 'Nr2VTa1Einh': { 'ID': 7080, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Volumen Tarif1, 0=m³, 1=l' }, + 'Nr2WTa2e4': { 'ID': 7081, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Arbeit Tarif2 (10^4)' }, + 'Nr2WTa2e0': { 'ID': 7082, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Arbeit Tarif2 (10^0)' }, + 'Nr2WTa2e-3': { 'ID': 7083, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Arbeit Tarif2 (10^-3)' }, + 'Nr2WTa2Einh': { 'ID': 7084, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ2 Einheit Arbeit Tarif2,0=MWh,1=kWh,2=GJ' }, + 'Nr2VTa2e4': { 'ID': 7085, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Volumen Tarif2 (10^4)' }, + 'Nr2VTa2e0': { 'ID': 7086, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Volumen Tarif2 (10^0)' }, + 'Nr2VTa2e-3': { 'ID': 7087, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Volumen Tarif2 (10^-3)' }, + 'Nr2VTa2Einh': { 'ID': 7088, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Volumen Tarif2, 0=m³, 1=l' }, + 'Nr2SysIDHB': { 'ID': 7089, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Identnummer obere 4 Stellen' }, + 'Nr2SysIDLB': { 'ID': 7090, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Identnummer untere 4 Stellen' }, + 'Nr2Dev1HCAe7': { 'ID': 7091, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ2 Device 1 Zählen ohne Einheit (10^7)' }, + 'Nr2Dev1HCAe4': { 'ID': 7092, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Device 1 Zählen ohne Einheit (10^4)' }, + 'Nr2Dev1HCAe0': { 'ID': 7093, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Device 1 Zählen ohne Einheit (10^0)' }, + 'Nr2Dev2HCAe7': { 'ID': 7094, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ2 Device 2 Zählen ohne Einheit (10^7)' }, + 'Nr2Dev2HCAe4': { 'ID': 7095, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Device 2 Zählen ohne Einheit (10^4)' }, + 'Nr2Dev2HCAe0': { 'ID': 7096, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Device 2 Zählen ohne Einheit (10^0)' }, + 'Nr2Dev3HCAe7': { 'ID': 7097, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ2 Device 3 Zählen ohne Einheit (10^7)' }, + 'Nr2Dev3HCAe4': { 'ID': 7098, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Device 3 Zählen ohne Einheit (10^4)' }, + 'Nr2Dev3HCAe0': { 'ID': 7099, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Device 3 Zählen ohne Einheit (10^0)' }, + 'Nr2QDev1Nr5e4': { 'ID': 7100, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Qmax Dev1 Speichernr5 10^4' }, + 'Nr2QDev1Nr5e0': { 'ID': 7101, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Qmax Dev1 Speichernr5 10^0' }, + 'Nr2QDev1Nr5e-3': { 'ID': 7102, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Qmax Dev1 Speichernr5 10^-3' }, + 'Nr2QDev1Nr5Einh': { 'ID': 7103, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit QmaxDev1Spnr5,0=m³/h,1=l/h' }, + 'Nr2Dev1Nr5Jahr': { 'ID': 7104, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ2 Jahr für Dev1maxStorNr5' }, + 'Nr2Dev1Nr5Datum': { 'ID': 7105, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ2 Datum für Dev1maxStorNr5' }, + 'Nr2Dev1Nr5Zeit': { 'ID': 7106, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ2 Uhrzeit für Dev1maxStorNr5' }, + 'Nr2PDev1Nr1e4': { 'ID': 7107, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Pmax für Dev1StorNr1 (10^4)' }, + 'Nr2PDev1Nr1e0': { 'ID': 7108, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Pmax für Dev1StorNr1 (10^0)' }, + 'Nr2PDev1Nr1e-3': { 'ID': 7109, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Pmax für Dev1StorNr1 (10^-3)' }, + 'Nr2PDev1Nr1Einh': { 'ID': 7110, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit PmaxDev1StorNr1, 0=kW, 1=MW' }, + 'Nr2Dev1Nr1Jahr': { 'ID': 7111, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ2 Jahr für Dev1maxStorNr1' }, + 'Nr2Dev1Nr1Datum': { 'ID': 7112, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ2 Datum für Dev1maxStorNr1' }, + 'Nr2Dev1Nr1Zeit': { 'ID': 7113, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ2 Uhrzeit für Dev1maxStorNr1' }, + 'Nr2Pmaxe4': { 'ID': 7114, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Leistung max (10^4)' }, + 'Nr2Pmaxe0': { 'ID': 7115, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Leistung max (10^0)' }, + 'Nr2Pmaxe-3': { 'ID': 7116, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Leistung max (10^-3)' }, + 'Nr2PmaxEinh': { 'ID': 7117, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Leistung max, 0=kW, 1=MW' }, + 'Nr2Qmaxe4': { 'ID': 7118, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Durchfluß max (10^4)' }, + 'Nr2Qmaxe0': { 'ID': 7119, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Durchfluß max (10^0)' }, + 'Nr2Qmaxe-3': { 'ID': 7120, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Durchfluß max (10^-3)' }, + 'Nr2QmaxEinh': { 'ID': 7121, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Durchfluß max,0=m³/h,1=l/h' }, + 'Unbekannt-3344': { 'ID': 7122, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr2VLmaxe0': { 'ID': 7123, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ2 Vorlauftemperatur max (10^0)' }, + 'Nr2VLmaxe-3': { 'ID': 7124, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Vorlauftemperatur max (10^-3)' }, + 'Nr2VLmaxEinh': { 'ID': 7125, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Vorlauftemperatur max, 0=°C' }, + 'Unbekannt-3348': { 'ID': 7126, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr2RLmaxe0': { 'ID': 7127, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ2 Rücklauftemperatur max (10^0)' }, + 'Nr2RLmaxe-3': { 'ID': 7128, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Rücklauftemperatur max (10^-3)' }, + 'Nr2RLmaxEinh': { 'ID': 7129, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Rücklauftemperatur max, 0=°C' }, + 'Nr2SysSlaveadr': { 'ID': 7130, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 255000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 255000, 'Name': 'WMZ2 echte WMZ-Adresse nach Zählerantwort' }, + 'Nr2DeltaTe0': { 'ID': 7131, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ2 Differenz (Vorlauf-Rücklauf) (10^0)' }, + 'Nr2DeltaTe-3': { 'ID': 7132, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Differenz (Vorlauf-Rücklauf) (10^-3)' }, + 'Nr2VTa3e4': { 'ID': 7133, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Volumen Tarif3 (10^4)' }, + 'Nr2VTa3e0': { 'ID': 7134, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Volumen Tarif3 (10^0)' }, + 'Nr2VTa3e-3': { 'ID': 7135, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Volumen Tarif3 (10^-3)' }, + 'Nr2VTa3Einh': { 'ID': 7136, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit Volumen Tarif3, 0=m³, 1=l' }, + 'Nr2PTa1Nr24e4': { 'ID': 7137, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 P Tarif1StorNr24 (10^4)' }, + 'Nr2PTa1Nr24e0': { 'ID': 7138, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 P Tarif1StorNr24 (10^0)' }, + 'Nr2PTa1Nr24e-3': { 'ID': 7139, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 P Tarif1StorNr24 (10^-3)' }, + 'Nr2PTa1Nr24Einh': { 'ID': 7140, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Einheit PTarif1StorNr24, 0=kW, 1=MW' }, + 'Nr2QTa1Nr24e4': { 'ID': 7141, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ2 Q Tarif1StorNr24 (10^4)' }, + 'Nr2QTa1Nr24e0': { 'ID': 7142, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ2 Q Tarif1StorNr24 (10^0)' }, + 'Nr2QTa1Nr24e-3': { 'ID': 7143, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ2 Q Tarif1StorNr24 (10^-3)' }, + 'Nr2QTa1Nr24Einh': { 'ID': 7144, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 EinheitQTarif1StorNr24,0=m³/h,1=l/h' }, + 'Nr2tErrore3': { 'ID': 7145, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Zeit während Fehler (10^3)' }, + 'Nr2tErrore0': { 'ID': 7146, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Zeit während Fehler (10^0)' }, + 'Nr2tInfoe3': { 'ID': 7147, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Info (10^3)' }, + 'Nr2tInfoe0': { 'ID': 7148, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ2 Info (10^0)' }, + 'Unbekannt-3371': { 'ID': 7149, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3372': { 'ID': 7150, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3373': { 'ID': 7151, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3374': { 'ID': 7152, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3375': { 'ID': 7153, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3376': { 'ID': 7154, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3377': { 'ID': 7155, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3378': { 'ID': 7156, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3379': { 'ID': 7157, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3380': { 'ID': 7158, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3381': { 'ID': 7159, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3382': { 'ID': 7160, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3383': { 'ID': 7161, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3384': { 'ID': 7162, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3385': { 'ID': 7163, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3386': { 'ID': 7164, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3387': { 'ID': 7165, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3388': { 'ID': 7166, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3389': { 'ID': 7167, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3390': { 'ID': 7168, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3391': { 'ID': 7169, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3392': { 'ID': 7170, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3393': { 'ID': 7171, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3394': { 'ID': 7172, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3395': { 'ID': 7173, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3396': { 'ID': 7174, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3397': { 'ID': 7175, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3398': { 'ID': 7176, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3399': { 'ID': 7177, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3400': { 'ID': 7178, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3401': { 'ID': 7179, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3402': { 'ID': 7180, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3403': { 'ID': 7181, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3404': { 'ID': 7182, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3405': { 'ID': 7183, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3406': { 'ID': 7184, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3407': { 'ID': 7185, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3408': { 'ID': 7186, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3409': { 'ID': 7187, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3410': { 'ID': 7188, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3411': { 'ID': 7189, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3412': { 'ID': 7190, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3413': { 'ID': 7191, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3414': { 'ID': 7192, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3415': { 'ID': 7193, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3416': { 'ID': 7194, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3417': { 'ID': 7195, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3418': { 'ID': 7196, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3419': { 'ID': 7197, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3420': { 'ID': 7198, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3421': { 'ID': 7199, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3422': { 'ID': 7200, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3423': { 'ID': 7201, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3424': { 'ID': 7202, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3425': { 'ID': 7203, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3426': { 'ID': 7204, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3427': { 'ID': 7205, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3428': { 'ID': 7206, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3429': { 'ID': 7207, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3430': { 'ID': 7208, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3431': { 'ID': 7209, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3432': { 'ID': 7210, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3433': { 'ID': 7211, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3434': { 'ID': 7212, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3435': { 'ID': 7213, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3436': { 'ID': 7214, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3437': { 'ID': 7215, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3438': { 'ID': 7216, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3439': { 'ID': 7217, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3440': { 'ID': 7218, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3441': { 'ID': 7219, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3442': { 'ID': 7220, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3443': { 'ID': 7221, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3444': { 'ID': 7222, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3445': { 'ID': 7223, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3446': { 'ID': 7224, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3447': { 'ID': 7225, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3448': { 'ID': 7226, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3449': { 'ID': 7227, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3450': { 'ID': 7228, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3451': { 'ID': 7229, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3452': { 'ID': 7230, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3453': { 'ID': 7231, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3454': { 'ID': 7232, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3455': { 'ID': 7233, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3456': { 'ID': 7234, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3457': { 'ID': 7235, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3458': { 'ID': 7236, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3459': { 'ID': 7237, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3460': { 'ID': 7238, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3461': { 'ID': 7239, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3462': { 'ID': 7240, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3463': { 'ID': 7241, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3464': { 'ID': 7242, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3465': { 'ID': 7243, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3466': { 'ID': 7244, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3467': { 'ID': 7245, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3468': { 'ID': 7246, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3469': { 'ID': 7247, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3470': { 'ID': 7248, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3471': { 'ID': 7249, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3472': { 'ID': 7250, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3473': { 'ID': 7251, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3474': { 'ID': 7252, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3475': { 'ID': 7253, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3476': { 'ID': 7254, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3477': { 'ID': 7255, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3478': { 'ID': 7256, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3479': { 'ID': 7257, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3480': { 'ID': 7258, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3481': { 'ID': 7259, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3482': { 'ID': 7260, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3483': { 'ID': 7261, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3484': { 'ID': 7262, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3485': { 'ID': 7263, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3486': { 'ID': 7264, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3487': { 'ID': 7265, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3488': { 'ID': 7266, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3489': { 'ID': 7267, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3490': { 'ID': 7268, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3491': { 'ID': 7269, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3492': { 'ID': 7270, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3493': { 'ID': 7271, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3494': { 'ID': 7272, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3495': { 'ID': 7273, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3496': { 'ID': 7274, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3497': { 'ID': 7275, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3498': { 'ID': 7276, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3499': { 'ID': 7277, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3500': { 'ID': 7278, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3501': { 'ID': 7279, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3502': { 'ID': 7280, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3503': { 'ID': 7281, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3504': { 'ID': 7282, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3505': { 'ID': 7283, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3506': { 'ID': 7284, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3507': { 'ID': 7285, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3508': { 'ID': 7286, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3509': { 'ID': 7287, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3510': { 'ID': 7288, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3511': { 'ID': 7289, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3512': { 'ID': 7290, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3513': { 'ID': 7291, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3514': { 'ID': 7292, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3515': { 'ID': 7293, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3516': { 'ID': 7294, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3517': { 'ID': 7295, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3518': { 'ID': 7296, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3519': { 'ID': 7297, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3520': { 'ID': 7298, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3521': { 'ID': 7299, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3522': { 'ID': 7300, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3523': { 'ID': 7301, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3524': { 'ID': 7302, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3525': { 'ID': 7303, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3526': { 'ID': 7304, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3527': { 'ID': 7305, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3528': { 'ID': 7306, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3529': { 'ID': 7307, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3530': { 'ID': 7308, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3531': { 'ID': 7309, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3532': { 'ID': 7310, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3533': { 'ID': 7311, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3534': { 'ID': 7312, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3535': { 'ID': 7313, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3536': { 'ID': 7314, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3537': { 'ID': 7315, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3538': { 'ID': 7316, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3539': { 'ID': 7317, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3540': { 'ID': 7318, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3541': { 'ID': 7319, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3542': { 'ID': 7320, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3543': { 'ID': 7321, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3544': { 'ID': 7322, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3545': { 'ID': 7323, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3546': { 'ID': 7324, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3547': { 'ID': 7325, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3548': { 'ID': 7326, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3549': { 'ID': 7327, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3550': { 'ID': 7328, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3551': { 'ID': 7329, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3552': { 'ID': 7330, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3553': { 'ID': 7331, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3554': { 'ID': 7332, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3555': { 'ID': 7333, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3556': { 'ID': 7334, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3557': { 'ID': 7335, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3558': { 'ID': 7336, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3559': { 'ID': 7337, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3560': { 'ID': 7338, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3561': { 'ID': 7339, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3562': { 'ID': 7340, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3563': { 'ID': 7341, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3564': { 'ID': 7342, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3565': { 'ID': 7343, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3566': { 'ID': 7344, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3567': { 'ID': 7345, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3568': { 'ID': 7346, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3569': { 'ID': 7347, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3570': { 'ID': 7348, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3571': { 'ID': 7349, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3572': { 'ID': 7350, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3573': { 'ID': 7351, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3574': { 'ID': 7352, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3575': { 'ID': 7353, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3576': { 'ID': 7354, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3577': { 'ID': 7355, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3578': { 'ID': 7356, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3579': { 'ID': 7357, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3580': { 'ID': 7358, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3581': { 'ID': 7359, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3582': { 'ID': 7360, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3583': { 'ID': 7361, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3584': { 'ID': 7362, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3585': { 'ID': 7363, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3586': { 'ID': 7364, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3587': { 'ID': 7365, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3588': { 'ID': 7366, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3589': { 'ID': 7367, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3590': { 'ID': 7368, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3591': { 'ID': 7369, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3592': { 'ID': 7370, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3593': { 'ID': 7371, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3594': { 'ID': 7372, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3595': { 'ID': 7373, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3596': { 'ID': 7374, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3597': { 'ID': 7375, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3598': { 'ID': 7376, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3599': { 'ID': 7377, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3600': { 'ID': 7378, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3601': { 'ID': 7379, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3602': { 'ID': 7380, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3603': { 'ID': 7381, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3604': { 'ID': 7382, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3605': { 'ID': 7383, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3606': { 'ID': 7384, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3607': { 'ID': 7385, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3608': { 'ID': 7386, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3609': { 'ID': 7387, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3610': { 'ID': 7388, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3611': { 'ID': 7389, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3612': { 'ID': 7390, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3613': { 'ID': 7391, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3614': { 'ID': 7392, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3615': { 'ID': 7393, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3616': { 'ID': 7394, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3617': { 'ID': 7395, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3618': { 'ID': 7396, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3619': { 'ID': 7397, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3620': { 'ID': 7398, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3621': { 'ID': 7399, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3622': { 'ID': 7400, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3623': { 'ID': 7401, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3624': { 'ID': 7402, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3625': { 'ID': 7403, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3626': { 'ID': 7404, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3627': { 'ID': 7405, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3628': { 'ID': 7406, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3629': { 'ID': 7407, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3630': { 'ID': 7408, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3631': { 'ID': 7409, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3632': { 'ID': 7410, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3633': { 'ID': 7411, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3634': { 'ID': 7412, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3635': { 'ID': 7413, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3636': { 'ID': 7414, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3637': { 'ID': 7415, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3638': { 'ID': 7416, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3639': { 'ID': 7417, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3640': { 'ID': 7418, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3641': { 'ID': 7419, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3642': { 'ID': 7420, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3643': { 'ID': 7421, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3644': { 'ID': 7422, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3645': { 'ID': 7423, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3646': { 'ID': 7424, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3647': { 'ID': 7425, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3648': { 'ID': 7426, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3649': { 'ID': 7427, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3650': { 'ID': 7428, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3651': { 'ID': 7429, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3652': { 'ID': 7430, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3653': { 'ID': 7431, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3654': { 'ID': 7432, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3655': { 'ID': 7433, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3656': { 'ID': 7434, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3657': { 'ID': 7435, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3658': { 'ID': 7436, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3659': { 'ID': 7437, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3660': { 'ID': 7438, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3661': { 'ID': 7439, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3662': { 'ID': 7440, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3663': { 'ID': 7441, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3664': { 'ID': 7442, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3665': { 'ID': 7443, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3666': { 'ID': 7444, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3667': { 'ID': 7445, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3668': { 'ID': 7446, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3669': { 'ID': 7447, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3670': { 'ID': 7448, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3671': { 'ID': 7449, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3672': { 'ID': 7450, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3673': { 'ID': 7451, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3674': { 'ID': 7452, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3675': { 'ID': 7453, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3676': { 'ID': 7454, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3677': { 'ID': 7455, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3678': { 'ID': 7456, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3679': { 'ID': 7457, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3680': { 'ID': 7458, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3681': { 'ID': 7459, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3682': { 'ID': 7460, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3683': { 'ID': 7461, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3684': { 'ID': 7462, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3685': { 'ID': 7463, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3686': { 'ID': 7464, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3687': { 'ID': 7465, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3688': { 'ID': 7466, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3689': { 'ID': 7467, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3690': { 'ID': 7468, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3691': { 'ID': 7469, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3692': { 'ID': 7470, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3693': { 'ID': 7471, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3694': { 'ID': 7472, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3695': { 'ID': 7473, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3696': { 'ID': 7474, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3697': { 'ID': 7475, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3698': { 'ID': 7476, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3699': { 'ID': 7477, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3700': { 'ID': 7478, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3701': { 'ID': 7479, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3702': { 'ID': 7480, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3703': { 'ID': 7481, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3704': { 'ID': 7482, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3705': { 'ID': 7483, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3706': { 'ID': 7484, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3707': { 'ID': 7485, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3708': { 'ID': 7486, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3709': { 'ID': 7487, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3710': { 'ID': 7488, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3711': { 'ID': 7489, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3712': { 'ID': 7490, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3713': { 'ID': 7491, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3714': { 'ID': 7492, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3715': { 'ID': 7493, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3716': { 'ID': 7494, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3717': { 'ID': 7495, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3718': { 'ID': 7496, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3719': { 'ID': 7497, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3720': { 'ID': 7498, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr3SysWMZFLAG': { 'ID': 7499, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 32767000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 32767000, 'Name': 'WMZ3 Betriebszustand' }, + 'Nr3SysFSR': { 'ID': 7500, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 32767000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 32767000, 'Name': 'WMZ3 Fehlerstatus-Register' }, + 'Nr3VDatum': { 'ID': 7501, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ3 Lesedatum Volumen' }, + 'Nr3VZeit': { 'ID': 7502, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ3 Leseuhrzeit Volumen' }, + 'Nr3tBtre3': { 'ID': 7503, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ3 Betriebszeit x 10^3' }, + 'Nr3tBtre0': { 'ID': 7504, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ3 Betriebszeit x 10^0' }, + 'Nr3Qe4': { 'ID': 7505, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Durchfluß (10^4)' }, + 'Nr3Qe0': { 'ID': 7506, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Durchfluß (10^0)' }, + 'Nr3Qe-3': { 'ID': 7507, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Durchfluß (10^-3)' }, + 'Nr3QEinh': { 'ID': 7508, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Durchfluß, 0=m³/h, 1=l/h' }, + 'Nr3Ve4': { 'ID': 7509, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Volumen (10^4)' }, + 'Nr3Ve0': { 'ID': 7510, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Volumen (10^0)' }, + 'Nr3Ve-3': { 'ID': 7511, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Volumen (10^-3)' }, + 'Nr3VEinh': { 'ID': 7512, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Volumen, 0=m³, 1=l' }, + 'Nr3Pe4': { 'ID': 7513, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Leistung (10^4)' }, + 'Nr3Pe0': { 'ID': 7514, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Leistung (10^0)' }, + 'Nr3Pe-3': { 'ID': 7515, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Leistung (10^-3)' }, + 'Nr3PEinh': { 'ID': 7516, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Leistung, 0=kW, 1=MW' }, + 'Nr3We4': { 'ID': 7517, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Arbeit (10^4)' }, + 'Nr3We0': { 'ID': 7518, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Arbeit (10^0)' }, + 'Nr3We-3': { 'ID': 7519, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Arbeit (10^-3)' }, + 'Nr3WEinh': { 'ID': 7520, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ3 Einheit Arbeit, 0=MWh, 1=kWh, 2=GJ' }, + 'Nr3Hersteller-ID': { 'ID': 7521, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ3 Hersteller-Identifikation' }, + 'Nr3VLe0': { 'ID': 7522, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ3 Vorlauftemperatur (10^0)' }, + 'Nr3VLe-3': { 'ID': 7523, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Vorlauftemperatur (10^-3)' }, + 'Nr3VLEinh': { 'ID': 7524, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Vorlauftemperatur, 0=°C' }, + 'Nr3WMZ-Firmware': { 'ID': 7525, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Version', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65000000, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 650000, 'Name': 'WMZ3 Firmware-Version Zähler' }, + 'Nr3RLe0': { 'ID': 7526, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ3 Rücklauftemperatur (10^0)' }, + 'Nr3RLe-3': { 'ID': 7527, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Rücklauftemperatur (10^-3)' }, + 'Nr3RLEinh': { 'ID': 7528, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Rücklauftemperatur, 0=°C' }, + 'Unbekannt-3751': { 'ID': 7529, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr3SysAnsFail': { 'ID': 7530, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ3 Testregister für den internen Gebrauch' }, + 'Nr3SysZeroBack': { 'ID': 7531, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ3 Testregister für den internen Gebrauch' }, + 'Unbekannt-3754': { 'ID': 7532, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3755': { 'ID': 7533, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3756': { 'ID': 7534, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr3STagDatum': { 'ID': 7535, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ3 Lesedatum Stichtag' }, + 'Nr3STagZeit': { 'ID': 7536, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ3 Leseuhrzeit Stichtag' }, + 'Nr3WSTag1e4': { 'ID': 7537, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Arbeit Stichtag1 (10^4)' }, + 'Nr3WSTag1e0': { 'ID': 7538, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Arbeit Stichtag1 (10^0)' }, + 'Nr3WSTag1e-3': { 'ID': 7539, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Arbeit Stichtag1 (10^-3)' }, + 'Nr3WSTag1Einh': { 'ID': 7540, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ3 Einheit Arbeit Stichtag 1,0=MWh,1=kWh,2=GJ' }, + 'Nr3STag1Jahr': { 'ID': 7541, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ3 Jahr Stichtag 1' }, + 'Nr3STag1Datum': { 'ID': 7542, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ3 Datum Stichtag 1' }, + 'Nr3VSTag1e4': { 'ID': 7543, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Volumen Stichtag1 (10^4)' }, + 'Nr3VSTag1e0': { 'ID': 7544, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Volumen Stichtag1 (10^0)' }, + 'Nr3VSTag1e-3': { 'ID': 7545, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Volumen Stichtag1 (10^-3)' }, + 'Nr3VSTag1Einh': { 'ID': 7546, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Volumen Stichtag1, 0=m³, 1=l' }, + 'Nr3WSTag2e4': { 'ID': 7547, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Arbeit Stichtag2 (10^4)' }, + 'Nr3WSTag2e0': { 'ID': 7548, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Arbeit Stichtag2 (10^0)' }, + 'Nr3WSTag2e-3': { 'ID': 7549, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Arbeit Stichtag2 (10^-3)' }, + 'Nr3WSTag2Einh': { 'ID': 7550, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ3 Einheit Arbeit Stichtag 2,0=MWh,1=kWh,2=GJ' }, + 'Nr3STag2Jahr': { 'ID': 7551, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ3 Jahr Stichtag2' }, + 'Nr3STag2Datum': { 'ID': 7552, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ3 Datum Stichtag2' }, + 'Nr3VSTag2e4': { 'ID': 7553, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Volumen Stichtag2 (10^4)' }, + 'Nr3VSTag2e0': { 'ID': 7554, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Volumen Stichtag2 (10^0)' }, + 'Nr3VSTag2e-3': { 'ID': 7555, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Volumen Stichtag2 (10^-3)' }, + 'Nr3VSTag2Einh': { 'ID': 7556, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Volumen Stichtag2, 0=m³, 1=l' }, + 'Nr3WDev1e4': { 'ID': 7557, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Arbeit Device1 (10^4)' }, + 'Nr3WDev1e0': { 'ID': 7558, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Arbeit Device1 (10^0)' }, + 'Nr3WDev1e-3': { 'ID': 7559, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Arbeit Device1 (10^-3)' }, + 'Nr3WDev1Einh': { 'ID': 7560, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ3 Device1-Arbeit Einheit,0=MWh,1=kWh,2=GJ' }, + 'Nr3VDev1e4': { 'ID': 7561, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Volumen Device1 (10^4)' }, + 'Nr3VDev1e0': { 'ID': 7562, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Volumen Device1 (10^0)' }, + 'Nr3VDev1e-3': { 'ID': 7563, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Volumen Device1 (10^-3)' }, + 'Nr3VDev1Einh': { 'ID': 7564, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Volumen Device1, 0=m³, 1=l' }, + 'Nr3WDev2e4': { 'ID': 7565, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Arbeit Device2 (10^4)' }, + 'Nr3WDev2e0': { 'ID': 7566, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Arbeit Device2 (10^0)' }, + 'Nr3WDev2e-3': { 'ID': 7567, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Arbeit Device2 (10^-3)' }, + 'Nr3WDev2Einh': { 'ID': 7568, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ3 Einheit Arbeit Device2,0=MWh,1=kWh,2=GJ' }, + 'Nr3VDev2e4': { 'ID': 7569, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Volumen Device2 (10^4)' }, + 'Nr3VDev2e0': { 'ID': 7570, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Volumen Device2 (10^0)' }, + 'Nr3VDev2e-3': { 'ID': 7571, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Volumen Device2 (10^-3)' }, + 'Nr3VDev2Einh': { 'ID': 7572, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Volumen Device2, 0=m³, 1=l' }, + 'Nr3WTa1e4': { 'ID': 7573, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Arbeit Tarif1 (10^4)' }, + 'Nr3WTa1e0': { 'ID': 7574, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Arbeit Tarif1 (10^0)' }, + 'Nr3WTa1e-3': { 'ID': 7575, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Arbeit Tarif1 (10^-3)' }, + 'Nr3WTa1Einh': { 'ID': 7576, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ3 Einheit Arbeit Tarif1,0=MWh,1=kWh,2=GJ' }, + 'Nr3VTa1e4': { 'ID': 7577, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Volumen Tarif1 (10^4)' }, + 'Nr3VTa1e0': { 'ID': 7578, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Volumen Tarif1 (10^0)' }, + 'Nr3VTa1e-3': { 'ID': 7579, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Volumen Tarif1 (10^-3)' }, + 'Nr3VTa1Einh': { 'ID': 7580, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Volumen Tarif1, 0=m³, 1=l' }, + 'Nr3WTa2e4': { 'ID': 7581, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Arbeit Tarif2 (10^4)' }, + 'Nr3WTa2e0': { 'ID': 7582, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Arbeit Tarif2 (10^0)' }, + 'Nr3WTa2e-3': { 'ID': 7583, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Arbeit Tarif2 (10^-3)' }, + 'Nr3WTa2Einh': { 'ID': 7584, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ3 Einheit Arbeit Tarif2,0=MWh,1=kWh,2=GJ' }, + 'Nr3VTa2e4': { 'ID': 7585, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Volumen Tarif2 (10^4)' }, + 'Nr3VTa2e0': { 'ID': 7586, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Volumen Tarif2 (10^0)' }, + 'Nr3VTa2e-3': { 'ID': 7587, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Volumen Tarif2 (10^-3)' }, + 'Nr3VTa2Einh': { 'ID': 7588, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Volumen Tarif2, 0=m³, 1=l' }, + 'Nr3SysIDHB': { 'ID': 7589, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Identnummer obere 4 Stellen' }, + 'Nr3SysIDLB': { 'ID': 7590, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Identnummer untere 4 Stellen' }, + 'Nr3Dev1HCAe7': { 'ID': 7591, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ3 Device 1 Zählen ohne Einheit (10^7)' }, + 'Nr3Dev1HCAe4': { 'ID': 7592, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Device 1 Zählen ohne Einheit (10^4)' }, + 'Nr3Dev1HCAe0': { 'ID': 7593, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Device 1 Zählen ohne Einheit (10^0)' }, + 'Nr3Dev2HCAe7': { 'ID': 7594, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ3 Device 2 Zählen ohne Einheit (10^7)' }, + 'Nr3Dev2HCAe4': { 'ID': 7595, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Device 2 Zählen ohne Einheit (10^4)' }, + 'Nr3Dev2HCAe0': { 'ID': 7596, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Device 2 Zählen ohne Einheit (10^0)' }, + 'Nr3Dev3HCAe7': { 'ID': 7597, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ3 Device 3 Zählen ohne Einheit (10^7)' }, + 'Nr3Dev3HCAe4': { 'ID': 7598, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Device 3 Zählen ohne Einheit (10^4)' }, + 'Nr3Dev3HCAe0': { 'ID': 7599, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Device 3 Zählen ohne Einheit (10^0)' }, + 'Nr3QDev1Nr5e4': { 'ID': 7600, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Qmax Dev1 Speichernr5 10^4' }, + 'Nr3QDev1Nr5e0': { 'ID': 7601, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Qmax Dev1 Speichernr5 10^0' }, + 'Nr3QDev1Nr5e-3': { 'ID': 7602, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Qmax Dev1 Speichernr5 10^-3' }, + 'Nr3QDev1Nr5Einh': { 'ID': 7603, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit QmaxDev1Spnr5,0=m³/h,1=l/h' }, + 'Nr3Dev1Nr5Jahr': { 'ID': 7604, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ3 Jahr für Dev1maxStorNr5' }, + 'Nr3Dev1Nr5Datum': { 'ID': 7605, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ3 Datum für Dev1maxStorNr5' }, + 'Nr3Dev1Nr5Zeit': { 'ID': 7606, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ3 Uhrzeit für Dev1maxStorNr5' }, + 'Nr3PDev1Nr1e4': { 'ID': 7607, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Pmax für Dev1StorNr1 (10^4)' }, + 'Nr3PDev1Nr1e0': { 'ID': 7608, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Pmax für Dev1StorNr1 (10^0)' }, + 'Nr3PDev1Nr1e-3': { 'ID': 7609, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Pmax für Dev1StorNr1 (10^-3)' }, + 'Nr3PDev1Nr1Einh': { 'ID': 7610, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit PmaxDev1StorNr1, 0=kW, 1=MW' }, + 'Nr3Dev1Nr1Jahr': { 'ID': 7611, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ3 Jahr für Dev1maxStorNr1' }, + 'Nr3Dev1Nr1Datum': { 'ID': 7612, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ3 Datum für Dev1maxStorNr1' }, + 'Nr3Dev1Nr1Zeit': { 'ID': 7613, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ3 Uhrzeit für Dev1maxStorNr1' }, + 'Nr3Pmaxe4': { 'ID': 7614, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Leistung max (10^4)' }, + 'Nr3Pmaxe0': { 'ID': 7615, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Leistung max (10^0)' }, + 'Nr3Pmaxe-3': { 'ID': 7616, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Leistung max (10^-3)' }, + 'Nr3PmaxEinh': { 'ID': 7617, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Leistung max, 0=kW, 1=MW' }, + 'Nr3Qmaxe4': { 'ID': 7618, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Durchfluß max (10^4)' }, + 'Nr3Qmaxe0': { 'ID': 7619, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Durchfluß max (10^0)' }, + 'Nr3Qmaxe-3': { 'ID': 7620, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Durchfluß max (10^-3)' }, + 'Nr3QmaxEinh': { 'ID': 7621, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Durchfluß max,0=m³/h,1=l/h' }, + 'Unbekannt-3844': { 'ID': 7622, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr3VLmaxe0': { 'ID': 7623, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ3 Vorlauftemperatur max (10^0)' }, + 'Nr3VLmaxe-3': { 'ID': 7624, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Vorlauftemperatur max (10^-3)' }, + 'Nr3VLmaxEinh': { 'ID': 7625, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Vorlauftemperatur max, 0=°C' }, + 'Unbekannt-3848': { 'ID': 7626, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr3RLmaxe0': { 'ID': 7627, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ3 Rücklauftemperatur max (10^0)' }, + 'Nr3RLmaxe-3': { 'ID': 7628, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Rücklauftemperatur max (10^-3)' }, + 'Nr3RLmaxEinh': { 'ID': 7629, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Rücklauftemperatur max, 0=°C' }, + 'Nr3SysSlaveadr': { 'ID': 7630, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 255000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 255000, 'Name': 'WMZ3 echte WMZ-Adresse nach Zählerantwort' }, + 'Nr3DeltaTe0': { 'ID': 7631, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ3 Differenz (Vorlauf-Rücklauf) (10^0)' }, + 'Nr3DeltaTe-3': { 'ID': 7632, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Differenz (Vorlauf-Rücklauf) (10^-3)' }, + 'Nr3VTa3e4': { 'ID': 7633, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Volumen Tarif3 (10^4)' }, + 'Nr3VTa3e0': { 'ID': 7634, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Volumen Tarif3 (10^0)' }, + 'Nr3VTa3e-3': { 'ID': 7635, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Volumen Tarif3 (10^-3)' }, + 'Nr3VTa3Einh': { 'ID': 7636, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit Volumen Tarif3, 0=m³, 1=l' }, + 'Nr3PTa1Nr24e4': { 'ID': 7637, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 P Tarif1StorNr24 (10^4)' }, + 'Nr3PTa1Nr24e0': { 'ID': 7638, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 P Tarif1StorNr24 (10^0)' }, + 'Nr3PTa1Nr24e-3': { 'ID': 7639, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 P Tarif1StorNr24 (10^-3)' }, + 'Nr3PTa1Nr24Einh': { 'ID': 7640, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Einheit PTarif1StorNr24, 0=kW, 1=MW' }, + 'Nr3QTa1Nr24e4': { 'ID': 7641, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ3 Q Tarif1StorNr24 (10^4)' }, + 'Nr3QTa1Nr24e0': { 'ID': 7642, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ3 Q Tarif1StorNr24 (10^0)' }, + 'Nr3QTa1Nr24e-3': { 'ID': 7643, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ3 Q Tarif1StorNr24 (10^-3)' }, + 'Nr3QTa1Nr24Einh': { 'ID': 7644, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 EinheitQTarif1StorNr24,0=m³/h,1=l/h' }, + 'Nr3tErrore3': { 'ID': 7645, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Zeit während Fehler (10^3)' }, + 'Nr3tErrore0': { 'ID': 7646, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Zeit während Fehler (10^0)' }, + 'Nr3tInfoe3': { 'ID': 7647, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Info (10^3)' }, + 'Nr3tInfoe0': { 'ID': 7648, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ3 Info (10^0)' }, + 'Unbekannt-3871': { 'ID': 7649, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3872': { 'ID': 7650, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3873': { 'ID': 7651, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3874': { 'ID': 7652, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3875': { 'ID': 7653, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3876': { 'ID': 7654, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3877': { 'ID': 7655, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3878': { 'ID': 7656, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3879': { 'ID': 7657, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3880': { 'ID': 7658, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3881': { 'ID': 7659, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3882': { 'ID': 7660, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3883': { 'ID': 7661, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3884': { 'ID': 7662, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3885': { 'ID': 7663, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3886': { 'ID': 7664, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3887': { 'ID': 7665, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3888': { 'ID': 7666, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3889': { 'ID': 7667, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3890': { 'ID': 7668, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3891': { 'ID': 7669, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3892': { 'ID': 7670, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3893': { 'ID': 7671, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3894': { 'ID': 7672, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3895': { 'ID': 7673, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3896': { 'ID': 7674, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3897': { 'ID': 7675, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3898': { 'ID': 7676, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3899': { 'ID': 7677, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3900': { 'ID': 7678, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3901': { 'ID': 7679, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3902': { 'ID': 7680, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3903': { 'ID': 7681, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3904': { 'ID': 7682, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3905': { 'ID': 7683, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3906': { 'ID': 7684, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3907': { 'ID': 7685, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3908': { 'ID': 7686, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3909': { 'ID': 7687, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3910': { 'ID': 7688, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3911': { 'ID': 7689, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3912': { 'ID': 7690, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3913': { 'ID': 7691, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3914': { 'ID': 7692, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3915': { 'ID': 7693, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3916': { 'ID': 7694, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3917': { 'ID': 7695, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3918': { 'ID': 7696, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3919': { 'ID': 7697, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3920': { 'ID': 7698, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3921': { 'ID': 7699, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3922': { 'ID': 7700, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3923': { 'ID': 7701, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3924': { 'ID': 7702, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3925': { 'ID': 7703, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3926': { 'ID': 7704, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3927': { 'ID': 7705, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3928': { 'ID': 7706, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3929': { 'ID': 7707, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3930': { 'ID': 7708, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3931': { 'ID': 7709, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3932': { 'ID': 7710, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3933': { 'ID': 7711, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3934': { 'ID': 7712, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3935': { 'ID': 7713, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3936': { 'ID': 7714, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3937': { 'ID': 7715, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3938': { 'ID': 7716, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3939': { 'ID': 7717, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3940': { 'ID': 7718, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3941': { 'ID': 7719, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3942': { 'ID': 7720, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3943': { 'ID': 7721, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3944': { 'ID': 7722, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3945': { 'ID': 7723, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3946': { 'ID': 7724, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3947': { 'ID': 7725, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3948': { 'ID': 7726, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3949': { 'ID': 7727, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3950': { 'ID': 7728, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3951': { 'ID': 7729, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3952': { 'ID': 7730, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3953': { 'ID': 7731, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3954': { 'ID': 7732, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3955': { 'ID': 7733, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3956': { 'ID': 7734, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3957': { 'ID': 7735, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3958': { 'ID': 7736, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3959': { 'ID': 7737, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3960': { 'ID': 7738, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3961': { 'ID': 7739, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3962': { 'ID': 7740, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3963': { 'ID': 7741, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3964': { 'ID': 7742, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3965': { 'ID': 7743, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3966': { 'ID': 7744, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3967': { 'ID': 7745, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3968': { 'ID': 7746, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3969': { 'ID': 7747, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3970': { 'ID': 7748, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3971': { 'ID': 7749, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3972': { 'ID': 7750, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3973': { 'ID': 7751, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3974': { 'ID': 7752, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3975': { 'ID': 7753, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3976': { 'ID': 7754, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3977': { 'ID': 7755, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3978': { 'ID': 7756, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3979': { 'ID': 7757, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3980': { 'ID': 7758, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3981': { 'ID': 7759, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3982': { 'ID': 7760, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3983': { 'ID': 7761, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3984': { 'ID': 7762, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3985': { 'ID': 7763, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3986': { 'ID': 7764, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3987': { 'ID': 7765, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3988': { 'ID': 7766, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3989': { 'ID': 7767, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3990': { 'ID': 7768, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3991': { 'ID': 7769, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3992': { 'ID': 7770, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3993': { 'ID': 7771, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3994': { 'ID': 7772, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3995': { 'ID': 7773, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3996': { 'ID': 7774, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3997': { 'ID': 7775, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3998': { 'ID': 7776, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-3999': { 'ID': 7777, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4000': { 'ID': 7778, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4001': { 'ID': 7779, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4002': { 'ID': 7780, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4003': { 'ID': 7781, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4004': { 'ID': 7782, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4005': { 'ID': 7783, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4006': { 'ID': 7784, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4007': { 'ID': 7785, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4008': { 'ID': 7786, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4009': { 'ID': 7787, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4010': { 'ID': 7788, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4011': { 'ID': 7789, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4012': { 'ID': 7790, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4013': { 'ID': 7791, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4014': { 'ID': 7792, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4015': { 'ID': 7793, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4016': { 'ID': 7794, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4017': { 'ID': 7795, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4018': { 'ID': 7796, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4019': { 'ID': 7797, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4020': { 'ID': 7798, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4021': { 'ID': 7799, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4022': { 'ID': 7800, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4023': { 'ID': 7801, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4024': { 'ID': 7802, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4025': { 'ID': 7803, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4026': { 'ID': 7804, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4027': { 'ID': 7805, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4028': { 'ID': 7806, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4029': { 'ID': 7807, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4030': { 'ID': 7808, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4031': { 'ID': 7809, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4032': { 'ID': 7810, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4033': { 'ID': 7811, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4034': { 'ID': 7812, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4035': { 'ID': 7813, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4036': { 'ID': 7814, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4037': { 'ID': 7815, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4038': { 'ID': 7816, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4039': { 'ID': 7817, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4040': { 'ID': 7818, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4041': { 'ID': 7819, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4042': { 'ID': 7820, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4043': { 'ID': 7821, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4044': { 'ID': 7822, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4045': { 'ID': 7823, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4046': { 'ID': 7824, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4047': { 'ID': 7825, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4048': { 'ID': 7826, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4049': { 'ID': 7827, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4050': { 'ID': 7828, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4051': { 'ID': 7829, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4052': { 'ID': 7830, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4053': { 'ID': 7831, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4054': { 'ID': 7832, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4055': { 'ID': 7833, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4056': { 'ID': 7834, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4057': { 'ID': 7835, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4058': { 'ID': 7836, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4059': { 'ID': 7837, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4060': { 'ID': 7838, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4061': { 'ID': 7839, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4062': { 'ID': 7840, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4063': { 'ID': 7841, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4064': { 'ID': 7842, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4065': { 'ID': 7843, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4066': { 'ID': 7844, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4067': { 'ID': 7845, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4068': { 'ID': 7846, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4069': { 'ID': 7847, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4070': { 'ID': 7848, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4071': { 'ID': 7849, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4072': { 'ID': 7850, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4073': { 'ID': 7851, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4074': { 'ID': 7852, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4075': { 'ID': 7853, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4076': { 'ID': 7854, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4077': { 'ID': 7855, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4078': { 'ID': 7856, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4079': { 'ID': 7857, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4080': { 'ID': 7858, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4081': { 'ID': 7859, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4082': { 'ID': 7860, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4083': { 'ID': 7861, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4084': { 'ID': 7862, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4085': { 'ID': 7863, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4086': { 'ID': 7864, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4087': { 'ID': 7865, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4088': { 'ID': 7866, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4089': { 'ID': 7867, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4090': { 'ID': 7868, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4091': { 'ID': 7869, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4092': { 'ID': 7870, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4093': { 'ID': 7871, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4094': { 'ID': 7872, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4095': { 'ID': 7873, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4096': { 'ID': 7874, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4097': { 'ID': 7875, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4098': { 'ID': 7876, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4099': { 'ID': 7877, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4100': { 'ID': 7878, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4101': { 'ID': 7879, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4102': { 'ID': 7880, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4103': { 'ID': 7881, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4104': { 'ID': 7882, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4105': { 'ID': 7883, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4106': { 'ID': 7884, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4107': { 'ID': 7885, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4108': { 'ID': 7886, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4109': { 'ID': 7887, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4110': { 'ID': 7888, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4111': { 'ID': 7889, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4112': { 'ID': 7890, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4113': { 'ID': 7891, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4114': { 'ID': 7892, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4115': { 'ID': 7893, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4116': { 'ID': 7894, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4117': { 'ID': 7895, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4118': { 'ID': 7896, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4119': { 'ID': 7897, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4120': { 'ID': 7898, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4121': { 'ID': 7899, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4122': { 'ID': 7900, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4123': { 'ID': 7901, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4124': { 'ID': 7902, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4125': { 'ID': 7903, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4126': { 'ID': 7904, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4127': { 'ID': 7905, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4128': { 'ID': 7906, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4129': { 'ID': 7907, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4130': { 'ID': 7908, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4131': { 'ID': 7909, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4132': { 'ID': 7910, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4133': { 'ID': 7911, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4134': { 'ID': 7912, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4135': { 'ID': 7913, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4136': { 'ID': 7914, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4137': { 'ID': 7915, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4138': { 'ID': 7916, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4139': { 'ID': 7917, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4140': { 'ID': 7918, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4141': { 'ID': 7919, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4142': { 'ID': 7920, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4143': { 'ID': 7921, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4144': { 'ID': 7922, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4145': { 'ID': 7923, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4146': { 'ID': 7924, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4147': { 'ID': 7925, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4148': { 'ID': 7926, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4149': { 'ID': 7927, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4150': { 'ID': 7928, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4151': { 'ID': 7929, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4152': { 'ID': 7930, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4153': { 'ID': 7931, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4154': { 'ID': 7932, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4155': { 'ID': 7933, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4156': { 'ID': 7934, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4157': { 'ID': 7935, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4158': { 'ID': 7936, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4159': { 'ID': 7937, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4160': { 'ID': 7938, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4161': { 'ID': 7939, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4162': { 'ID': 7940, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4163': { 'ID': 7941, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4164': { 'ID': 7942, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4165': { 'ID': 7943, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4166': { 'ID': 7944, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4167': { 'ID': 7945, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4168': { 'ID': 7946, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4169': { 'ID': 7947, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4170': { 'ID': 7948, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4171': { 'ID': 7949, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4172': { 'ID': 7950, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4173': { 'ID': 7951, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4174': { 'ID': 7952, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4175': { 'ID': 7953, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4176': { 'ID': 7954, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4177': { 'ID': 7955, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4178': { 'ID': 7956, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4179': { 'ID': 7957, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4180': { 'ID': 7958, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4181': { 'ID': 7959, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4182': { 'ID': 7960, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4183': { 'ID': 7961, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4184': { 'ID': 7962, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4185': { 'ID': 7963, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4186': { 'ID': 7964, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4187': { 'ID': 7965, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4188': { 'ID': 7966, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4189': { 'ID': 7967, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4190': { 'ID': 7968, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4191': { 'ID': 7969, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4192': { 'ID': 7970, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4193': { 'ID': 7971, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4194': { 'ID': 7972, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4195': { 'ID': 7973, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4196': { 'ID': 7974, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4197': { 'ID': 7975, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4198': { 'ID': 7976, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4199': { 'ID': 7977, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4200': { 'ID': 7978, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4201': { 'ID': 7979, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4202': { 'ID': 7980, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4203': { 'ID': 7981, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4204': { 'ID': 7982, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4205': { 'ID': 7983, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4206': { 'ID': 7984, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4207': { 'ID': 7985, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4208': { 'ID': 7986, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4209': { 'ID': 7987, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4210': { 'ID': 7988, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4211': { 'ID': 7989, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4212': { 'ID': 7990, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4213': { 'ID': 7991, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4214': { 'ID': 7992, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4215': { 'ID': 7993, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4216': { 'ID': 7994, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4217': { 'ID': 7995, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4218': { 'ID': 7996, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4219': { 'ID': 7997, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4220': { 'ID': 7998, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr4SysWMZFLAG': { 'ID': 7999, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 32767000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 32767000, 'Name': 'WMZ4 Betriebszustand' }, + 'Nr4SysFSR': { 'ID': 8000, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 32767000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 32767000, 'Name': 'WMZ4 Fehlerstatus-Register' }, + 'Nr4VDatum': { 'ID': 8001, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ4 Lesedatum Volumen' }, + 'Nr4VZeit': { 'ID': 8002, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ4 Leseuhrzeit Volumen' }, + 'Nr4tBtre3': { 'ID': 8003, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ4 Betriebszeit x 10^3' }, + 'Nr4tBtre0': { 'ID': 8004, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ4 Betriebszeit x 10^0' }, + 'Nr4Qe4': { 'ID': 8005, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Durchfluß (10^4)' }, + 'Nr4Qe0': { 'ID': 8006, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Durchfluß (10^0)' }, + 'Nr4Qe-3': { 'ID': 8007, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Durchfluß (10^-3)' }, + 'Nr4QEinh': { 'ID': 8008, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Durchfluß, 0=m³/h, 1=l/h' }, + 'Nr4Ve4': { 'ID': 8009, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Volumen (10^4)' }, + 'Nr4Ve0': { 'ID': 8010, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Volumen (10^0)' }, + 'Nr4Ve-3': { 'ID': 8011, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Volumen (10^-3)' }, + 'Nr4VEinh': { 'ID': 8012, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Volumen, 0=m³, 1=l' }, + 'Nr4Pe4': { 'ID': 8013, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Leistung (10^4)' }, + 'Nr4Pe0': { 'ID': 8014, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Leistung (10^0)' }, + 'Nr4Pe-3': { 'ID': 8015, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Leistung (10^-3)' }, + 'Nr4PEinh': { 'ID': 8016, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Leistung, 0=kW, 1=MW' }, + 'Nr4We4': { 'ID': 8017, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Arbeit (10^4)' }, + 'Nr4We0': { 'ID': 8018, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Arbeit (10^0)' }, + 'Nr4We-3': { 'ID': 8019, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Arbeit (10^-3)' }, + 'Nr4WEinh': { 'ID': 8020, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ4 Einheit Arbeit, 0=MWh, 1=kWh, 2=GJ' }, + 'Nr4Hersteller-ID': { 'ID': 8021, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ4 Hersteller-Identifikation' }, + 'Nr4VLe0': { 'ID': 8022, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ4 Vorlauftemperatur (10^0)' }, + 'Nr4VLe-3': { 'ID': 8023, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Vorlauftemperatur (10^-3)' }, + 'Nr4VLEinh': { 'ID': 8024, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Vorlauftemperatur, 0=°C' }, + 'Nr4WMZ-Firmware': { 'ID': 8025, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Version', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65000000, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 650000, 'Name': 'WMZ4 Firmware-Version Zähler' }, + 'Nr4RLe0': { 'ID': 8026, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ4 Rücklauftemperatur (10^0)' }, + 'Nr4RLe-3': { 'ID': 8027, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Rücklauftemperatur (10^-3)' }, + 'Nr4RLEinh': { 'ID': 8028, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Rücklauftemperatur, 0=°C' }, + 'Unbekannt-4251': { 'ID': 8029, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr4SysAnsFail': { 'ID': 8030, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ4 Testregister für den internen Gebrauch' }, + 'Nr4SysZeroBack': { 'ID': 8031, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ4 Testregister für den internen Gebrauch' }, + 'Unbekannt-4254': { 'ID': 8032, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4255': { 'ID': 8033, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4256': { 'ID': 8034, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr4STagDatum': { 'ID': 8035, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ4 Lesedatum Stichtag' }, + 'Nr4STagZeit': { 'ID': 8036, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ4 Leseuhrzeit Stichtag' }, + 'Nr4WSTag1e4': { 'ID': 8037, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Arbeit Stichtag1 (10^4)' }, + 'Nr4WSTag1e0': { 'ID': 8038, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Arbeit Stichtag1 (10^0)' }, + 'Nr4WSTag1e-3': { 'ID': 8039, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Arbeit Stichtag1 (10^-3)' }, + 'Nr4WSTag1Einh': { 'ID': 8040, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ4 Einheit Arbeit Stichtag 1,0=MWh,1=kWh,2=GJ' }, + 'Nr4STag1Jahr': { 'ID': 8041, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ4 Jahr Stichtag 1' }, + 'Nr4STag1Datum': { 'ID': 8042, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ4 Datum Stichtag 1' }, + 'Nr4VSTag1e4': { 'ID': 8043, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Volumen Stichtag1 (10^4)' }, + 'Nr4VSTag1e0': { 'ID': 8044, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Volumen Stichtag1 (10^0)' }, + 'Nr4VSTag1e-3': { 'ID': 8045, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Volumen Stichtag1 (10^-3)' }, + 'Nr4VSTag1Einh': { 'ID': 8046, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Volumen Stichtag1, 0=m³, 1=l' }, + 'Nr4WSTag2e4': { 'ID': 8047, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Arbeit Stichtag2 (10^4)' }, + 'Nr4WSTag2e0': { 'ID': 8048, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Arbeit Stichtag2 (10^0)' }, + 'Nr4WSTag2e-3': { 'ID': 8049, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Arbeit Stichtag2 (10^-3)' }, + 'Nr4WSTag2Einh': { 'ID': 8050, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ4 Einheit Arbeit Stichtag 2,0=MWh,1=kWh,2=GJ' }, + 'Nr4STag2Jahr': { 'ID': 8051, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ4 Jahr Stichtag2' }, + 'Nr4STag2Datum': { 'ID': 8052, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ4 Datum Stichtag2' }, + 'Nr4VSTag2e4': { 'ID': 8053, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Volumen Stichtag2 (10^4)' }, + 'Nr4VSTag2e0': { 'ID': 8054, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Volumen Stichtag2 (10^0)' }, + 'Nr4VSTag2e-3': { 'ID': 8055, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Volumen Stichtag2 (10^-3)' }, + 'Nr4VSTag2Einh': { 'ID': 8056, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Volumen Stichtag2, 0=m³, 1=l' }, + 'Nr4WDev1e4': { 'ID': 8057, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Arbeit Device1 (10^4)' }, + 'Nr4WDev1e0': { 'ID': 8058, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Arbeit Device1 (10^0)' }, + 'Nr4WDev1e-3': { 'ID': 8059, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Arbeit Device1 (10^-3)' }, + 'Nr4WDev1Einh': { 'ID': 8060, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ4 Device1-Arbeit Einheit,0=MWh,1=kWh,2=GJ' }, + 'Nr4VDev1e4': { 'ID': 8061, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Volumen Device1 (10^4)' }, + 'Nr4VDev1e0': { 'ID': 8062, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Volumen Device1 (10^0)' }, + 'Nr4VDev1e-3': { 'ID': 8063, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Volumen Device1 (10^-3)' }, + 'Nr4VDev1Einh': { 'ID': 8064, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Volumen Device1, 0=m³, 1=l' }, + 'Nr4WDev2e4': { 'ID': 8065, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Arbeit Device2 (10^4)' }, + 'Nr4WDev2e0': { 'ID': 8066, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Arbeit Device2 (10^0)' }, + 'Nr4WDev2e-3': { 'ID': 8067, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Arbeit Device2 (10^-3)' }, + 'Nr4WDev2Einh': { 'ID': 8068, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ4 Einheit Arbeit Device2,0=MWh,1=kWh,2=GJ' }, + 'Nr4VDev2e4': { 'ID': 8069, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Volumen Device2 (10^4)' }, + 'Nr4VDev2e0': { 'ID': 8070, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Volumen Device2 (10^0)' }, + 'Nr4VDev2e-3': { 'ID': 8071, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Volumen Device2 (10^-3)' }, + 'Nr4VDev2Einh': { 'ID': 8072, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Volumen Device2, 0=m³, 1=l' }, + 'Nr4WTa1e4': { 'ID': 8073, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Arbeit Tarif1 (10^4)' }, + 'Nr4WTa1e0': { 'ID': 8074, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Arbeit Tarif1 (10^0)' }, + 'Nr4WTa1e-3': { 'ID': 8075, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Arbeit Tarif1 (10^-3)' }, + 'Nr4WTa1Einh': { 'ID': 8076, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ4 Einheit Arbeit Tarif1,0=MWh,1=kWh,2=GJ' }, + 'Nr4VTa1e4': { 'ID': 8077, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Volumen Tarif1 (10^4)' }, + 'Nr4VTa1e0': { 'ID': 8078, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Volumen Tarif1 (10^0)' }, + 'Nr4VTa1e-3': { 'ID': 8079, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Volumen Tarif1 (10^-3)' }, + 'Nr4VTa1Einh': { 'ID': 8080, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Volumen Tarif1, 0=m³, 1=l' }, + 'Nr4WTa2e4': { 'ID': 8081, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Arbeit Tarif2 (10^4)' }, + 'Nr4WTa2e0': { 'ID': 8082, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Arbeit Tarif2 (10^0)' }, + 'Nr4WTa2e-3': { 'ID': 8083, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Arbeit Tarif2 (10^-3)' }, + 'Nr4WTa2Einh': { 'ID': 8084, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ4 Einheit Arbeit Tarif2,0=MWh,1=kWh,2=GJ' }, + 'Nr4VTa2e4': { 'ID': 8085, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Volumen Tarif2 (10^4)' }, + 'Nr4VTa2e0': { 'ID': 8086, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Volumen Tarif2 (10^0)' }, + 'Nr4VTa2e-3': { 'ID': 8087, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Volumen Tarif2 (10^-3)' }, + 'Nr4VTa2Einh': { 'ID': 8088, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Volumen Tarif2, 0=m³, 1=l' }, + 'Nr4SysIDHB': { 'ID': 8089, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Identnummer obere 4 Stellen' }, + 'Nr4SysIDLB': { 'ID': 8090, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Identnummer untere 4 Stellen' }, + 'Nr4Dev1HCAe7': { 'ID': 8091, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ4 Device 1 Zählen ohne Einheit (10^7)' }, + 'Nr4Dev1HCAe4': { 'ID': 8092, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Device 1 Zählen ohne Einheit (10^4)' }, + 'Nr4Dev1HCAe0': { 'ID': 8093, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Device 1 Zählen ohne Einheit (10^0)' }, + 'Nr4Dev2HCAe7': { 'ID': 8094, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ4 Device 2 Zählen ohne Einheit (10^7)' }, + 'Nr4Dev2HCAe4': { 'ID': 8095, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Device 2 Zählen ohne Einheit (10^4)' }, + 'Nr4Dev2HCAe0': { 'ID': 8096, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Device 2 Zählen ohne Einheit (10^0)' }, + 'Nr4Dev3HCAe7': { 'ID': 8097, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ4 Device 3 Zählen ohne Einheit (10^7)' }, + 'Nr4Dev3HCAe4': { 'ID': 8098, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Device 3 Zählen ohne Einheit (10^4)' }, + 'Nr4Dev3HCAe0': { 'ID': 8099, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Device 3 Zählen ohne Einheit (10^0)' }, + 'Nr4QDev1Nr5e4': { 'ID': 8100, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Qmax Dev1 Speichernr5 10^4' }, + 'Nr4QDev1Nr5e0': { 'ID': 8101, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Qmax Dev1 Speichernr5 10^0' }, + 'Nr4QDev1Nr5e-3': { 'ID': 8102, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Qmax Dev1 Speichernr5 10^-3' }, + 'Nr4QDev1Nr5Einh': { 'ID': 8103, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit QmaxDev1Spnr5,0=m³/h,1=l/h' }, + 'Nr4Dev1Nr5Jahr': { 'ID': 8104, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ4 Jahr für Dev1maxStorNr5' }, + 'Nr4Dev1Nr5Datum': { 'ID': 8105, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ4 Datum für Dev1maxStorNr5' }, + 'Nr4Dev1Nr5Zeit': { 'ID': 8106, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ4 Uhrzeit für Dev1maxStorNr5' }, + 'Nr4PDev1Nr1e4': { 'ID': 8107, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Pmax für Dev1StorNr1 (10^4)' }, + 'Nr4PDev1Nr1e0': { 'ID': 8108, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Pmax für Dev1StorNr1 (10^0)' }, + 'Nr4PDev1Nr1e-3': { 'ID': 8109, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Pmax für Dev1StorNr1 (10^-3)' }, + 'Nr4PDev1Nr1Einh': { 'ID': 8110, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit PmaxDev1StorNr1, 0=kW, 1=MW' }, + 'Nr4Dev1Nr1Jahr': { 'ID': 8111, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ4 Jahr für Dev1maxStorNr1' }, + 'Nr4Dev1Nr1Datum': { 'ID': 8112, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ4 Datum für Dev1maxStorNr1' }, + 'Nr4Dev1Nr1Zeit': { 'ID': 8113, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ4 Uhrzeit für Dev1maxStorNr1' }, + 'Nr4Pmaxe4': { 'ID': 8114, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Leistung max (10^4)' }, + 'Nr4Pmaxe0': { 'ID': 8115, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Leistung max (10^0)' }, + 'Nr4Pmaxe-3': { 'ID': 8116, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Leistung max (10^-3)' }, + 'Nr4PmaxEinh': { 'ID': 8117, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Leistung max, 0=kW, 1=MW' }, + 'Nr4Qmaxe4': { 'ID': 8118, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Durchfluß max (10^4)' }, + 'Nr4Qmaxe0': { 'ID': 8119, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Durchfluß max (10^0)' }, + 'Nr4Qmaxe-3': { 'ID': 8120, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Durchfluß max (10^-3)' }, + 'Nr4QmaxEinh': { 'ID': 8121, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Durchfluß max,0=m³/h,1=l/h' }, + 'Unbekannt-4344': { 'ID': 8122, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr4VLmaxe0': { 'ID': 8123, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ4 Vorlauftemperatur max (10^0)' }, + 'Nr4VLmaxe-3': { 'ID': 8124, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Vorlauftemperatur max (10^-3)' }, + 'Nr4VLmaxEinh': { 'ID': 8125, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Vorlauftemperatur max, 0=°C' }, + 'Unbekannt-4348': { 'ID': 8126, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr4RLmaxe0': { 'ID': 8127, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ4 Rücklauftemperatur max (10^0)' }, + 'Nr4RLmaxe-3': { 'ID': 8128, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Rücklauftemperatur max (10^-3)' }, + 'Nr4RLmaxEinh': { 'ID': 8129, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Rücklauftemperatur max, 0=°C' }, + 'Nr4SysSlaveadr': { 'ID': 8130, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 255000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 255000, 'Name': 'WMZ4 echte WMZ-Adresse nach Zählerantwort' }, + 'Nr4DeltaTe0': { 'ID': 8131, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ4 Differenz (Vorlauf-Rücklauf) (10^0)' }, + 'Nr4DeltaTe-3': { 'ID': 8132, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Differenz (Vorlauf-Rücklauf) (10^-3)' }, + 'Nr4VTa3e4': { 'ID': 8133, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Volumen Tarif3 (10^4)' }, + 'Nr4VTa3e0': { 'ID': 8134, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Volumen Tarif3 (10^0)' }, + 'Nr4VTa3e-3': { 'ID': 8135, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Volumen Tarif3 (10^-3)' }, + 'Nr4VTa3Einh': { 'ID': 8136, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit Volumen Tarif3, 0=m³, 1=l' }, + 'Nr4PTa1Nr24e4': { 'ID': 8137, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 P Tarif1StorNr24 (10^4)' }, + 'Nr4PTa1Nr24e0': { 'ID': 8138, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 P Tarif1StorNr24 (10^0)' }, + 'Nr4PTa1Nr24e-3': { 'ID': 8139, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 P Tarif1StorNr24 (10^-3)' }, + 'Nr4PTa1Nr24Einh': { 'ID': 8140, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Einheit PTarif1StorNr24, 0=kW, 1=MW' }, + 'Nr4QTa1Nr24e4': { 'ID': 8141, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ4 Q Tarif1StorNr24 (10^4)' }, + 'Nr4QTa1Nr24e0': { 'ID': 8142, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ4 Q Tarif1StorNr24 (10^0)' }, + 'Nr4QTa1Nr24e-3': { 'ID': 8143, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ4 Q Tarif1StorNr24 (10^-3)' }, + 'Nr4QTa1Nr24Einh': { 'ID': 8144, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 EinheitQTarif1StorNr24,0=m³/h,1=l/h' }, + 'Nr4tErrore3': { 'ID': 8145, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Zeit während Fehler (10^3)' }, + 'Nr4tErrore0': { 'ID': 8146, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Zeit während Fehler (10^0)' }, + 'Nr4tInfoe3': { 'ID': 8147, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Info (10^3)' }, + 'Nr4tInfoe0': { 'ID': 8148, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ4 Info (10^0)' }, + 'Unbekannt-4371': { 'ID': 8149, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4372': { 'ID': 8150, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4373': { 'ID': 8151, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4374': { 'ID': 8152, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4375': { 'ID': 8153, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4376': { 'ID': 8154, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4377': { 'ID': 8155, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4378': { 'ID': 8156, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4379': { 'ID': 8157, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4380': { 'ID': 8158, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4381': { 'ID': 8159, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4382': { 'ID': 8160, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4383': { 'ID': 8161, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4384': { 'ID': 8162, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4385': { 'ID': 8163, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4386': { 'ID': 8164, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4387': { 'ID': 8165, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4388': { 'ID': 8166, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4389': { 'ID': 8167, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4390': { 'ID': 8168, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4391': { 'ID': 8169, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4392': { 'ID': 8170, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4393': { 'ID': 8171, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4394': { 'ID': 8172, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4395': { 'ID': 8173, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4396': { 'ID': 8174, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4397': { 'ID': 8175, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4398': { 'ID': 8176, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4399': { 'ID': 8177, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4400': { 'ID': 8178, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4401': { 'ID': 8179, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4402': { 'ID': 8180, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4403': { 'ID': 8181, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4404': { 'ID': 8182, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4405': { 'ID': 8183, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4406': { 'ID': 8184, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4407': { 'ID': 8185, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4408': { 'ID': 8186, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4409': { 'ID': 8187, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4410': { 'ID': 8188, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4411': { 'ID': 8189, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4412': { 'ID': 8190, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4413': { 'ID': 8191, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4414': { 'ID': 8192, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4415': { 'ID': 8193, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4416': { 'ID': 8194, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4417': { 'ID': 8195, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4418': { 'ID': 8196, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4419': { 'ID': 8197, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4420': { 'ID': 8198, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4421': { 'ID': 8199, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4422': { 'ID': 8200, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4423': { 'ID': 8201, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4424': { 'ID': 8202, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4425': { 'ID': 8203, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4426': { 'ID': 8204, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4427': { 'ID': 8205, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4428': { 'ID': 8206, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4429': { 'ID': 8207, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4430': { 'ID': 8208, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4431': { 'ID': 8209, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4432': { 'ID': 8210, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4433': { 'ID': 8211, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4434': { 'ID': 8212, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4435': { 'ID': 8213, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4436': { 'ID': 8214, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4437': { 'ID': 8215, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4438': { 'ID': 8216, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4439': { 'ID': 8217, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4440': { 'ID': 8218, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4441': { 'ID': 8219, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4442': { 'ID': 8220, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4443': { 'ID': 8221, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4444': { 'ID': 8222, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4445': { 'ID': 8223, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4446': { 'ID': 8224, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4447': { 'ID': 8225, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4448': { 'ID': 8226, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4449': { 'ID': 8227, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4450': { 'ID': 8228, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4451': { 'ID': 8229, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4452': { 'ID': 8230, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4453': { 'ID': 8231, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4454': { 'ID': 8232, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4455': { 'ID': 8233, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4456': { 'ID': 8234, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4457': { 'ID': 8235, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4458': { 'ID': 8236, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4459': { 'ID': 8237, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4460': { 'ID': 8238, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4461': { 'ID': 8239, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4462': { 'ID': 8240, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4463': { 'ID': 8241, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4464': { 'ID': 8242, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4465': { 'ID': 8243, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4466': { 'ID': 8244, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4467': { 'ID': 8245, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4468': { 'ID': 8246, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4469': { 'ID': 8247, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4470': { 'ID': 8248, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4471': { 'ID': 8249, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4472': { 'ID': 8250, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4473': { 'ID': 8251, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4474': { 'ID': 8252, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4475': { 'ID': 8253, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4476': { 'ID': 8254, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4477': { 'ID': 8255, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4478': { 'ID': 8256, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4479': { 'ID': 8257, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4480': { 'ID': 8258, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4481': { 'ID': 8259, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4482': { 'ID': 8260, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4483': { 'ID': 8261, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4484': { 'ID': 8262, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4485': { 'ID': 8263, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4486': { 'ID': 8264, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4487': { 'ID': 8265, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4488': { 'ID': 8266, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4489': { 'ID': 8267, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4490': { 'ID': 8268, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4491': { 'ID': 8269, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4492': { 'ID': 8270, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4493': { 'ID': 8271, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4494': { 'ID': 8272, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4495': { 'ID': 8273, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4496': { 'ID': 8274, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4497': { 'ID': 8275, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4498': { 'ID': 8276, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4499': { 'ID': 8277, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4500': { 'ID': 8278, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4501': { 'ID': 8279, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4502': { 'ID': 8280, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4503': { 'ID': 8281, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4504': { 'ID': 8282, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4505': { 'ID': 8283, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4506': { 'ID': 8284, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4507': { 'ID': 8285, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4508': { 'ID': 8286, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4509': { 'ID': 8287, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4510': { 'ID': 8288, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4511': { 'ID': 8289, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4512': { 'ID': 8290, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4513': { 'ID': 8291, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4514': { 'ID': 8292, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4515': { 'ID': 8293, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4516': { 'ID': 8294, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4517': { 'ID': 8295, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4518': { 'ID': 8296, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4519': { 'ID': 8297, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4520': { 'ID': 8298, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4521': { 'ID': 8299, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4522': { 'ID': 8300, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4523': { 'ID': 8301, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4524': { 'ID': 8302, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4525': { 'ID': 8303, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4526': { 'ID': 8304, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4527': { 'ID': 8305, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4528': { 'ID': 8306, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4529': { 'ID': 8307, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4530': { 'ID': 8308, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4531': { 'ID': 8309, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4532': { 'ID': 8310, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4533': { 'ID': 8311, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4534': { 'ID': 8312, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4535': { 'ID': 8313, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4536': { 'ID': 8314, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4537': { 'ID': 8315, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4538': { 'ID': 8316, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4539': { 'ID': 8317, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4540': { 'ID': 8318, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4541': { 'ID': 8319, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4542': { 'ID': 8320, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4543': { 'ID': 8321, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4544': { 'ID': 8322, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4545': { 'ID': 8323, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4546': { 'ID': 8324, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4547': { 'ID': 8325, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4548': { 'ID': 8326, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4549': { 'ID': 8327, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4550': { 'ID': 8328, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4551': { 'ID': 8329, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4552': { 'ID': 8330, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4553': { 'ID': 8331, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4554': { 'ID': 8332, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4555': { 'ID': 8333, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4556': { 'ID': 8334, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4557': { 'ID': 8335, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4558': { 'ID': 8336, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4559': { 'ID': 8337, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4560': { 'ID': 8338, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4561': { 'ID': 8339, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4562': { 'ID': 8340, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4563': { 'ID': 8341, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4564': { 'ID': 8342, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4565': { 'ID': 8343, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4566': { 'ID': 8344, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4567': { 'ID': 8345, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4568': { 'ID': 8346, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4569': { 'ID': 8347, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4570': { 'ID': 8348, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4571': { 'ID': 8349, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4572': { 'ID': 8350, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4573': { 'ID': 8351, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4574': { 'ID': 8352, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4575': { 'ID': 8353, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4576': { 'ID': 8354, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4577': { 'ID': 8355, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4578': { 'ID': 8356, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4579': { 'ID': 8357, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4580': { 'ID': 8358, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4581': { 'ID': 8359, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4582': { 'ID': 8360, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4583': { 'ID': 8361, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4584': { 'ID': 8362, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4585': { 'ID': 8363, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4586': { 'ID': 8364, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4587': { 'ID': 8365, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4588': { 'ID': 8366, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4589': { 'ID': 8367, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4590': { 'ID': 8368, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4591': { 'ID': 8369, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4592': { 'ID': 8370, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4593': { 'ID': 8371, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4594': { 'ID': 8372, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4595': { 'ID': 8373, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4596': { 'ID': 8374, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4597': { 'ID': 8375, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4598': { 'ID': 8376, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4599': { 'ID': 8377, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4600': { 'ID': 8378, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4601': { 'ID': 8379, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4602': { 'ID': 8380, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4603': { 'ID': 8381, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4604': { 'ID': 8382, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4605': { 'ID': 8383, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4606': { 'ID': 8384, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4607': { 'ID': 8385, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4608': { 'ID': 8386, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4609': { 'ID': 8387, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4610': { 'ID': 8388, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4611': { 'ID': 8389, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4612': { 'ID': 8390, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4613': { 'ID': 8391, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4614': { 'ID': 8392, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4615': { 'ID': 8393, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4616': { 'ID': 8394, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4617': { 'ID': 8395, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4618': { 'ID': 8396, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4619': { 'ID': 8397, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4620': { 'ID': 8398, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4621': { 'ID': 8399, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4622': { 'ID': 8400, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4623': { 'ID': 8401, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4624': { 'ID': 8402, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4625': { 'ID': 8403, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4626': { 'ID': 8404, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4627': { 'ID': 8405, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4628': { 'ID': 8406, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4629': { 'ID': 8407, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4630': { 'ID': 8408, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4631': { 'ID': 8409, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4632': { 'ID': 8410, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4633': { 'ID': 8411, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4634': { 'ID': 8412, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4635': { 'ID': 8413, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4636': { 'ID': 8414, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4637': { 'ID': 8415, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4638': { 'ID': 8416, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4639': { 'ID': 8417, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4640': { 'ID': 8418, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4641': { 'ID': 8419, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4642': { 'ID': 8420, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4643': { 'ID': 8421, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4644': { 'ID': 8422, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4645': { 'ID': 8423, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4646': { 'ID': 8424, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4647': { 'ID': 8425, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4648': { 'ID': 8426, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4649': { 'ID': 8427, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4650': { 'ID': 8428, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4651': { 'ID': 8429, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4652': { 'ID': 8430, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4653': { 'ID': 8431, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4654': { 'ID': 8432, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4655': { 'ID': 8433, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4656': { 'ID': 8434, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4657': { 'ID': 8435, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4658': { 'ID': 8436, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4659': { 'ID': 8437, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4660': { 'ID': 8438, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4661': { 'ID': 8439, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4662': { 'ID': 8440, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4663': { 'ID': 8441, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4664': { 'ID': 8442, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4665': { 'ID': 8443, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4666': { 'ID': 8444, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4667': { 'ID': 8445, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4668': { 'ID': 8446, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4669': { 'ID': 8447, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4670': { 'ID': 8448, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4671': { 'ID': 8449, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4672': { 'ID': 8450, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4673': { 'ID': 8451, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4674': { 'ID': 8452, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4675': { 'ID': 8453, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4676': { 'ID': 8454, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4677': { 'ID': 8455, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4678': { 'ID': 8456, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4679': { 'ID': 8457, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4680': { 'ID': 8458, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4681': { 'ID': 8459, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4682': { 'ID': 8460, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4683': { 'ID': 8461, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4684': { 'ID': 8462, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4685': { 'ID': 8463, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4686': { 'ID': 8464, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4687': { 'ID': 8465, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4688': { 'ID': 8466, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4689': { 'ID': 8467, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4690': { 'ID': 8468, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4691': { 'ID': 8469, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4692': { 'ID': 8470, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4693': { 'ID': 8471, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4694': { 'ID': 8472, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4695': { 'ID': 8473, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4696': { 'ID': 8474, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4697': { 'ID': 8475, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4698': { 'ID': 8476, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4699': { 'ID': 8477, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4700': { 'ID': 8478, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4701': { 'ID': 8479, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4702': { 'ID': 8480, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4703': { 'ID': 8481, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4704': { 'ID': 8482, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4705': { 'ID': 8483, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4706': { 'ID': 8484, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4707': { 'ID': 8485, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4708': { 'ID': 8486, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4709': { 'ID': 8487, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4710': { 'ID': 8488, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4711': { 'ID': 8489, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4712': { 'ID': 8490, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4713': { 'ID': 8491, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4714': { 'ID': 8492, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4715': { 'ID': 8493, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4716': { 'ID': 8494, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4717': { 'ID': 8495, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4718': { 'ID': 8496, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4719': { 'ID': 8497, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4720': { 'ID': 8498, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr5SysWMZFLAG': { 'ID': 8499, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 32767000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 32767000, 'Name': 'WMZ5 Betriebszustand' }, + 'Nr5SysFSR': { 'ID': 8500, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 32767000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 32767000, 'Name': 'WMZ5 Fehlerstatus-Register' }, + 'Nr5VDatum': { 'ID': 8501, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ5 Lesedatum Volumen' }, + 'Nr5VZeit': { 'ID': 8502, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ5 Leseuhrzeit Volumen' }, + 'Nr5tBtre3': { 'ID': 8503, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ5 Betriebszeit x 10^3' }, + 'Nr5tBtre0': { 'ID': 8504, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ5 Betriebszeit x 10^0' }, + 'Nr5Qe4': { 'ID': 8505, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Durchfluß (10^4)' }, + 'Nr5Qe0': { 'ID': 8506, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Durchfluß (10^0)' }, + 'Nr5Qe-3': { 'ID': 8507, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Durchfluß (10^-3)' }, + 'Nr5QEinh': { 'ID': 8508, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Durchfluß, 0=m³/h, 1=l/h' }, + 'Nr5Ve4': { 'ID': 8509, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Volumen (10^4)' }, + 'Nr5Ve0': { 'ID': 8510, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Volumen (10^0)' }, + 'Nr5Ve-3': { 'ID': 8511, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Volumen (10^-3)' }, + 'Nr5VEinh': { 'ID': 8512, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Volumen, 0=m³, 1=l' }, + 'Nr5Pe4': { 'ID': 8513, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Leistung (10^4)' }, + 'Nr5Pe0': { 'ID': 8514, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Leistung (10^0)' }, + 'Nr5Pe-3': { 'ID': 8515, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Leistung (10^-3)' }, + 'Nr5PEinh': { 'ID': 8516, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Leistung, 0=kW, 1=MW' }, + 'Nr5We4': { 'ID': 8517, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Arbeit (10^4)' }, + 'Nr5We0': { 'ID': 8518, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Arbeit (10^0)' }, + 'Nr5We-3': { 'ID': 8519, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Arbeit (10^-3)' }, + 'Nr5WEinh': { 'ID': 8520, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ5 Einheit Arbeit, 0=MWh, 1=kWh, 2=GJ' }, + 'Nr5Hersteller-ID': { 'ID': 8521, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ5 Hersteller-Identifikation' }, + 'Nr5VLe0': { 'ID': 8522, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ5 Vorlauftemperatur (10^0)' }, + 'Nr5VLe-3': { 'ID': 8523, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Vorlauftemperatur (10^-3)' }, + 'Nr5VLEinh': { 'ID': 8524, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Vorlauftemperatur, 0=°C' }, + 'Nr5WMZ-Firmware': { 'ID': 8525, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Version', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65000000, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 650000, 'Name': 'WMZ5 Firmware-Version Zähler' }, + 'Nr5RLe0': { 'ID': 8526, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ5 Rücklauftemperatur (10^0)' }, + 'Nr5RLe-3': { 'ID': 8527, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Rücklauftemperatur (10^-3)' }, + 'Nr5RLEinh': { 'ID': 8528, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Rücklauftemperatur, 0=°C' }, + 'Unbekannt-4751': { 'ID': 8529, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr5SysAnsFail': { 'ID': 8530, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ5 Testregister für den internen Gebrauch' }, + 'Nr5SysZeroBack': { 'ID': 8531, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ5 Testregister für den internen Gebrauch' }, + 'Unbekannt-4754': { 'ID': 8532, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4755': { 'ID': 8533, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4756': { 'ID': 8534, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr5STagDatum': { 'ID': 8535, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ5 Lesedatum Stichtag' }, + 'Nr5STagZeit': { 'ID': 8536, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ5 Leseuhrzeit Stichtag' }, + 'Nr5WSTag1e4': { 'ID': 8537, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Arbeit Stichtag1 (10^4)' }, + 'Nr5WSTag1e0': { 'ID': 8538, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Arbeit Stichtag1 (10^0)' }, + 'Nr5WSTag1e-3': { 'ID': 8539, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Arbeit Stichtag1 (10^-3)' }, + 'Nr5WSTag1Einh': { 'ID': 8540, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ5 Einheit Arbeit Stichtag 1,0=MWh,1=kWh,2=GJ' }, + 'Nr5STag1Jahr': { 'ID': 8541, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ5 Jahr Stichtag 1' }, + 'Nr5STag1Datum': { 'ID': 8542, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ5 Datum Stichtag 1' }, + 'Nr5VSTag1e4': { 'ID': 8543, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Volumen Stichtag1 (10^4)' }, + 'Nr5VSTag1e0': { 'ID': 8544, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Volumen Stichtag1 (10^0)' }, + 'Nr5VSTag1e-3': { 'ID': 8545, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Volumen Stichtag1 (10^-3)' }, + 'Nr5VSTag1Einh': { 'ID': 8546, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Volumen Stichtag1, 0=m³, 1=l' }, + 'Nr5WSTag2e4': { 'ID': 8547, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Arbeit Stichtag2 (10^4)' }, + 'Nr5WSTag2e0': { 'ID': 8548, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Arbeit Stichtag2 (10^0)' }, + 'Nr5WSTag2e-3': { 'ID': 8549, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Arbeit Stichtag2 (10^-3)' }, + 'Nr5WSTag2Einh': { 'ID': 8550, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ5 Einheit Arbeit Stichtag 2,0=MWh,1=kWh,2=GJ' }, + 'Nr5STag2Jahr': { 'ID': 8551, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ5 Jahr Stichtag2' }, + 'Nr5STag2Datum': { 'ID': 8552, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ5 Datum Stichtag2' }, + 'Nr5VSTag2e4': { 'ID': 8553, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Volumen Stichtag2 (10^4)' }, + 'Nr5VSTag2e0': { 'ID': 8554, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Volumen Stichtag2 (10^0)' }, + 'Nr5VSTag2e-3': { 'ID': 8555, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Volumen Stichtag2 (10^-3)' }, + 'Nr5VSTag2Einh': { 'ID': 8556, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Volumen Stichtag2, 0=m³, 1=l' }, + 'Nr5WDev1e4': { 'ID': 8557, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Arbeit Device1 (10^4)' }, + 'Nr5WDev1e0': { 'ID': 8558, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Arbeit Device1 (10^0)' }, + 'Nr5WDev1e-3': { 'ID': 8559, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Arbeit Device1 (10^-3)' }, + 'Nr5WDev1Einh': { 'ID': 8560, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ5 Device1-Arbeit Einheit,0=MWh,1=kWh,2=GJ' }, + 'Nr5VDev1e4': { 'ID': 8561, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Volumen Device1 (10^4)' }, + 'Nr5VDev1e0': { 'ID': 8562, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Volumen Device1 (10^0)' }, + 'Nr5VDev1e-3': { 'ID': 8563, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Volumen Device1 (10^-3)' }, + 'Nr5VDev1Einh': { 'ID': 8564, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Volumen Device1, 0=m³, 1=l' }, + 'Nr5WDev2e4': { 'ID': 8565, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Arbeit Device2 (10^4)' }, + 'Nr5WDev2e0': { 'ID': 8566, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Arbeit Device2 (10^0)' }, + 'Nr5WDev2e-3': { 'ID': 8567, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Arbeit Device2 (10^-3)' }, + 'Nr5WDev2Einh': { 'ID': 8568, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ5 Einheit Arbeit Device2,0=MWh,1=kWh,2=GJ' }, + 'Nr5VDev2e4': { 'ID': 8569, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Volumen Device2 (10^4)' }, + 'Nr5VDev2e0': { 'ID': 8570, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Volumen Device2 (10^0)' }, + 'Nr5VDev2e-3': { 'ID': 8571, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Volumen Device2 (10^-3)' }, + 'Nr5VDev2Einh': { 'ID': 8572, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Volumen Device2, 0=m³, 1=l' }, + 'Nr5WTa1e4': { 'ID': 8573, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Arbeit Tarif1 (10^4)' }, + 'Nr5WTa1e0': { 'ID': 8574, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Arbeit Tarif1 (10^0)' }, + 'Nr5WTa1e-3': { 'ID': 8575, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Arbeit Tarif1 (10^-3)' }, + 'Nr5WTa1Einh': { 'ID': 8576, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ5 Einheit Arbeit Tarif1,0=MWh,1=kWh,2=GJ' }, + 'Nr5VTa1e4': { 'ID': 8577, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Volumen Tarif1 (10^4)' }, + 'Nr5VTa1e0': { 'ID': 8578, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Volumen Tarif1 (10^0)' }, + 'Nr5VTa1e-3': { 'ID': 8579, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Volumen Tarif1 (10^-3)' }, + 'Nr5VTa1Einh': { 'ID': 8580, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Volumen Tarif1, 0=m³, 1=l' }, + 'Nr5WTa2e4': { 'ID': 8581, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Arbeit Tarif2 (10^4)' }, + 'Nr5WTa2e0': { 'ID': 8582, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Arbeit Tarif2 (10^0)' }, + 'Nr5WTa2e-3': { 'ID': 8583, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Arbeit Tarif2 (10^-3)' }, + 'Nr5WTa2Einh': { 'ID': 8584, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ5 Einheit Arbeit Tarif2,0=MWh,1=kWh,2=GJ' }, + 'Nr5VTa2e4': { 'ID': 8585, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Volumen Tarif2 (10^4)' }, + 'Nr5VTa2e0': { 'ID': 8586, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Volumen Tarif2 (10^0)' }, + 'Nr5VTa2e-3': { 'ID': 8587, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Volumen Tarif2 (10^-3)' }, + 'Nr5VTa2Einh': { 'ID': 8588, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Volumen Tarif2, 0=m³, 1=l' }, + 'Nr5SysIDHB': { 'ID': 8589, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Identnummer obere 4 Stellen' }, + 'Nr5SysIDLB': { 'ID': 8590, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Identnummer untere 4 Stellen' }, + 'Nr5Dev1HCAe7': { 'ID': 8591, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ5 Device 1 Zählen ohne Einheit (10^7)' }, + 'Nr5Dev1HCAe4': { 'ID': 8592, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Device 1 Zählen ohne Einheit (10^4)' }, + 'Nr5Dev1HCAe0': { 'ID': 8593, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Device 1 Zählen ohne Einheit (10^0)' }, + 'Nr5Dev2HCAe7': { 'ID': 8594, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ5 Device 2 Zählen ohne Einheit (10^7)' }, + 'Nr5Dev2HCAe4': { 'ID': 8595, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Device 2 Zählen ohne Einheit (10^4)' }, + 'Nr5Dev2HCAe0': { 'ID': 8596, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Device 2 Zählen ohne Einheit (10^0)' }, + 'Nr5Dev3HCAe7': { 'ID': 8597, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ5 Device 3 Zählen ohne Einheit (10^7)' }, + 'Nr5Dev3HCAe4': { 'ID': 8598, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Device 3 Zählen ohne Einheit (10^4)' }, + 'Nr5Dev3HCAe0': { 'ID': 8599, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Device 3 Zählen ohne Einheit (10^0)' }, + 'Nr5QDev1Nr5e4': { 'ID': 8600, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Qmax Dev1 Speichernr5 10^4' }, + 'Nr5QDev1Nr5e0': { 'ID': 8601, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Qmax Dev1 Speichernr5 10^0' }, + 'Nr5QDev1Nr5e-3': { 'ID': 8602, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Qmax Dev1 Speichernr5 10^-3' }, + 'Nr5QDev1Nr5Einh': { 'ID': 8603, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit QmaxDev1Spnr5,0=m³/h,1=l/h' }, + 'Nr5Dev1Nr5Jahr': { 'ID': 8604, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ5 Jahr für Dev1maxStorNr5' }, + 'Nr5Dev1Nr5Datum': { 'ID': 8605, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ5 Datum für Dev1maxStorNr5' }, + 'Nr5Dev1Nr5Zeit': { 'ID': 8606, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ5 Uhrzeit für Dev1maxStorNr5' }, + 'Nr5PDev1Nr1e4': { 'ID': 8607, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Pmax für Dev1StorNr1 (10^4)' }, + 'Nr5PDev1Nr1e0': { 'ID': 8608, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Pmax für Dev1StorNr1 (10^0)' }, + 'Nr5PDev1Nr1e-3': { 'ID': 8609, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Pmax für Dev1StorNr1 (10^-3)' }, + 'Nr5PDev1Nr1Einh': { 'ID': 8610, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit PmaxDev1StorNr1, 0=kW, 1=MW' }, + 'Nr5Dev1Nr1Jahr': { 'ID': 8611, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ5 Jahr für Dev1maxStorNr1' }, + 'Nr5Dev1Nr1Datum': { 'ID': 8612, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ5 Datum für Dev1maxStorNr1' }, + 'Nr5Dev1Nr1Zeit': { 'ID': 8613, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ5 Uhrzeit für Dev1maxStorNr1' }, + 'Nr5Pmaxe4': { 'ID': 8614, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Leistung max (10^4)' }, + 'Nr5Pmaxe0': { 'ID': 8615, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Leistung max (10^0)' }, + 'Nr5Pmaxe-3': { 'ID': 8616, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Leistung max (10^-3)' }, + 'Nr5PmaxEinh': { 'ID': 8617, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Leistung max, 0=kW, 1=MW' }, + 'Nr5Qmaxe4': { 'ID': 8618, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Durchfluß max (10^4)' }, + 'Nr5Qmaxe0': { 'ID': 8619, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Durchfluß max (10^0)' }, + 'Nr5Qmaxe-3': { 'ID': 8620, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Durchfluß max (10^-3)' }, + 'Nr5QmaxEinh': { 'ID': 8621, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Durchfluß max,0=m³/h,1=l/h' }, + 'Unbekannt-4844': { 'ID': 8622, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr5VLmaxe0': { 'ID': 8623, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ5 Vorlauftemperatur max (10^0)' }, + 'Nr5VLmaxe-3': { 'ID': 8624, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Vorlauftemperatur max (10^-3)' }, + 'Nr5VLmaxEinh': { 'ID': 8625, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Vorlauftemperatur max, 0=°C' }, + 'Unbekannt-4848': { 'ID': 8626, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr5RLmaxe0': { 'ID': 8627, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ5 Rücklauftemperatur max (10^0)' }, + 'Nr5RLmaxe-3': { 'ID': 8628, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Rücklauftemperatur max (10^-3)' }, + 'Nr5RLmaxEinh': { 'ID': 8629, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Rücklauftemperatur max, 0=°C' }, + 'Nr5SysSlaveadr': { 'ID': 8630, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 255000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 255000, 'Name': 'WMZ5 echte WMZ-Adresse nach Zählerantwort' }, + 'Nr5DeltaTe0': { 'ID': 8631, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ5 Differenz (Vorlauf-Rücklauf) (10^0)' }, + 'Nr5DeltaTe-3': { 'ID': 8632, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Differenz (Vorlauf-Rücklauf) (10^-3)' }, + 'Nr5VTa3e4': { 'ID': 8633, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Volumen Tarif3 (10^4)' }, + 'Nr5VTa3e0': { 'ID': 8634, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Volumen Tarif3 (10^0)' }, + 'Nr5VTa3e-3': { 'ID': 8635, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Volumen Tarif3 (10^-3)' }, + 'Nr5VTa3Einh': { 'ID': 8636, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit Volumen Tarif3, 0=m³, 1=l' }, + 'Nr5PTa1Nr24e4': { 'ID': 8637, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 P Tarif1StorNr24 (10^4)' }, + 'Nr5PTa1Nr24e0': { 'ID': 8638, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 P Tarif1StorNr24 (10^0)' }, + 'Nr5PTa1Nr24e-3': { 'ID': 8639, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 P Tarif1StorNr24 (10^-3)' }, + 'Nr5PTa1Nr24Einh': { 'ID': 8640, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Einheit PTarif1StorNr24, 0=kW, 1=MW' }, + 'Nr5QTa1Nr24e4': { 'ID': 8641, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ5 Q Tarif1StorNr24 (10^4)' }, + 'Nr5QTa1Nr24e0': { 'ID': 8642, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ5 Q Tarif1StorNr24 (10^0)' }, + 'Nr5QTa1Nr24e-3': { 'ID': 8643, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ5 Q Tarif1StorNr24 (10^-3)' }, + 'Nr5QTa1Nr24Einh': { 'ID': 8644, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 EinheitQTarif1StorNr24,0=m³/h,1=l/h' }, + 'Nr5tErrore3': { 'ID': 8645, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Zeit während Fehler (10^3)' }, + 'Nr5tErrore0': { 'ID': 8646, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Zeit während Fehler (10^0)' }, + 'Nr5tInfoe3': { 'ID': 8647, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Info (10^3)' }, + 'Nr5tInfoe0': { 'ID': 8648, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ5 Info (10^0)' }, + 'Unbekannt-4871': { 'ID': 8649, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4872': { 'ID': 8650, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4873': { 'ID': 8651, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4874': { 'ID': 8652, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4875': { 'ID': 8653, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4876': { 'ID': 8654, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4877': { 'ID': 8655, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4878': { 'ID': 8656, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4879': { 'ID': 8657, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4880': { 'ID': 8658, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4881': { 'ID': 8659, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4882': { 'ID': 8660, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4883': { 'ID': 8661, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4884': { 'ID': 8662, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4885': { 'ID': 8663, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4886': { 'ID': 8664, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4887': { 'ID': 8665, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4888': { 'ID': 8666, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4889': { 'ID': 8667, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4890': { 'ID': 8668, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4891': { 'ID': 8669, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4892': { 'ID': 8670, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4893': { 'ID': 8671, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4894': { 'ID': 8672, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4895': { 'ID': 8673, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4896': { 'ID': 8674, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4897': { 'ID': 8675, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4898': { 'ID': 8676, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4899': { 'ID': 8677, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4900': { 'ID': 8678, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4901': { 'ID': 8679, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4902': { 'ID': 8680, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4903': { 'ID': 8681, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4904': { 'ID': 8682, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4905': { 'ID': 8683, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4906': { 'ID': 8684, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4907': { 'ID': 8685, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4908': { 'ID': 8686, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4909': { 'ID': 8687, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4910': { 'ID': 8688, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4911': { 'ID': 8689, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4912': { 'ID': 8690, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4913': { 'ID': 8691, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4914': { 'ID': 8692, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4915': { 'ID': 8693, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4916': { 'ID': 8694, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4917': { 'ID': 8695, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4918': { 'ID': 8696, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4919': { 'ID': 8697, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4920': { 'ID': 8698, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4921': { 'ID': 8699, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4922': { 'ID': 8700, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4923': { 'ID': 8701, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4924': { 'ID': 8702, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4925': { 'ID': 8703, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4926': { 'ID': 8704, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4927': { 'ID': 8705, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4928': { 'ID': 8706, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4929': { 'ID': 8707, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4930': { 'ID': 8708, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4931': { 'ID': 8709, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4932': { 'ID': 8710, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4933': { 'ID': 8711, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4934': { 'ID': 8712, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4935': { 'ID': 8713, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4936': { 'ID': 8714, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4937': { 'ID': 8715, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4938': { 'ID': 8716, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4939': { 'ID': 8717, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4940': { 'ID': 8718, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4941': { 'ID': 8719, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4942': { 'ID': 8720, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4943': { 'ID': 8721, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4944': { 'ID': 8722, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4945': { 'ID': 8723, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4946': { 'ID': 8724, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4947': { 'ID': 8725, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4948': { 'ID': 8726, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4949': { 'ID': 8727, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4950': { 'ID': 8728, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4951': { 'ID': 8729, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4952': { 'ID': 8730, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4953': { 'ID': 8731, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4954': { 'ID': 8732, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4955': { 'ID': 8733, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4956': { 'ID': 8734, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4957': { 'ID': 8735, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4958': { 'ID': 8736, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4959': { 'ID': 8737, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4960': { 'ID': 8738, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4961': { 'ID': 8739, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4962': { 'ID': 8740, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4963': { 'ID': 8741, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4964': { 'ID': 8742, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4965': { 'ID': 8743, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4966': { 'ID': 8744, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4967': { 'ID': 8745, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4968': { 'ID': 8746, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4969': { 'ID': 8747, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4970': { 'ID': 8748, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4971': { 'ID': 8749, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4972': { 'ID': 8750, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4973': { 'ID': 8751, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4974': { 'ID': 8752, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4975': { 'ID': 8753, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4976': { 'ID': 8754, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4977': { 'ID': 8755, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4978': { 'ID': 8756, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4979': { 'ID': 8757, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4980': { 'ID': 8758, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4981': { 'ID': 8759, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4982': { 'ID': 8760, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4983': { 'ID': 8761, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4984': { 'ID': 8762, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4985': { 'ID': 8763, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4986': { 'ID': 8764, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4987': { 'ID': 8765, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4988': { 'ID': 8766, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4989': { 'ID': 8767, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4990': { 'ID': 8768, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4991': { 'ID': 8769, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4992': { 'ID': 8770, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4993': { 'ID': 8771, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4994': { 'ID': 8772, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4995': { 'ID': 8773, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4996': { 'ID': 8774, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4997': { 'ID': 8775, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4998': { 'ID': 8776, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-4999': { 'ID': 8777, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5000': { 'ID': 8778, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5001': { 'ID': 8779, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5002': { 'ID': 8780, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5003': { 'ID': 8781, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5004': { 'ID': 8782, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5005': { 'ID': 8783, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5006': { 'ID': 8784, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5007': { 'ID': 8785, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5008': { 'ID': 8786, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5009': { 'ID': 8787, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5010': { 'ID': 8788, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5011': { 'ID': 8789, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5012': { 'ID': 8790, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5013': { 'ID': 8791, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5014': { 'ID': 8792, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5015': { 'ID': 8793, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5016': { 'ID': 8794, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5017': { 'ID': 8795, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5018': { 'ID': 8796, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5019': { 'ID': 8797, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5020': { 'ID': 8798, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5021': { 'ID': 8799, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5022': { 'ID': 8800, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5023': { 'ID': 8801, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5024': { 'ID': 8802, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5025': { 'ID': 8803, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5026': { 'ID': 8804, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5027': { 'ID': 8805, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5028': { 'ID': 8806, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5029': { 'ID': 8807, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5030': { 'ID': 8808, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5031': { 'ID': 8809, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5032': { 'ID': 8810, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5033': { 'ID': 8811, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5034': { 'ID': 8812, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5035': { 'ID': 8813, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5036': { 'ID': 8814, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5037': { 'ID': 8815, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5038': { 'ID': 8816, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5039': { 'ID': 8817, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5040': { 'ID': 8818, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5041': { 'ID': 8819, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5042': { 'ID': 8820, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5043': { 'ID': 8821, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5044': { 'ID': 8822, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5045': { 'ID': 8823, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5046': { 'ID': 8824, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5047': { 'ID': 8825, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5048': { 'ID': 8826, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5049': { 'ID': 8827, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5050': { 'ID': 8828, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5051': { 'ID': 8829, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5052': { 'ID': 8830, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5053': { 'ID': 8831, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5054': { 'ID': 8832, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5055': { 'ID': 8833, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5056': { 'ID': 8834, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5057': { 'ID': 8835, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5058': { 'ID': 8836, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5059': { 'ID': 8837, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5060': { 'ID': 8838, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5061': { 'ID': 8839, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5062': { 'ID': 8840, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5063': { 'ID': 8841, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5064': { 'ID': 8842, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5065': { 'ID': 8843, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5066': { 'ID': 8844, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5067': { 'ID': 8845, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5068': { 'ID': 8846, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5069': { 'ID': 8847, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5070': { 'ID': 8848, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5071': { 'ID': 8849, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5072': { 'ID': 8850, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5073': { 'ID': 8851, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5074': { 'ID': 8852, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5075': { 'ID': 8853, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5076': { 'ID': 8854, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5077': { 'ID': 8855, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5078': { 'ID': 8856, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5079': { 'ID': 8857, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5080': { 'ID': 8858, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5081': { 'ID': 8859, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5082': { 'ID': 8860, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5083': { 'ID': 8861, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5084': { 'ID': 8862, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5085': { 'ID': 8863, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5086': { 'ID': 8864, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5087': { 'ID': 8865, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5088': { 'ID': 8866, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5089': { 'ID': 8867, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5090': { 'ID': 8868, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5091': { 'ID': 8869, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5092': { 'ID': 8870, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5093': { 'ID': 8871, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5094': { 'ID': 8872, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5095': { 'ID': 8873, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5096': { 'ID': 8874, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5097': { 'ID': 8875, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5098': { 'ID': 8876, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5099': { 'ID': 8877, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5100': { 'ID': 8878, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5101': { 'ID': 8879, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5102': { 'ID': 8880, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5103': { 'ID': 8881, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5104': { 'ID': 8882, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5105': { 'ID': 8883, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5106': { 'ID': 8884, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5107': { 'ID': 8885, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5108': { 'ID': 8886, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5109': { 'ID': 8887, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5110': { 'ID': 8888, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5111': { 'ID': 8889, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5112': { 'ID': 8890, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5113': { 'ID': 8891, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5114': { 'ID': 8892, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5115': { 'ID': 8893, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5116': { 'ID': 8894, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5117': { 'ID': 8895, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5118': { 'ID': 8896, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5119': { 'ID': 8897, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5120': { 'ID': 8898, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5121': { 'ID': 8899, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5122': { 'ID': 8900, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5123': { 'ID': 8901, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5124': { 'ID': 8902, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5125': { 'ID': 8903, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5126': { 'ID': 8904, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5127': { 'ID': 8905, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5128': { 'ID': 8906, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5129': { 'ID': 8907, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5130': { 'ID': 8908, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5131': { 'ID': 8909, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5132': { 'ID': 8910, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5133': { 'ID': 8911, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5134': { 'ID': 8912, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5135': { 'ID': 8913, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5136': { 'ID': 8914, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5137': { 'ID': 8915, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5138': { 'ID': 8916, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5139': { 'ID': 8917, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5140': { 'ID': 8918, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5141': { 'ID': 8919, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5142': { 'ID': 8920, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5143': { 'ID': 8921, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5144': { 'ID': 8922, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5145': { 'ID': 8923, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5146': { 'ID': 8924, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5147': { 'ID': 8925, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5148': { 'ID': 8926, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5149': { 'ID': 8927, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5150': { 'ID': 8928, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5151': { 'ID': 8929, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5152': { 'ID': 8930, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5153': { 'ID': 8931, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5154': { 'ID': 8932, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5155': { 'ID': 8933, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5156': { 'ID': 8934, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5157': { 'ID': 8935, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5158': { 'ID': 8936, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5159': { 'ID': 8937, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5160': { 'ID': 8938, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5161': { 'ID': 8939, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5162': { 'ID': 8940, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5163': { 'ID': 8941, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5164': { 'ID': 8942, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5165': { 'ID': 8943, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5166': { 'ID': 8944, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5167': { 'ID': 8945, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5168': { 'ID': 8946, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5169': { 'ID': 8947, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5170': { 'ID': 8948, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5171': { 'ID': 8949, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5172': { 'ID': 8950, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5173': { 'ID': 8951, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5174': { 'ID': 8952, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5175': { 'ID': 8953, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5176': { 'ID': 8954, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5177': { 'ID': 8955, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5178': { 'ID': 8956, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5179': { 'ID': 8957, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5180': { 'ID': 8958, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5181': { 'ID': 8959, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5182': { 'ID': 8960, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5183': { 'ID': 8961, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5184': { 'ID': 8962, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5185': { 'ID': 8963, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5186': { 'ID': 8964, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5187': { 'ID': 8965, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5188': { 'ID': 8966, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5189': { 'ID': 8967, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5190': { 'ID': 8968, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5191': { 'ID': 8969, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5192': { 'ID': 8970, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5193': { 'ID': 8971, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5194': { 'ID': 8972, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5195': { 'ID': 8973, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5196': { 'ID': 8974, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5197': { 'ID': 8975, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5198': { 'ID': 8976, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5199': { 'ID': 8977, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5200': { 'ID': 8978, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5201': { 'ID': 8979, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5202': { 'ID': 8980, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5203': { 'ID': 8981, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5204': { 'ID': 8982, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5205': { 'ID': 8983, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5206': { 'ID': 8984, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5207': { 'ID': 8985, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5208': { 'ID': 8986, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5209': { 'ID': 8987, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5210': { 'ID': 8988, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5211': { 'ID': 8989, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5212': { 'ID': 8990, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5213': { 'ID': 8991, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5214': { 'ID': 8992, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5215': { 'ID': 8993, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5216': { 'ID': 8994, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5217': { 'ID': 8995, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5218': { 'ID': 8996, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5219': { 'ID': 8997, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5220': { 'ID': 8998, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr6SysWMZFLAG': { 'ID': 8999, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 32767000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 32767000, 'Name': 'WMZ6 Betriebszustand' }, + 'Nr6SysFSR': { 'ID': 9000, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 32767000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 32767000, 'Name': 'WMZ6 Fehlerstatus-Register' }, + 'Nr6VDatum': { 'ID': 9001, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ6 Lesedatum Volumen' }, + 'Nr6VZeit': { 'ID': 9002, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ6 Leseuhrzeit Volumen' }, + 'Nr6tBtre3': { 'ID': 9003, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ6 Betriebszeit x 10^3' }, + 'Nr6tBtre0': { 'ID': 9004, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ6 Betriebszeit x 10^0' }, + 'Nr6Qe4': { 'ID': 9005, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Durchfluß (10^4)' }, + 'Nr6Qe0': { 'ID': 9006, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Durchfluß (10^0)' }, + 'Nr6Qe-3': { 'ID': 9007, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Durchfluß (10^-3)' }, + 'Nr6QEinh': { 'ID': 9008, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Durchfluß, 0=m³/h, 1=l/h' }, + 'Nr6Ve4': { 'ID': 9009, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Volumen (10^4)' }, + 'Nr6Ve0': { 'ID': 9010, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Volumen (10^0)' }, + 'Nr6Ve-3': { 'ID': 9011, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Volumen (10^-3)' }, + 'Nr6VEinh': { 'ID': 9012, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Volumen, 0=m³, 1=l' }, + 'Nr6Pe4': { 'ID': 9013, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Leistung (10^4)' }, + 'Nr6Pe0': { 'ID': 9014, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Leistung (10^0)' }, + 'Nr6Pe-3': { 'ID': 9015, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Leistung (10^-3)' }, + 'Nr6PEinh': { 'ID': 9016, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Leistung, 0=kW, 1=MW' }, + 'Nr6We4': { 'ID': 9017, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Arbeit (10^4)' }, + 'Nr6We0': { 'ID': 9018, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Arbeit (10^0)' }, + 'Nr6We-3': { 'ID': 9019, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Arbeit (10^-3)' }, + 'Nr6WEinh': { 'ID': 9020, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ6 Einheit Arbeit, 0=MWh, 1=kWh, 2=GJ' }, + 'Nr6Hersteller-ID': { 'ID': 9021, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ6 Hersteller-Identifikation' }, + 'Nr6VLe0': { 'ID': 9022, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ6 Vorlauftemperatur (10^0)' }, + 'Nr6VLe-3': { 'ID': 9023, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Vorlauftemperatur (10^-3)' }, + 'Nr6VLEinh': { 'ID': 9024, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Vorlauftemperatur, 0=°C' }, + 'Nr6WMZ-Firmware': { 'ID': 9025, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Version', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65000000, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 650000, 'Name': 'WMZ6 Firmware-Version Zähler' }, + 'Nr6RLe0': { 'ID': 9026, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ6 Rücklauftemperatur (10^0)' }, + 'Nr6RLe-3': { 'ID': 9027, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Rücklauftemperatur (10^-3)' }, + 'Nr6RLEinh': { 'ID': 9028, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Rücklauftemperatur, 0=°C' }, + 'Unbekannt-5251': { 'ID': 9029, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr6SysAnsFail': { 'ID': 9030, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ6 Testregister für den internen Gebrauch' }, + 'Nr6SysZeroBack': { 'ID': 9031, 'Lesen': 0, 'Art': 'rw', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535000, 'Name': 'WMZ6 Testregister für den internen Gebrauch' }, + 'Unbekannt-5254': { 'ID': 9032, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5255': { 'ID': 9033, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5256': { 'ID': 9034, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr6STagDatum': { 'ID': 9035, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ6 Lesedatum Stichtag' }, + 'Nr6STagZeit': { 'ID': 9036, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ6 Leseuhrzeit Stichtag' }, + 'Nr6WSTag1e4': { 'ID': 9037, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Arbeit Stichtag1 (10^4)' }, + 'Nr6WSTag1e0': { 'ID': 9038, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Arbeit Stichtag1 (10^0)' }, + 'Nr6WSTag1e-3': { 'ID': 9039, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Arbeit Stichtag1 (10^-3)' }, + 'Nr6WSTag1Einh': { 'ID': 9040, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ6 Einheit Arbeit Stichtag 1,0=MWh,1=kWh,2=GJ' }, + 'Nr6STag1Jahr': { 'ID': 9041, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ6 Jahr Stichtag 1' }, + 'Nr6STag1Datum': { 'ID': 9042, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ6 Datum Stichtag 1' }, + 'Nr6VSTag1e4': { 'ID': 9043, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Volumen Stichtag1 (10^4)' }, + 'Nr6VSTag1e0': { 'ID': 9044, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Volumen Stichtag1 (10^0)' }, + 'Nr6VSTag1e-3': { 'ID': 9045, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Volumen Stichtag1 (10^-3)' }, + 'Nr6VSTag1Einh': { 'ID': 9046, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Volumen Stichtag1, 0=m³, 1=l' }, + 'Nr6WSTag2e4': { 'ID': 9047, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Arbeit Stichtag2 (10^4)' }, + 'Nr6WSTag2e0': { 'ID': 9048, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Arbeit Stichtag2 (10^0)' }, + 'Nr6WSTag2e-3': { 'ID': 9049, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Arbeit Stichtag2 (10^-3)' }, + 'Nr6WSTag2Einh': { 'ID': 9050, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ6 Einheit Arbeit Stichtag 2,0=MWh,1=kWh,2=GJ' }, + 'Nr6STag2Jahr': { 'ID': 9051, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ6 Jahr Stichtag2' }, + 'Nr6STag2Datum': { 'ID': 9052, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ6 Datum Stichtag2' }, + 'Nr6VSTag2e4': { 'ID': 9053, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Volumen Stichtag2 (10^4)' }, + 'Nr6VSTag2e0': { 'ID': 9054, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Volumen Stichtag2 (10^0)' }, + 'Nr6VSTag2e-3': { 'ID': 9055, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Volumen Stichtag2 (10^-3)' }, + 'Nr6VSTag2Einh': { 'ID': 9056, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Volumen Stichtag2, 0=m³, 1=l' }, + 'Nr6WDev1e4': { 'ID': 9057, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Arbeit Device1 (10^4)' }, + 'Nr6WDev1e0': { 'ID': 9058, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Arbeit Device1 (10^0)' }, + 'Nr6WDev1e-3': { 'ID': 9059, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Arbeit Device1 (10^-3)' }, + 'Nr6WDev1Einh': { 'ID': 9060, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ6 Device1-Arbeit Einheit,0=MWh,1=kWh,2=GJ' }, + 'Nr6VDev1e4': { 'ID': 9061, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Volumen Device1 (10^4)' }, + 'Nr6VDev1e0': { 'ID': 9062, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Volumen Device1 (10^0)' }, + 'Nr6VDev1e-3': { 'ID': 9063, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Volumen Device1 (10^-3)' }, + 'Nr6VDev1Einh': { 'ID': 9064, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Volumen Device1, 0=m³, 1=l' }, + 'Nr6WDev2e4': { 'ID': 9065, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Arbeit Device2 (10^4)' }, + 'Nr6WDev2e0': { 'ID': 9066, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Arbeit Device2 (10^0)' }, + 'Nr6WDev2e-3': { 'ID': 9067, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Arbeit Device2 (10^-3)' }, + 'Nr6WDev2Einh': { 'ID': 9068, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ6 Einheit Arbeit Device2,0=MWh,1=kWh,2=GJ' }, + 'Nr6VDev2e4': { 'ID': 9069, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Volumen Device2 (10^4)' }, + 'Nr6VDev2e0': { 'ID': 9070, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Volumen Device2 (10^0)' }, + 'Nr6VDev2e-3': { 'ID': 9071, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Volumen Device2 (10^-3)' }, + 'Nr6VDev2Einh': { 'ID': 9072, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Volumen Device2, 0=m³, 1=l' }, + 'Nr6WTa1e4': { 'ID': 9073, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Arbeit Tarif1 (10^4)' }, + 'Nr6WTa1e0': { 'ID': 9074, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Arbeit Tarif1 (10^0)' }, + 'Nr6WTa1e-3': { 'ID': 9075, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Arbeit Tarif1 (10^-3)' }, + 'Nr6WTa1Einh': { 'ID': 9076, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ6 Einheit Arbeit Tarif1,0=MWh,1=kWh,2=GJ' }, + 'Nr6VTa1e4': { 'ID': 9077, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Volumen Tarif1 (10^4)' }, + 'Nr6VTa1e0': { 'ID': 9078, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Volumen Tarif1 (10^0)' }, + 'Nr6VTa1e-3': { 'ID': 9079, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Volumen Tarif1 (10^-3)' }, + 'Nr6VTa1Einh': { 'ID': 9080, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Volumen Tarif1, 0=m³, 1=l' }, + 'Nr6WTa2e4': { 'ID': 9081, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Arbeit Tarif2 (10^4)' }, + 'Nr6WTa2e0': { 'ID': 9082, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Arbeit Tarif2 (10^0)' }, + 'Nr6WTa2e-3': { 'ID': 9083, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Arbeit Tarif2 (10^-3)' }, + 'Nr6WTa2Einh': { 'ID': 9084, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Arbeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 2000, 'Name': 'WMZ6 Einheit Arbeit Tarif2,0=MWh,1=kWh,2=GJ' }, + 'Nr6VTa2e4': { 'ID': 9085, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Volumen Tarif2 (10^4)' }, + 'Nr6VTa2e0': { 'ID': 9086, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Volumen Tarif2 (10^0)' }, + 'Nr6VTa2e-3': { 'ID': 9087, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Volumen Tarif2 (10^-3)' }, + 'Nr6VTa2Einh': { 'ID': 9088, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Volumen Tarif2, 0=m³, 1=l' }, + 'Nr6SysIDHB': { 'ID': 9089, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Identnummer obere 4 Stellen' }, + 'Nr6SysIDLB': { 'ID': 9090, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Identnummer untere 4 Stellen' }, + 'Nr6Dev1HCAe7': { 'ID': 9091, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ6 Device 1 Zählen ohne Einheit (10^7)' }, + 'Nr6Dev1HCAe4': { 'ID': 9092, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Device 1 Zählen ohne Einheit (10^4)' }, + 'Nr6Dev1HCAe0': { 'ID': 9093, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Device 1 Zählen ohne Einheit (10^0)' }, + 'Nr6Dev2HCAe7': { 'ID': 9094, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ6 Device 2 Zählen ohne Einheit (10^7)' }, + 'Nr6Dev2HCAe4': { 'ID': 9095, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Device 2 Zählen ohne Einheit (10^4)' }, + 'Nr6Dev2HCAe0': { 'ID': 9096, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Device 2 Zählen ohne Einheit (10^0)' }, + 'Nr6Dev3HCAe7': { 'ID': 9097, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000000, 'Name': 'WMZ6 Device 3 Zählen ohne Einheit (10^7)' }, + 'Nr6Dev3HCAe4': { 'ID': 9098, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Device 3 Zählen ohne Einheit (10^4)' }, + 'Nr6Dev3HCAe0': { 'ID': 9099, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 1, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Device 3 Zählen ohne Einheit (10^0)' }, + 'Nr6QDev1Nr5e4': { 'ID': 9100, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Qmax Dev1 Speichernr5 10^4' }, + 'Nr6QDev1Nr5e0': { 'ID': 9101, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Qmax Dev1 Speichernr5 10^0' }, + 'Nr6QDev1Nr5e-3': { 'ID': 9102, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Qmax Dev1 Speichernr5 10^-3' }, + 'Nr6QDev1Nr5Einh': { 'ID': 9103, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit QmaxDev1Spnr5,0=m³/h,1=l/h' }, + 'Nr6Dev1Nr5Jahr': { 'ID': 9104, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ6 Jahr für Dev1maxStorNr5' }, + 'Nr6Dev1Nr5Datum': { 'ID': 9105, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ6 Datum für Dev1maxStorNr5' }, + 'Nr6Dev1Nr5Zeit': { 'ID': 9106, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ6 Uhrzeit für Dev1maxStorNr5' }, + 'Nr6PDev1Nr1e4': { 'ID': 9107, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Pmax für Dev1StorNr1 (10^4)' }, + 'Nr6PDev1Nr1e0': { 'ID': 9108, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Pmax für Dev1StorNr1 (10^0)' }, + 'Nr6PDev1Nr1e-3': { 'ID': 9109, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Pmax für Dev1StorNr1 (10^-3)' }, + 'Nr6PDev1Nr1Einh': { 'ID': 9110, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit PmaxDev1StorNr1, 0=kW, 1=MW' }, + 'Nr6Dev1Nr1Jahr': { 'ID': 9111, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 1990000, 'Busmax': 2099000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 1990000, 'Wertmax': 2099000, 'Name': 'WMZ6 Jahr für Dev1maxStorNr1' }, + 'Nr6Dev1Nr1Datum': { 'ID': 9112, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Datum', 'Buswert': 0, 'Busmin': 101, 'Busmax': 3112, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 1.01, 'Wertmax': 31.12, 'Name': 'WMZ6 Datum für Dev1maxStorNr1' }, + 'Nr6Dev1Nr1Zeit': { 'ID': 9113, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Uhrzeit', 'Buswert': 0, 'Busmin': 0, 'Busmax': 2359, 'Faktor': 1, 'Digits': 2, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 23.59, 'Name': 'WMZ6 Uhrzeit für Dev1maxStorNr1' }, + 'Nr6Pmaxe4': { 'ID': 9114, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Leistung max (10^4)' }, + 'Nr6Pmaxe0': { 'ID': 9115, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Leistung max (10^0)' }, + 'Nr6Pmaxe-3': { 'ID': 9116, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Leistung max (10^-3)' }, + 'Nr6PmaxEinh': { 'ID': 9117, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Leistung max, 0=kW, 1=MW' }, + 'Nr6Qmaxe4': { 'ID': 9118, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Durchfluß max (10^4)' }, + 'Nr6Qmaxe0': { 'ID': 9119, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Durchfluß max (10^0)' }, + 'Nr6Qmaxe-3': { 'ID': 9120, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Durchfluß max (10^-3)' }, + 'Nr6QmaxEinh': { 'ID': 9121, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Durchfluß max,0=m³/h,1=l/h' }, + 'Unbekannt-5344': { 'ID': 9122, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr6VLmaxe0': { 'ID': 9123, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ6 Vorlauftemperatur max (10^0)' }, + 'Nr6VLmaxe-3': { 'ID': 9124, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Vorlauftemperatur max (10^-3)' }, + 'Nr6VLmaxEinh': { 'ID': 9125, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Vorlauftemperatur max, 0=°C' }, + 'Unbekannt-5348': { 'ID': 9126, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Nr6RLmaxe0': { 'ID': 9127, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ6 Rücklauftemperatur max (10^0)' }, + 'Nr6RLmaxe-3': { 'ID': 9128, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Rücklauftemperatur max (10^-3)' }, + 'Nr6RLmaxEinh': { 'ID': 9129, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Temperatur', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Rücklauftemperatur max, 0=°C' }, + 'Nr6SysSlaveadr': { 'ID': 9130, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 255000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 255000, 'Name': 'WMZ6 echte WMZ-Adresse nach Zählerantwort' }, + 'Nr6DeltaTe0': { 'ID': 9131, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 200000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 200000, 'Name': 'WMZ6 Differenz (Vorlauf-Rücklauf) (10^0)' }, + 'Nr6DeltaTe-3': { 'ID': 9132, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Differenz (Vorlauf-Rücklauf) (10^-3)' }, + 'Nr6VTa3e4': { 'ID': 9133, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Volumen Tarif3 (10^4)' }, + 'Nr6VTa3e0': { 'ID': 9134, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Volumen Tarif3 (10^0)' }, + 'Nr6VTa3e-3': { 'ID': 9135, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Volumen Tarif3 (10^-3)' }, + 'Nr6VTa3Einh': { 'ID': 9136, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Volumen', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit Volumen Tarif3, 0=m³, 1=l' }, + 'Nr6PTa1Nr24e4': { 'ID': 9137, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 P Tarif1StorNr24 (10^4)' }, + 'Nr6PTa1Nr24e0': { 'ID': 9138, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 P Tarif1StorNr24 (10^0)' }, + 'Nr6PTa1Nr24e-3': { 'ID': 9139, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 P Tarif1StorNr24 (10^-3)' }, + 'Nr6PTa1Nr24Einh': { 'ID': 9140, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Leistung', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Einheit PTarif1StorNr24, 0=kW, 1=MW' }, + 'Nr6QTa1Nr24e4': { 'ID': 9141, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 10000, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 99990000000, 'Name': 'WMZ6 Q Tarif1StorNr24 (10^4)' }, + 'Nr6QTa1Nr24e0': { 'ID': 9142, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 9999000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 9999000, 'Name': 'WMZ6 Q Tarif1StorNr24 (10^0)' }, + 'Nr6QTa1Nr24e-3': { 'ID': 9143, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 999000, 'Faktor': 0.001, 'Digits': 3, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 0.999, 'Name': 'WMZ6 Q Tarif1StorNr24 (10^-3)' }, + 'Nr6QTa1Nr24Einh': { 'ID': 9144, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Liste_Durchfluss', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 EinheitQTarif1StorNr24,0=m³/h,1=l/h' }, + 'Nr6tErrore3': { 'ID': 9145, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Zeit während Fehler (10^3)' }, + 'Nr6tErrore0': { 'ID': 9146, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Zeit während Fehler (10^0)' }, + 'Nr6tInfoe3': { 'ID': 9147, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Info (10^3)' }, + 'Nr6tInfoe0': { 'ID': 9148, 'Lesen': 0, 'Art': 'ro', 'Typ': 'Zahl', 'Buswert': 0, 'Busmin': 0, 'Busmax': 1000, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 1000, 'Name': 'WMZ6 Info (10^0)' }, + 'Unbekannt-5371': { 'ID': 9149, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5372': { 'ID': 9150, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5373': { 'ID': 9151, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5374': { 'ID': 9152, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5375': { 'ID': 9153, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5376': { 'ID': 9154, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5377': { 'ID': 9155, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5378': { 'ID': 9156, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5379': { 'ID': 9157, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5380': { 'ID': 9158, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5381': { 'ID': 9159, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5382': { 'ID': 9160, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5383': { 'ID': 9161, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5384': { 'ID': 9162, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5385': { 'ID': 9163, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5386': { 'ID': 9164, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5387': { 'ID': 9165, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5388': { 'ID': 9166, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5389': { 'ID': 9167, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5390': { 'ID': 9168, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5391': { 'ID': 9169, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5392': { 'ID': 9170, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5393': { 'ID': 9171, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5394': { 'ID': 9172, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5395': { 'ID': 9173, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5396': { 'ID': 9174, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5397': { 'ID': 9175, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5398': { 'ID': 9176, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5399': { 'ID': 9177, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5400': { 'ID': 9178, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5401': { 'ID': 9179, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5402': { 'ID': 9180, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5403': { 'ID': 9181, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5404': { 'ID': 9182, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5405': { 'ID': 9183, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5406': { 'ID': 9184, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5407': { 'ID': 9185, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5408': { 'ID': 9186, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5409': { 'ID': 9187, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5410': { 'ID': 9188, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5411': { 'ID': 9189, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5412': { 'ID': 9190, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5413': { 'ID': 9191, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5414': { 'ID': 9192, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5415': { 'ID': 9193, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5416': { 'ID': 9194, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5417': { 'ID': 9195, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5418': { 'ID': 9196, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5419': { 'ID': 9197, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5420': { 'ID': 9198, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5421': { 'ID': 9199, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5422': { 'ID': 9200, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5423': { 'ID': 9201, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5424': { 'ID': 9202, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5425': { 'ID': 9203, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5426': { 'ID': 9204, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5427': { 'ID': 9205, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5428': { 'ID': 9206, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5429': { 'ID': 9207, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5430': { 'ID': 9208, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5431': { 'ID': 9209, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5432': { 'ID': 9210, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5433': { 'ID': 9211, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5434': { 'ID': 9212, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5435': { 'ID': 9213, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5436': { 'ID': 9214, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5437': { 'ID': 9215, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5438': { 'ID': 9216, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5439': { 'ID': 9217, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5440': { 'ID': 9218, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5441': { 'ID': 9219, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5442': { 'ID': 9220, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5443': { 'ID': 9221, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5444': { 'ID': 9222, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5445': { 'ID': 9223, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5446': { 'ID': 9224, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5447': { 'ID': 9225, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5448': { 'ID': 9226, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5449': { 'ID': 9227, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5450': { 'ID': 9228, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5451': { 'ID': 9229, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5452': { 'ID': 9230, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5453': { 'ID': 9231, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5454': { 'ID': 9232, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5455': { 'ID': 9233, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5456': { 'ID': 9234, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5457': { 'ID': 9235, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5458': { 'ID': 9236, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5459': { 'ID': 9237, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5460': { 'ID': 9238, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5461': { 'ID': 9239, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5462': { 'ID': 9240, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5463': { 'ID': 9241, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5464': { 'ID': 9242, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5465': { 'ID': 9243, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5466': { 'ID': 9244, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5467': { 'ID': 9245, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5468': { 'ID': 9246, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5469': { 'ID': 9247, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5470': { 'ID': 9248, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5471': { 'ID': 9249, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5472': { 'ID': 9250, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5473': { 'ID': 9251, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5474': { 'ID': 9252, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5475': { 'ID': 9253, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5476': { 'ID': 9254, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5477': { 'ID': 9255, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5478': { 'ID': 9256, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5479': { 'ID': 9257, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5480': { 'ID': 9258, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5481': { 'ID': 9259, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5482': { 'ID': 9260, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5483': { 'ID': 9261, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5484': { 'ID': 9262, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5485': { 'ID': 9263, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5486': { 'ID': 9264, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5487': { 'ID': 9265, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5488': { 'ID': 9266, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5489': { 'ID': 9267, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5490': { 'ID': 9268, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5491': { 'ID': 9269, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5492': { 'ID': 9270, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5493': { 'ID': 9271, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5494': { 'ID': 9272, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5495': { 'ID': 9273, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5496': { 'ID': 9274, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5497': { 'ID': 9275, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5498': { 'ID': 9276, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5499': { 'ID': 9277, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5500': { 'ID': 9278, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5501': { 'ID': 9279, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5502': { 'ID': 9280, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5503': { 'ID': 9281, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5504': { 'ID': 9282, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5505': { 'ID': 9283, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5506': { 'ID': 9284, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5507': { 'ID': 9285, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5508': { 'ID': 9286, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5509': { 'ID': 9287, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5510': { 'ID': 9288, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5511': { 'ID': 9289, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5512': { 'ID': 9290, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5513': { 'ID': 9291, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5514': { 'ID': 9292, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5515': { 'ID': 9293, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5516': { 'ID': 9294, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5517': { 'ID': 9295, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5518': { 'ID': 9296, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5519': { 'ID': 9297, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5520': { 'ID': 9298, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5521': { 'ID': 9299, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5522': { 'ID': 9300, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5523': { 'ID': 9301, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5524': { 'ID': 9302, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5525': { 'ID': 9303, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5526': { 'ID': 9304, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5527': { 'ID': 9305, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5528': { 'ID': 9306, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5529': { 'ID': 9307, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5530': { 'ID': 9308, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5531': { 'ID': 9309, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5532': { 'ID': 9310, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5533': { 'ID': 9311, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5534': { 'ID': 9312, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5535': { 'ID': 9313, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5536': { 'ID': 9314, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5537': { 'ID': 9315, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5538': { 'ID': 9316, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5539': { 'ID': 9317, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5540': { 'ID': 9318, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5541': { 'ID': 9319, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5542': { 'ID': 9320, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5543': { 'ID': 9321, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5544': { 'ID': 9322, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5545': { 'ID': 9323, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5546': { 'ID': 9324, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5547': { 'ID': 9325, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5548': { 'ID': 9326, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5549': { 'ID': 9327, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5550': { 'ID': 9328, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5551': { 'ID': 9329, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5552': { 'ID': 9330, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5553': { 'ID': 9331, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5554': { 'ID': 9332, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5555': { 'ID': 9333, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5556': { 'ID': 9334, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5557': { 'ID': 9335, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5558': { 'ID': 9336, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5559': { 'ID': 9337, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5560': { 'ID': 9338, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5561': { 'ID': 9339, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5562': { 'ID': 9340, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5563': { 'ID': 9341, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5564': { 'ID': 9342, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5565': { 'ID': 9343, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5566': { 'ID': 9344, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5567': { 'ID': 9345, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5568': { 'ID': 9346, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5569': { 'ID': 9347, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5570': { 'ID': 9348, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5571': { 'ID': 9349, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5572': { 'ID': 9350, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5573': { 'ID': 9351, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5574': { 'ID': 9352, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5575': { 'ID': 9353, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5576': { 'ID': 9354, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5577': { 'ID': 9355, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5578': { 'ID': 9356, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5579': { 'ID': 9357, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5580': { 'ID': 9358, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5581': { 'ID': 9359, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5582': { 'ID': 9360, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5583': { 'ID': 9361, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5584': { 'ID': 9362, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5585': { 'ID': 9363, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5586': { 'ID': 9364, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5587': { 'ID': 9365, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5588': { 'ID': 9366, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5589': { 'ID': 9367, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5590': { 'ID': 9368, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5591': { 'ID': 9369, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5592': { 'ID': 9370, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5593': { 'ID': 9371, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5594': { 'ID': 9372, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5595': { 'ID': 9373, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5596': { 'ID': 9374, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5597': { 'ID': 9375, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5598': { 'ID': 9376, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5599': { 'ID': 9377, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5600': { 'ID': 9378, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5601': { 'ID': 9379, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5602': { 'ID': 9380, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5603': { 'ID': 9381, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5604': { 'ID': 9382, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5605': { 'ID': 9383, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5606': { 'ID': 9384, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5607': { 'ID': 9385, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5608': { 'ID': 9386, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5609': { 'ID': 9387, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5610': { 'ID': 9388, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5611': { 'ID': 9389, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5612': { 'ID': 9390, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5613': { 'ID': 9391, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5614': { 'ID': 9392, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5615': { 'ID': 9393, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5616': { 'ID': 9394, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5617': { 'ID': 9395, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5618': { 'ID': 9396, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5619': { 'ID': 9397, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5620': { 'ID': 9398, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5621': { 'ID': 9399, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5622': { 'ID': 9400, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5623': { 'ID': 9401, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5624': { 'ID': 9402, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5625': { 'ID': 9403, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5626': { 'ID': 9404, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5627': { 'ID': 9405, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5628': { 'ID': 9406, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5629': { 'ID': 9407, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5630': { 'ID': 9408, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5631': { 'ID': 9409, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5632': { 'ID': 9410, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5633': { 'ID': 9411, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5634': { 'ID': 9412, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5635': { 'ID': 9413, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5636': { 'ID': 9414, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5637': { 'ID': 9415, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5638': { 'ID': 9416, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5639': { 'ID': 9417, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5640': { 'ID': 9418, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5641': { 'ID': 9419, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5642': { 'ID': 9420, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5643': { 'ID': 9421, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5644': { 'ID': 9422, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5645': { 'ID': 9423, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5646': { 'ID': 9424, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5647': { 'ID': 9425, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5648': { 'ID': 9426, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5649': { 'ID': 9427, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5650': { 'ID': 9428, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5651': { 'ID': 9429, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5652': { 'ID': 9430, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5653': { 'ID': 9431, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5654': { 'ID': 9432, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5655': { 'ID': 9433, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5656': { 'ID': 9434, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5657': { 'ID': 9435, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5658': { 'ID': 9436, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5659': { 'ID': 9437, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5660': { 'ID': 9438, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5661': { 'ID': 9439, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5662': { 'ID': 9440, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5663': { 'ID': 9441, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5664': { 'ID': 9442, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5665': { 'ID': 9443, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5666': { 'ID': 9444, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5667': { 'ID': 9445, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5668': { 'ID': 9446, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5669': { 'ID': 9447, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5670': { 'ID': 9448, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5671': { 'ID': 9449, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5672': { 'ID': 9450, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5673': { 'ID': 9451, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5674': { 'ID': 9452, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5675': { 'ID': 9453, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5676': { 'ID': 9454, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5677': { 'ID': 9455, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5678': { 'ID': 9456, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5679': { 'ID': 9457, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5680': { 'ID': 9458, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5681': { 'ID': 9459, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5682': { 'ID': 9460, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5683': { 'ID': 9461, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5684': { 'ID': 9462, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5685': { 'ID': 9463, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5686': { 'ID': 9464, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5687': { 'ID': 9465, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5688': { 'ID': 9466, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5689': { 'ID': 9467, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5690': { 'ID': 9468, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5691': { 'ID': 9469, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5692': { 'ID': 9470, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5693': { 'ID': 9471, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5694': { 'ID': 9472, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5695': { 'ID': 9473, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5696': { 'ID': 9474, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5697': { 'ID': 9475, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5698': { 'ID': 9476, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5699': { 'ID': 9477, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5700': { 'ID': 9478, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5701': { 'ID': 9479, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5702': { 'ID': 9480, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5703': { 'ID': 9481, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5704': { 'ID': 9482, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5705': { 'ID': 9483, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5706': { 'ID': 9484, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5707': { 'ID': 9485, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5708': { 'ID': 9486, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5709': { 'ID': 9487, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5710': { 'ID': 9488, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5711': { 'ID': 9489, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5712': { 'ID': 9490, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5713': { 'ID': 9491, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5714': { 'ID': 9492, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5715': { 'ID': 9493, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5716': { 'ID': 9494, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5717': { 'ID': 9495, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5718': { 'ID': 9496, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5719': { 'ID': 9497, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5720': { 'ID': 9498, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5721': { 'ID': 9499, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5722': { 'ID': 9500, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5723': { 'ID': 9501, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5724': { 'ID': 9502, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5725': { 'ID': 9503, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5726': { 'ID': 9504, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5727': { 'ID': 9505, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5728': { 'ID': 9506, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5729': { 'ID': 9507, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5730': { 'ID': 9508, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5731': { 'ID': 9509, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5732': { 'ID': 9510, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5733': { 'ID': 9511, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5734': { 'ID': 9512, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5735': { 'ID': 9513, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5736': { 'ID': 9514, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5737': { 'ID': 9515, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5738': { 'ID': 9516, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5739': { 'ID': 9517, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5740': { 'ID': 9518, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5741': { 'ID': 9519, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5742': { 'ID': 9520, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5743': { 'ID': 9521, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5744': { 'ID': 9522, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5745': { 'ID': 9523, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5746': { 'ID': 9524, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5747': { 'ID': 9525, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5748': { 'ID': 9526, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5749': { 'ID': 9527, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5750': { 'ID': 9528, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5751': { 'ID': 9529, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5752': { 'ID': 9530, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5753': { 'ID': 9531, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5754': { 'ID': 9532, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5755': { 'ID': 9533, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5756': { 'ID': 9534, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5757': { 'ID': 9535, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5758': { 'ID': 9536, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5759': { 'ID': 9537, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5760': { 'ID': 9538, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5761': { 'ID': 9539, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5762': { 'ID': 9540, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5763': { 'ID': 9541, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5764': { 'ID': 9542, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5765': { 'ID': 9543, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5766': { 'ID': 9544, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5767': { 'ID': 9545, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5768': { 'ID': 9546, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5769': { 'ID': 9547, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5770': { 'ID': 9548, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5771': { 'ID': 9549, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5772': { 'ID': 9550, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5773': { 'ID': 9551, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5774': { 'ID': 9552, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5775': { 'ID': 9553, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5776': { 'ID': 9554, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5777': { 'ID': 9555, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5778': { 'ID': 9556, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5779': { 'ID': 9557, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5780': { 'ID': 9558, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5781': { 'ID': 9559, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5782': { 'ID': 9560, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5783': { 'ID': 9561, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5784': { 'ID': 9562, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5785': { 'ID': 9563, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5786': { 'ID': 9564, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5787': { 'ID': 9565, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5788': { 'ID': 9566, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5789': { 'ID': 9567, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5790': { 'ID': 9568, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5791': { 'ID': 9569, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5792': { 'ID': 9570, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5793': { 'ID': 9571, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5794': { 'ID': 9572, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5795': { 'ID': 9573, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5796': { 'ID': 9574, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5797': { 'ID': 9575, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5798': { 'ID': 9576, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5799': { 'ID': 9577, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5800': { 'ID': 9578, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5801': { 'ID': 9579, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5802': { 'ID': 9580, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5803': { 'ID': 9581, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5804': { 'ID': 9582, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5805': { 'ID': 9583, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5806': { 'ID': 9584, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5807': { 'ID': 9585, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5808': { 'ID': 9586, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5809': { 'ID': 9587, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5810': { 'ID': 9588, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5811': { 'ID': 9589, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5812': { 'ID': 9590, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5813': { 'ID': 9591, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5814': { 'ID': 9592, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5815': { 'ID': 9593, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5816': { 'ID': 9594, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5817': { 'ID': 9595, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5818': { 'ID': 9596, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5819': { 'ID': 9597, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5820': { 'ID': 9598, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5821': { 'ID': 9599, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5822': { 'ID': 9600, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5823': { 'ID': 9601, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5824': { 'ID': 9602, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5825': { 'ID': 9603, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5826': { 'ID': 9604, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5827': { 'ID': 9605, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5828': { 'ID': 9606, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5829': { 'ID': 9607, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5830': { 'ID': 9608, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5831': { 'ID': 9609, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5832': { 'ID': 9610, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5833': { 'ID': 9611, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5834': { 'ID': 9612, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5835': { 'ID': 9613, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5836': { 'ID': 9614, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5837': { 'ID': 9615, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5838': { 'ID': 9616, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5839': { 'ID': 9617, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5840': { 'ID': 9618, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5841': { 'ID': 9619, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5842': { 'ID': 9620, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5843': { 'ID': 9621, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5844': { 'ID': 9622, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5845': { 'ID': 9623, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5846': { 'ID': 9624, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5847': { 'ID': 9625, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5848': { 'ID': 9626, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5849': { 'ID': 9627, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5850': { 'ID': 9628, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5851': { 'ID': 9629, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5852': { 'ID': 9630, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5853': { 'ID': 9631, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5854': { 'ID': 9632, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5855': { 'ID': 9633, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5856': { 'ID': 9634, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5857': { 'ID': 9635, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5858': { 'ID': 9636, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5859': { 'ID': 9637, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5860': { 'ID': 9638, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5861': { 'ID': 9639, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5862': { 'ID': 9640, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5863': { 'ID': 9641, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5864': { 'ID': 9642, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5865': { 'ID': 9643, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5866': { 'ID': 9644, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5867': { 'ID': 9645, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5868': { 'ID': 9646, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5869': { 'ID': 9647, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5870': { 'ID': 9648, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5871': { 'ID': 9649, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5872': { 'ID': 9650, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5873': { 'ID': 9651, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5874': { 'ID': 9652, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5875': { 'ID': 9653, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5876': { 'ID': 9654, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5877': { 'ID': 9655, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5878': { 'ID': 9656, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5879': { 'ID': 9657, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5880': { 'ID': 9658, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5881': { 'ID': 9659, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5882': { 'ID': 9660, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5883': { 'ID': 9661, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5884': { 'ID': 9662, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5885': { 'ID': 9663, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5886': { 'ID': 9664, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5887': { 'ID': 9665, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5888': { 'ID': 9666, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5889': { 'ID': 9667, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5890': { 'ID': 9668, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5891': { 'ID': 9669, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5892': { 'ID': 9670, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5893': { 'ID': 9671, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5894': { 'ID': 9672, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5895': { 'ID': 9673, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5896': { 'ID': 9674, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5897': { 'ID': 9675, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5898': { 'ID': 9676, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5899': { 'ID': 9677, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5900': { 'ID': 9678, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5901': { 'ID': 9679, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5902': { 'ID': 9680, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5903': { 'ID': 9681, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5904': { 'ID': 9682, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5905': { 'ID': 9683, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5906': { 'ID': 9684, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5907': { 'ID': 9685, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5908': { 'ID': 9686, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5909': { 'ID': 9687, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5910': { 'ID': 9688, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5911': { 'ID': 9689, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5912': { 'ID': 9690, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5913': { 'ID': 9691, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5914': { 'ID': 9692, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5915': { 'ID': 9693, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5916': { 'ID': 9694, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5917': { 'ID': 9695, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5918': { 'ID': 9696, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5919': { 'ID': 9697, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5920': { 'ID': 9698, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5921': { 'ID': 9699, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5922': { 'ID': 9700, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5923': { 'ID': 9701, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5924': { 'ID': 9702, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5925': { 'ID': 9703, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5926': { 'ID': 9704, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5927': { 'ID': 9705, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5928': { 'ID': 9706, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5929': { 'ID': 9707, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5930': { 'ID': 9708, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5931': { 'ID': 9709, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5932': { 'ID': 9710, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5933': { 'ID': 9711, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5934': { 'ID': 9712, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5935': { 'ID': 9713, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5936': { 'ID': 9714, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5937': { 'ID': 9715, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5938': { 'ID': 9716, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5939': { 'ID': 9717, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5940': { 'ID': 9718, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5941': { 'ID': 9719, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5942': { 'ID': 9720, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5943': { 'ID': 9721, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5944': { 'ID': 9722, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5945': { 'ID': 9723, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5946': { 'ID': 9724, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5947': { 'ID': 9725, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5948': { 'ID': 9726, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5949': { 'ID': 9727, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5950': { 'ID': 9728, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5951': { 'ID': 9729, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5952': { 'ID': 9730, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5953': { 'ID': 9731, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5954': { 'ID': 9732, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5955': { 'ID': 9733, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5956': { 'ID': 9734, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5957': { 'ID': 9735, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5958': { 'ID': 9736, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5959': { 'ID': 9737, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5960': { 'ID': 9738, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5961': { 'ID': 9739, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5962': { 'ID': 9740, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5963': { 'ID': 9741, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5964': { 'ID': 9742, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5965': { 'ID': 9743, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5966': { 'ID': 9744, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5967': { 'ID': 9745, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5968': { 'ID': 9746, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5969': { 'ID': 9747, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5970': { 'ID': 9748, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5971': { 'ID': 9749, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5972': { 'ID': 9750, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5973': { 'ID': 9751, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5974': { 'ID': 9752, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5975': { 'ID': 9753, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5976': { 'ID': 9754, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5977': { 'ID': 9755, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5978': { 'ID': 9756, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5979': { 'ID': 9757, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5980': { 'ID': 9758, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5981': { 'ID': 9759, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5982': { 'ID': 9760, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5983': { 'ID': 9761, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5984': { 'ID': 9762, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5985': { 'ID': 9763, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5986': { 'ID': 9764, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5987': { 'ID': 9765, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5988': { 'ID': 9766, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5989': { 'ID': 9767, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5990': { 'ID': 9768, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5991': { 'ID': 9769, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5992': { 'ID': 9770, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5993': { 'ID': 9771, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5994': { 'ID': 9772, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5995': { 'ID': 9773, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5996': { 'ID': 9774, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5997': { 'ID': 9775, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5998': { 'ID': 9776, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-5999': { 'ID': 9777, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6000': { 'ID': 9778, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6001': { 'ID': 9779, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6002': { 'ID': 9780, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6003': { 'ID': 9781, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6004': { 'ID': 9782, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6005': { 'ID': 9783, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6006': { 'ID': 9784, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6007': { 'ID': 9785, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6008': { 'ID': 9786, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6009': { 'ID': 9787, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6010': { 'ID': 9788, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6011': { 'ID': 9789, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6012': { 'ID': 9790, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6013': { 'ID': 9791, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6014': { 'ID': 9792, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6015': { 'ID': 9793, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6016': { 'ID': 9794, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6017': { 'ID': 9795, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6018': { 'ID': 9796, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6019': { 'ID': 9797, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6020': { 'ID': 9798, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6021': { 'ID': 9799, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6022': { 'ID': 9800, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6023': { 'ID': 9801, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6024': { 'ID': 9802, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6025': { 'ID': 9803, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6026': { 'ID': 9804, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6027': { 'ID': 9805, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6028': { 'ID': 9806, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6029': { 'ID': 9807, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6030': { 'ID': 9808, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6031': { 'ID': 9809, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6032': { 'ID': 9810, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6033': { 'ID': 9811, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6034': { 'ID': 9812, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6035': { 'ID': 9813, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6036': { 'ID': 9814, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6037': { 'ID': 9815, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6038': { 'ID': 9816, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6039': { 'ID': 9817, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6040': { 'ID': 9818, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6041': { 'ID': 9819, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6042': { 'ID': 9820, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6043': { 'ID': 9821, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6044': { 'ID': 9822, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6045': { 'ID': 9823, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6046': { 'ID': 9824, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6047': { 'ID': 9825, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6048': { 'ID': 9826, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6049': { 'ID': 9827, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6050': { 'ID': 9828, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6051': { 'ID': 9829, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6052': { 'ID': 9830, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6053': { 'ID': 9831, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6054': { 'ID': 9832, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6055': { 'ID': 9833, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6056': { 'ID': 9834, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6057': { 'ID': 9835, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6058': { 'ID': 9836, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6059': { 'ID': 9837, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6060': { 'ID': 9838, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6061': { 'ID': 9839, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6062': { 'ID': 9840, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6063': { 'ID': 9841, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6064': { 'ID': 9842, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6065': { 'ID': 9843, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6066': { 'ID': 9844, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6067': { 'ID': 9845, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6068': { 'ID': 9846, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6069': { 'ID': 9847, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6070': { 'ID': 9848, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6071': { 'ID': 9849, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6072': { 'ID': 9850, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6073': { 'ID': 9851, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6074': { 'ID': 9852, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6075': { 'ID': 9853, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6076': { 'ID': 9854, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6077': { 'ID': 9855, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6078': { 'ID': 9856, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6079': { 'ID': 9857, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6080': { 'ID': 9858, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6081': { 'ID': 9859, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6082': { 'ID': 9860, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6083': { 'ID': 9861, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6084': { 'ID': 9862, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6085': { 'ID': 9863, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6086': { 'ID': 9864, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6087': { 'ID': 9865, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6088': { 'ID': 9866, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6089': { 'ID': 9867, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6090': { 'ID': 9868, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6091': { 'ID': 9869, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6092': { 'ID': 9870, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6093': { 'ID': 9871, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6094': { 'ID': 9872, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6095': { 'ID': 9873, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6096': { 'ID': 9874, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6097': { 'ID': 9875, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6098': { 'ID': 9876, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6099': { 'ID': 9877, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6100': { 'ID': 9878, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6101': { 'ID': 9879, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6102': { 'ID': 9880, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6103': { 'ID': 9881, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6104': { 'ID': 9882, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6105': { 'ID': 9883, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6106': { 'ID': 9884, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6107': { 'ID': 9885, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6108': { 'ID': 9886, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6109': { 'ID': 9887, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6110': { 'ID': 9888, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6111': { 'ID': 9889, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6112': { 'ID': 9890, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6113': { 'ID': 9891, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6114': { 'ID': 9892, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6115': { 'ID': 9893, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6116': { 'ID': 9894, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6117': { 'ID': 9895, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6118': { 'ID': 9896, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6119': { 'ID': 9897, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6120': { 'ID': 9898, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6121': { 'ID': 9899, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6122': { 'ID': 9900, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6123': { 'ID': 9901, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6124': { 'ID': 9902, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6125': { 'ID': 9903, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6126': { 'ID': 9904, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6127': { 'ID': 9905, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6128': { 'ID': 9906, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6129': { 'ID': 9907, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6130': { 'ID': 9908, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6131': { 'ID': 9909, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6132': { 'ID': 9910, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6133': { 'ID': 9911, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6134': { 'ID': 9912, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6135': { 'ID': 9913, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6136': { 'ID': 9914, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6137': { 'ID': 9915, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6138': { 'ID': 9916, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6139': { 'ID': 9917, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6140': { 'ID': 9918, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6141': { 'ID': 9919, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6142': { 'ID': 9920, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6143': { 'ID': 9921, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6144': { 'ID': 9922, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6145': { 'ID': 9923, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6146': { 'ID': 9924, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6147': { 'ID': 9925, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6148': { 'ID': 9926, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6149': { 'ID': 9927, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6150': { 'ID': 9928, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6151': { 'ID': 9929, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6152': { 'ID': 9930, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6153': { 'ID': 9931, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6154': { 'ID': 9932, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6155': { 'ID': 9933, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6156': { 'ID': 9934, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6157': { 'ID': 9935, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6158': { 'ID': 9936, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6159': { 'ID': 9937, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6160': { 'ID': 9938, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6161': { 'ID': 9939, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6162': { 'ID': 9940, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6163': { 'ID': 9941, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6164': { 'ID': 9942, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6165': { 'ID': 9943, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6166': { 'ID': 9944, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6167': { 'ID': 9945, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6168': { 'ID': 9946, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6169': { 'ID': 9947, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6170': { 'ID': 9948, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6171': { 'ID': 9949, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6172': { 'ID': 9950, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6173': { 'ID': 9951, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6174': { 'ID': 9952, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6175': { 'ID': 9953, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6176': { 'ID': 9954, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6177': { 'ID': 9955, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6178': { 'ID': 9956, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6179': { 'ID': 9957, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6180': { 'ID': 9958, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6181': { 'ID': 9959, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6182': { 'ID': 9960, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6183': { 'ID': 9961, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6184': { 'ID': 9962, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6185': { 'ID': 9963, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6186': { 'ID': 9964, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6187': { 'ID': 9965, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6188': { 'ID': 9966, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6189': { 'ID': 9967, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6190': { 'ID': 9968, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6191': { 'ID': 9969, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6192': { 'ID': 9970, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6193': { 'ID': 9971, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6194': { 'ID': 9972, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6195': { 'ID': 9973, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6196': { 'ID': 9974, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6197': { 'ID': 9975, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6198': { 'ID': 9976, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6199': { 'ID': 9977, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6200': { 'ID': 9978, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6201': { 'ID': 9979, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6202': { 'ID': 9980, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6203': { 'ID': 9981, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6204': { 'ID': 9982, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6205': { 'ID': 9983, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6206': { 'ID': 9984, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6207': { 'ID': 9985, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6208': { 'ID': 9986, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6209': { 'ID': 9987, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6210': { 'ID': 9988, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6211': { 'ID': 9989, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6212': { 'ID': 9990, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6213': { 'ID': 9991, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6214': { 'ID': 9992, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6215': { 'ID': 9993, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6216': { 'ID': 9994, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6217': { 'ID': 9995, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6218': { 'ID': 9996, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6219': { 'ID': 9997, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6220': { 'ID': 9998, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6221': { 'ID': 9999, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6222': { 'ID':10000, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6223': { 'ID':10001, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6224': { 'ID':10002, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6225': { 'ID':10003, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6226': { 'ID':10004, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6227': { 'ID':10005, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6228': { 'ID':10006, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6229': { 'ID':10007, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6230': { 'ID':10008, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6231': { 'ID':10009, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6232': { 'ID':10010, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6233': { 'ID':10011, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6234': { 'ID':10012, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6235': { 'ID':10013, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6236': { 'ID':10014, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6237': { 'ID':10015, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6238': { 'ID':10016, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6239': { 'ID':10017, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6240': { 'ID':10018, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6241': { 'ID':10019, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6242': { 'ID':10020, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6243': { 'ID':10021, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6244': { 'ID':10022, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6245': { 'ID':10023, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6246': { 'ID':10024, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6247': { 'ID':10025, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6248': { 'ID':10026, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6249': { 'ID':10027, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6250': { 'ID':10028, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6251': { 'ID':10029, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6252': { 'ID':10030, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6253': { 'ID':10031, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6254': { 'ID':10032, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6255': { 'ID':10033, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6256': { 'ID':10034, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6257': { 'ID':10035, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6258': { 'ID':10036, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6259': { 'ID':10037, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6260': { 'ID':10038, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6261': { 'ID':10039, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6262': { 'ID':10040, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6263': { 'ID':10041, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6264': { 'ID':10042, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6265': { 'ID':10043, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6266': { 'ID':10044, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6267': { 'ID':10045, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6268': { 'ID':10046, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6269': { 'ID':10047, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6270': { 'ID':10048, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6271': { 'ID':10049, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6272': { 'ID':10050, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6273': { 'ID':10051, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6274': { 'ID':10052, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6275': { 'ID':10053, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6276': { 'ID':10054, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6277': { 'ID':10055, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6278': { 'ID':10056, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6279': { 'ID':10057, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6280': { 'ID':10058, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6281': { 'ID':10059, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6282': { 'ID':10060, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6283': { 'ID':10061, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6284': { 'ID':10062, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6285': { 'ID':10063, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6286': { 'ID':10064, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6287': { 'ID':10065, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6288': { 'ID':10066, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6289': { 'ID':10067, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6290': { 'ID':10068, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6291': { 'ID':10069, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6292': { 'ID':10070, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6293': { 'ID':10071, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6294': { 'ID':10072, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6295': { 'ID':10073, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6296': { 'ID':10074, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6297': { 'ID':10075, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6298': { 'ID':10076, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6299': { 'ID':10077, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6300': { 'ID':10078, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6301': { 'ID':10079, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6302': { 'ID':10080, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6303': { 'ID':10081, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6304': { 'ID':10082, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6305': { 'ID':10083, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6306': { 'ID':10084, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6307': { 'ID':10085, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6308': { 'ID':10086, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6309': { 'ID':10087, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6310': { 'ID':10088, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6311': { 'ID':10089, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6312': { 'ID':10090, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6313': { 'ID':10091, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6314': { 'ID':10092, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6315': { 'ID':10093, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6316': { 'ID':10094, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6317': { 'ID':10095, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6318': { 'ID':10096, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6319': { 'ID':10097, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6320': { 'ID':10098, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6321': { 'ID':10099, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6322': { 'ID':10100, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6323': { 'ID':10101, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6324': { 'ID':10102, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6325': { 'ID':10103, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6326': { 'ID':10104, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6327': { 'ID':10105, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6328': { 'ID':10106, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6329': { 'ID':10107, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6330': { 'ID':10108, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6331': { 'ID':10109, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6332': { 'ID':10110, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6333': { 'ID':10111, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6334': { 'ID':10112, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6335': { 'ID':10113, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6336': { 'ID':10114, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6337': { 'ID':10115, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6338': { 'ID':10116, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6339': { 'ID':10117, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6340': { 'ID':10118, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6341': { 'ID':10119, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6342': { 'ID':10120, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6343': { 'ID':10121, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6344': { 'ID':10122, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6345': { 'ID':10123, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6346': { 'ID':10124, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6347': { 'ID':10125, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6348': { 'ID':10126, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6349': { 'ID':10127, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6350': { 'ID':10128, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6351': { 'ID':10129, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6352': { 'ID':10130, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6353': { 'ID':10131, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6354': { 'ID':10132, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6355': { 'ID':10133, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6356': { 'ID':10134, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6357': { 'ID':10135, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6358': { 'ID':10136, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6359': { 'ID':10137, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6360': { 'ID':10138, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6361': { 'ID':10139, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6362': { 'ID':10140, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6363': { 'ID':10141, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6364': { 'ID':10142, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6365': { 'ID':10143, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6366': { 'ID':10144, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6367': { 'ID':10145, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6368': { 'ID':10146, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6369': { 'ID':10147, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6370': { 'ID':10148, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6371': { 'ID':10149, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6372': { 'ID':10150, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6373': { 'ID':10151, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6374': { 'ID':10152, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6375': { 'ID':10153, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6376': { 'ID':10154, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6377': { 'ID':10155, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6378': { 'ID':10156, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6379': { 'ID':10157, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6380': { 'ID':10158, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6381': { 'ID':10159, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6382': { 'ID':10160, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6383': { 'ID':10161, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6384': { 'ID':10162, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6385': { 'ID':10163, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6386': { 'ID':10164, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6387': { 'ID':10165, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6388': { 'ID':10166, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6389': { 'ID':10167, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6390': { 'ID':10168, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6391': { 'ID':10169, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6392': { 'ID':10170, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6393': { 'ID':10171, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6394': { 'ID':10172, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6395': { 'ID':10173, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6396': { 'ID':10174, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6397': { 'ID':10175, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6398': { 'ID':10176, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6399': { 'ID':10177, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6400': { 'ID':10178, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6401': { 'ID':10179, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6402': { 'ID':10180, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6403': { 'ID':10181, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6404': { 'ID':10182, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6405': { 'ID':10183, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6406': { 'ID':10184, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6407': { 'ID':10185, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6408': { 'ID':10186, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6409': { 'ID':10187, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6410': { 'ID':10188, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6411': { 'ID':10189, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6412': { 'ID':10190, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6413': { 'ID':10191, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6414': { 'ID':10192, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6415': { 'ID':10193, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6416': { 'ID':10194, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6417': { 'ID':10195, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6418': { 'ID':10196, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6419': { 'ID':10197, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6420': { 'ID':10198, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6421': { 'ID':10199, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6422': { 'ID':10200, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6423': { 'ID':10201, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6424': { 'ID':10202, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6425': { 'ID':10203, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6426': { 'ID':10204, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6427': { 'ID':10205, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6428': { 'ID':10206, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6429': { 'ID':10207, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6430': { 'ID':10208, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6431': { 'ID':10209, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6432': { 'ID':10210, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6433': { 'ID':10211, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6434': { 'ID':10212, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6435': { 'ID':10213, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6436': { 'ID':10214, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6437': { 'ID':10215, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6438': { 'ID':10216, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6439': { 'ID':10217, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6440': { 'ID':10218, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6441': { 'ID':10219, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6442': { 'ID':10220, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6443': { 'ID':10221, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6444': { 'ID':10222, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6445': { 'ID':10223, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6446': { 'ID':10224, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6447': { 'ID':10225, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6448': { 'ID':10226, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6449': { 'ID':10227, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6450': { 'ID':10228, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6451': { 'ID':10229, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6452': { 'ID':10230, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6453': { 'ID':10231, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6454': { 'ID':10232, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6455': { 'ID':10233, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6456': { 'ID':10234, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6457': { 'ID':10235, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6458': { 'ID':10236, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6459': { 'ID':10237, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6460': { 'ID':10238, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6461': { 'ID':10239, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6462': { 'ID':10240, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6463': { 'ID':10241, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6464': { 'ID':10242, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6465': { 'ID':10243, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6466': { 'ID':10244, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6467': { 'ID':10245, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6468': { 'ID':10246, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6469': { 'ID':10247, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6470': { 'ID':10248, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6471': { 'ID':10249, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6472': { 'ID':10250, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6473': { 'ID':10251, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6474': { 'ID':10252, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, + 'Unbekannt-6475': { 'ID':10253, 'Lesen': 0, 'Art': 'ro', 'Typ': '???', 'Buswert': 0, 'Busmin': 0, 'Busmax': 65535, 'Faktor': 1, 'Digits': 0, 'Einheit': '', 'Wert': 0, 'Wertmin': 0, 'Wertmax': 65535, 'Name': 'Unbekannt' }, +} \ No newline at end of file diff --git a/trovis557x/templates/readme.txt b/trovis557x/templates/readme.txt new file mode 100644 index 000000000..ae1dd0b9d --- /dev/null +++ b/trovis557x/templates/readme.txt @@ -0,0 +1,7 @@ +If you figure out further configurations different than my 5576-003, +please feel free to rename and adjust these files and send them back to me for integration into the project. + +Thesniffers in the 'tools' folder will help you finding out which coils/registers are accessible. + +Note: You can read out only approx. 120 registers at a time. +Reading full the range of 0..65535 will therefore take hours, even with the automatic sniffers. diff --git a/trovis557x/tools/coil_sniffer.py b/trovis557x/tools/coil_sniffer.py new file mode 100644 index 000000000..23e204b04 --- /dev/null +++ b/trovis557x/tools/coil_sniffer.py @@ -0,0 +1,88 @@ +import serial +from datetime import datetime +from pymodbus.client.sync import ModbusSerialClient as ModbusClient + +connection = ModbusClient(method='rtu',port ='/dev/ttytrovis', timeout=0.5) +connection.connect() +print('Verbindung über: ', connection) + +suchbereiche = list() +bereiche = list() +coils = list() + +# Diese Coilbereiche durchsuchen - mehrere Bereiche können angegeben werden (ein Bereich je Zeile): +suchbereiche.append([0,99]) # Durchsuche die ersten 100 Coils +# suchbereiche.append([300,499]) # Ggf zweiter Bereich usw usw + + + +################################################################################################# +# Bereits durchsuchte Bereiche: + +# suchbereiche.append([0,9999]) +# ([1, 39], [56, 68], [87, 112], [115, 123], [129, 167], [175, 214], [221, 237], [244, 308], +# [321, 337], [997, 1008], [1016, 1018], [1024, 1044], [1199, 1208], [1211, 1212], [1216, 1218], +# [1224, 1237], [1799, 1808], [1824, 1844], [9899, 9910]) + +# ... hier erweitern ... +################################################################################################# + + +# Gültige Coils finden: +def durchsuche_bereiche(suchbereiche): + anfangzeit = datetime.now() + for bereich in suchbereiche: + anfang = bereich[0] + ende = bereich[1] + gefunden_anfang = -1 #0 + gefunden_ende = 0 + while anfang <= ende: + try: + ergebnis = int((connection.read_coils(anfang, 1, unit=247)).bits[0]) + print(str(anfang) + ":" + str(ergebnis)) + if gefunden_anfang == -1: + gefunden_anfang = anfang + gefunden_ende = anfang + if anfang==bereich[1]: + bereiche.append([gefunden_anfang, gefunden_ende]) + except Exception as e: + print(str(anfang), 'Fehler: ', e) + if gefunden_anfang != -1: + bereiche.append([gefunden_anfang, gefunden_ende]) + gefunden_anfang = -1 + anfang += 1 + endzeit = datetime.now() + print('Gefundene Coilbereiche:', bereiche) + dauer = endzeit - anfangzeit + print('Suchzeit: ', dauer, 's') + return bereiche + +# Gefundenen gültige Coils mit Werten am Stück ausgeben: +def lese_coils(liste): + print('Auslesen aller gefundenen Coils am Stück:') + anfangzeit = datetime.now() + for anfang, ende in liste: + try: + ergebnis = connection.read_coils(anfang, ende-anfang+1, unit=247) + except Exception as e: + print(str(anfang), 'Fehler: ', e) + coilnum = anfang + for coil in ergebnis.bits: + coils.append([coilnum, int(coil)]) + coilnum += 1 + # unsauber, aber Länge von ergebnis ist immer Vielfaches von + # 8 (8 bits = 1 Byte) und wird ggf rechts mit Nullen aufgefüllt, + # daher sind im Ergebnis ggf mehr Elemente als angefragt: + if coilnum > ende: + break + endzeit = datetime.now() + print(coils) + dauer = endzeit - anfangzeit + print('Auslesezeit: ', dauer, 's') + return coils + + +# Hauptroutine +gefunden = durchsuche_bereiche(suchbereiche) +lese_coils(gefunden) +connection.close() \ No newline at end of file diff --git a/trovis557x/tools/readme.txt b/trovis557x/tools/readme.txt new file mode 100644 index 000000000..7467cc8ab --- /dev/null +++ b/trovis557x/tools/readme.txt @@ -0,0 +1 @@ +Use these tools with caution - they were made quick&dirty and are highly experimental. diff --git a/trovis557x/tools/register_sniffer.py b/trovis557x/tools/register_sniffer.py new file mode 100644 index 000000000..1902c1ccc --- /dev/null +++ b/trovis557x/tools/register_sniffer.py @@ -0,0 +1,103 @@ +import serial +from datetime import datetime +from pymodbus.client.sync import ModbusSerialClient as ModbusClient + +connection = ModbusClient(method='rtu',port ='/dev/ttytrovis', timeout=0.5) +connection.connect() +print('Verbindung über: ', connection) + +suchbereiche = list() +bereiche = list() +register = list() + +# Diese Registerbereiche durchsuchen - mehrere Bereiche können angegeben werden (ein Bereich je Zeile): +suchbereiche.append([0,99]) # Durchsuche die ersten 100 Register +# suchbereiche.append([300,499]) # Ggf zweiter Bereich usw usw (max 124 Register pro Bereich!) + +################################################################################################# +# Bereits durchsuchte Bereiche: + +# suchbereiche.append([0,10299]) +gueltig = ( # normalerweise können 124 Register gelesen werden; ab 10000 nur 49; Auslesezeit 19.5s + [0, 6], [9, 40], [98, 154], [159, 166], [200, 214], [299, 319], [999, 1044], + [1053, 1071], [1089, 1095], [1199, 1243], [1255, 1271], [1455, 1470], [1799, 1812], + [1827, 1839], [1855, 1870], [2999, 3123], [3124, 3248], [3249, 3250], [3499, 3548], + [3999, 4123], [4124, 4248], [4249, 4373], [4374, 4498], [4499, 4623], [4624, 4748], + [4749, 4873], [4874, 4998], [4999, 5123], [5124, 5248], [5249, 5373], [5374, 5498], + [5499, 5623], [5624, 5748], [5749, 5873], [5874, 5998], [5999, 6046], [6489, 6613], + [6614, 6738], [6739, 6863], [6864, 6988], [6989, 7113], [7114, 7238], [7239, 7363], + [7364, 7488], [7489, 7613], [7614, 7738], [7739, 7863], [7864, 7988], [7989, 8113], + [8114, 8238], [8239, 8363], [8364, 8488], [8489, 8613], [8614, 8738], [8739, 8863], + [8864, 8988], [8989, 9113], [9114, 9238], [9239, 9363], [9364, 9488], [9489, 9613], + [9614, 9738], [9739, 9863], [9864, 9988], [9989, 9999], + [10000, 10040], [10041, 10080], [10081, 10120], [10121, 10160], [10161, 10200], + [10201, 10240], [10241, 10253] +) + +#for start, ende in gueltig: +# suchbereiche.append([start,ende]) + +# ... hier ggf. erweitern ... +################################################################################################# + + +# Gültige Register finden: +def durchsuche_bereiche(suchbereiche): + anfangzeit = datetime.now() + for bereich in suchbereiche: + anfang = bereich[0] + ende = bereich[1] + gefunden_anfang = -1 #0 + gefunden_ende = 0 + while anfang <= ende: + try: + ergebnis = connection.read_holding_registers(anfang, 1, unit=247) + print(str(anfang) + ":" + str(ergebnis.registers)) + if gefunden_anfang == -1: + gefunden_anfang = anfang + gefunden_ende = anfang + if anfang==bereich[1]: + bereiche.append([gefunden_anfang, gefunden_ende]) + except Exception as e: + print(str(anfang), 'Fehler: ', e) + if gefunden_anfang != -1: + bereiche.append([gefunden_anfang, gefunden_ende]) + gefunden_anfang = -1 + anfang += 1 + endzeit = datetime.now() + print('Gefundene Registerbereiche:', bereiche) + dauer = endzeit - anfangzeit + print('Suchzeit: ', dauer, 's') + return bereiche + +# Gefundenen gültige Register mit Werten am Stück ausgeben: +def lese_register(liste): + print('Auslesen aller gefundenen Register am Stück:') + anfangzeit = datetime.now() + for anfang, ende in liste: + try: + ergebnis = connection.read_holding_registers(anfang, ende-anfang+1, unit=247) + print(anfang, '-', ende, ':', ergebnis) + except Exception as e: + print(str(anfang), 'Fehler: ', e) + regnum = anfang + try: + for reg in ergebnis.registers: + register.append([regnum, int(reg)]) + regnum += 1 + except Exception as f: + print(f) + endzeit = datetime.now() + print(register) + dauer = endzeit - anfangzeit + print('Auslesezeit: ', dauer, 's') + return register + + +# Hauptroutine +gefunden = durchsuche_bereiche(suchbereiche) +lese_register(gefunden) + +#lese_register(suchbereiche) + +connection.close() \ No newline at end of file diff --git a/trovis557x/webif/todo b/trovis557x/webif/todo new file mode 100644 index 000000000..033e33e1c --- /dev/null +++ b/trovis557x/webif/todo @@ -0,0 +1 @@ +On the ToDo list. From 8a8a4c7bc7d23826a30fd82d7e7a2f153a0e43c5 Mon Sep 17 00:00:00 2001 From: ivande Date: Wed, 7 Aug 2019 15:05:20 +0200 Subject: [PATCH 195/200] plugin parameters (and item attributes) added in the plugin.yaml --- snap7_logo/__init__.py | 35 ++++++++++++++++++++---------- snap7_logo/plugin.yaml | 49 +++++++++++++++++++++++++++++++++++++++--- 2 files changed, 70 insertions(+), 14 deletions(-) diff --git a/snap7_logo/__init__.py b/snap7_logo/__init__.py index 5a18c3f27..ca97d38ec 100644 --- a/snap7_logo/__init__.py +++ b/snap7_logo/__init__.py @@ -34,18 +34,31 @@ class snap7logo(SmartPlugin): ALLOW_MULTIINSTANCE = True - PLUGIN_VERSION = "1.5.2" - def __init__(self, smarthome, host, tsap_server=0x0200, tsap_client=0x0100, version='0BA7', cycle=5 ): + PLUGIN_VERSION = "1.5.3" + #def __init__(self, smarthome, host, tsap_server=0x0200, tsap_client=0x0100, version='0BA7', cycle=5 ): + def __init__(self, sh, *args, **kwargs): + """ + Initializes the plugin + The params are documented in ``plugin.yaml`` and values will be obtained through get_parameter_value(parameter_name) + """ self.logger = logging.getLogger(__name__) - self.host = host - self.tsap_server = int(tsap_server) - self.tsap_client = int(tsap_client) - self._version = version - self._cycle = int(cycle) + + # self.host = host + # self.tsap_server = int(tsap_server) + # self.tsap_client = int(tsap_client) + # self._version = version + # self._cycle = int(cycle) + + self.host = self.get_parameter_value('host') + self.tsap_server = self.get_parameter_value('tsap_server') + self.tsap_client = self.get_parameter_value('tsap_client') + self._version = self.get_parameter_value('version') + self._cycle = self.get_parameter_value('cycle') + self._lock = threading.Lock() self._rw_lock = threading.Lock() self.connected = False - self._sh = smarthome + self._sh = sh self._connection_attempts = 0 self._connection_errorlog = 2 @@ -93,7 +106,7 @@ def __init__(self, smarthome, host, tsap_server=0x0200, tsap_client=0x0100, vers #self.Dateipfad = '/lib' # Dateipfad zur Bibliothek self.threadLastRead = 0 # verstrichene Zeit zwischen zwei LeseBefehlen - smarthome.connections.monitor(self) # damit connect ausgeführt wird + self._sh.connections.monitor(self) # damit connect ausgeführt wird self.init_webinterface() @@ -103,7 +116,7 @@ def connect(self): try: self.logger.debug('{0}: try to connected to {1}'.format(self.get_instance_name(), self.host)) self.plc = snap7.logo.Logo() - self.plc.connect(self.host, self.tsap_client, self.tsap_server) + self.plc.connect(self.host, int(self.tsap_client), int(self.tsap_server)) #if not self.plc.get_connected(): #raise LOGO('{0}:connection error'.format(self.get_instance_name())) @@ -125,7 +138,7 @@ def connect(self): # called once at startup after all items are loaded def run(self): - self.scheduler_add('update', self._update_loop, prio=5, cycle=self._cycle, offset=2) + self.scheduler_add('update', self._update_loop, prio=5, cycle=int(self._cycle), offset=2) self.alive = True diff --git a/snap7_logo/plugin.yaml b/snap7_logo/plugin.yaml index 07c314cee..7ba538a45 100644 --- a/snap7_logo/plugin.yaml +++ b/snap7_logo/plugin.yaml @@ -4,14 +4,14 @@ plugin: type: interface # plugin type (gateway, interface, protocol, system, web) description: de: 'Ansteuerung einer Siemens LOGO PLC' - en: '' + en: 'Control of a Siemens LOGO PLC' maintainer: 'ivande' # tester: # Who tests this plugin? # keywords: iot xyz # documentation: https://github.com/smarthomeNG/smarthome/wiki/CLI-Plugin # url of documentation (wiki) page # support: https://knx-user-forum.de/forum/supportforen/smarthome-py - version: 1.5.2 # Plugin version + version: 1.5.3 # Plugin version sh_minversion: 1.5 # minimum shNG version to use this plugin # sh_maxversion: # maximum shNG version to use this plugin (leave empty if latest) multi_instance: True # plugin supports multi instance @@ -19,7 +19,50 @@ plugin: parameters: # Definition of parameters to be configured in etc/plugin.yaml + host: + type: ipv4 + description: + de: 'IP Adresse der anzusprechenden Siemens-Logo' + en: 'IP address of the Siemens-Logo to be addressed' + + tsap_server: + type: num + default: 0x0200 + description: + de: 'tsap_server - Dezimalzahl' + en: 'tsap_server - dezimal' + + tsap_client: + type: num + default: 0x0100 + description: + de: 'tsap_client - Dezimalzahl' + en: 'tsap_client - dezimal' + + version: + type: str + default: '0BA7' + description: + de: 'Siemens Hardware Version 0BA7 oder 0BA8' + en: 'Siemens hardware version 0BA7 or 0BA8' + + cycle: + type: num + default: 5 + description: + de: 'Zeit (sec) nachdem eine neue Verbindung zur Logo aufgebaut wird, um Änderungen zu holen' + en: 'time (sec) after a new link to Logo will be established to get updates' item_attributes: - # Definition of item attributes defined by this plugin + logo_read: + type: str + description: + de: 'Eingang, Ausgang, Merker von der Siemens-Logo lesen' + en: 'Input, Output, Mark to read from Siemens Logo' + + logo_write: + type: str + description: + de: 'Eingang, Ausgang, Merker in die Siemens-Logo schreiben' + en: 'Input, Output, Mark to write from Siemens Logo' From 4e6f07aaccccf1b3191fe6d03f258d567ab11e26 Mon Sep 17 00:00:00 2001 From: ivande Date: Wed, 7 Aug 2019 15:08:14 +0200 Subject: [PATCH 196/200] delete Comment out lines --- snap7_logo/__init__.py | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/snap7_logo/__init__.py b/snap7_logo/__init__.py index ca97d38ec..c0cb61e64 100644 --- a/snap7_logo/__init__.py +++ b/snap7_logo/__init__.py @@ -35,7 +35,7 @@ class snap7logo(SmartPlugin): ALLOW_MULTIINSTANCE = True PLUGIN_VERSION = "1.5.3" - #def __init__(self, smarthome, host, tsap_server=0x0200, tsap_client=0x0100, version='0BA7', cycle=5 ): + def __init__(self, sh, *args, **kwargs): """ Initializes the plugin @@ -43,13 +43,7 @@ def __init__(self, sh, *args, **kwargs): """ self.logger = logging.getLogger(__name__) - # self.host = host - # self.tsap_server = int(tsap_server) - # self.tsap_client = int(tsap_client) - # self._version = version - # self._cycle = int(cycle) - - self.host = self.get_parameter_value('host') + self.host = self.get_parameter_value('host') self.tsap_server = self.get_parameter_value('tsap_server') self.tsap_client = self.get_parameter_value('tsap_client') self._version = self.get_parameter_value('version') From 5c62a85c721d9bd263a19e514ce8623ba7d66ef9 Mon Sep 17 00:00:00 2001 From: psilo909 Date: Thu, 8 Aug 2019 17:27:37 +0200 Subject: [PATCH 197/200] Withings Health: fix for exception --- withings_health/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/withings_health/__init__.py b/withings_health/__init__.py index 1abc43b98..13b932b62 100644 --- a/withings_health/__init__.py +++ b/withings_health/__init__.py @@ -143,8 +143,9 @@ def _update(self): measures = self._client.get_measures() except Exception as e: self.logger.error( - "An exception occured when running get_measures(): {}.".format( + "An exception occured when running get_measures(): {}. Aborting update.".format( str(e))) + return last_measure = measures[0] From 125d5789061a1a62408ce48b3218f69267241d66 Mon Sep 17 00:00:00 2001 From: ivande Date: Sat, 10 Aug 2019 09:25:12 +0200 Subject: [PATCH 198/200] remove logger - definition --- snap7_logo/__init__.py | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/snap7_logo/__init__.py b/snap7_logo/__init__.py index c0cb61e64..930c63b97 100644 --- a/snap7_logo/__init__.py +++ b/snap7_logo/__init__.py @@ -41,9 +41,8 @@ def __init__(self, sh, *args, **kwargs): Initializes the plugin The params are documented in ``plugin.yaml`` and values will be obtained through get_parameter_value(parameter_name) """ - self.logger = logging.getLogger(__name__) - - self.host = self.get_parameter_value('host') + + self.host = self.get_parameter_value('host') self.tsap_server = self.get_parameter_value('tsap_server') self.tsap_client = self.get_parameter_value('tsap_client') self._version = self.get_parameter_value('version') From 1176f6e7cdd5d77ae70210ae5de9f009bac8700b Mon Sep 17 00:00:00 2001 From: Tom Bombadil Date: Sat, 10 Aug 2019 10:57:48 +0200 Subject: [PATCH 199/200] Fixed broken link to Wiki https missing --- trovis557x/readme.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/trovis557x/readme.md b/trovis557x/readme.md index 46e8c7033..1aca88174 100644 --- a/trovis557x/readme.md +++ b/trovis557x/readme.md @@ -4,7 +4,7 @@ Unterstützt werden alle Modelle mit Modbus (5571, 5573, 5576, 5578, 5579). Einige Teile des Projektes können auch für die Anbindung des Reglers an Trovis View verwendet werden. -Weitere Details sind im [Wiki](github.com/Tom-Bom-badil/samson_trovis_557x/wiki) zu finden. +Weitere Details sind im [Wiki](https://github.com/Tom-Bom-badil/samson_trovis_557x/wiki) zu finden. ------------ @@ -14,4 +14,4 @@ The plugin supports all Modbus models (5571, 5573, 5576, 5578, 5579). Some parts of the project can also be used to connect the controller to Trovis View. -Further details can be found in the [Wiki](github.com/Tom-Bom-badil/samson_trovis_557x/wiki) (German). +Further details can be found in the [Wiki](https://github.com/Tom-Bom-badil/samson_trovis_557x/wiki) (German). From eae5b9329a7d05250b2e4938de7b891d77fb0648 Mon Sep 17 00:00:00 2001 From: msinn Date: Sat, 10 Aug 2019 12:23:51 +0200 Subject: [PATCH 200/200] Update __init__.py --- __init__.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/__init__.py b/__init__.py index 61a79a1b3..86e6a89f4 100644 --- a/__init__.py +++ b/__init__.py @@ -1,7 +1,7 @@ def plugin_release(): - return '1.6a' + return '1.6.1' def plugin_branch(): - return 'develop' + return 'master'