diff --git a/denon/__init__.py b/denon/__init__.py index 56b0f7818..04f83d4c0 100755 --- a/denon/__init__.py +++ b/denon/__init__.py @@ -24,6 +24,7 @@ import builtins import os import sys +import time if __name__ == '__main__': builtins.SDP_standalone = True @@ -40,8 +41,9 @@ class SmartPluginWebIf(): else: builtins.SDP_standalone = False -from lib.model.sdp.globals import (PLUGIN_ATTR_NET_HOST, PLUGIN_ATTR_CONNECTION, PLUGIN_ATTR_SERIAL_PORT, PLUGIN_ATTR_CONN_TERMINATOR, CONN_NULL, CONN_NET_TCP_CLI, CONN_SER_ASYNC) +from lib.model.sdp.globals import (PLUGIN_ATTR_NET_HOST, PLUGIN_ATTR_CONNECTION, PLUGIN_ATTR_SERIAL_PORT, PLUGIN_ATTR_CONN_TERMINATOR, PLUGIN_ATTR_CMD_CLASS, CONN_NULL, CONN_NET_TCP_CLI, CONN_SER_ASYNC) from lib.model.smartdeviceplugin import SmartDevicePlugin, Standalone +from lib.model.sdp.command import SDPCommandParseStr # from .webif import WebInterface @@ -60,7 +62,7 @@ def on_connect(self, by=None): self.send_command('general.custom_inputnames') def _set_device_defaults(self): - + self._use_callbacks = True self._custom_inputnames = {} # set our own preferences concerning connections @@ -72,77 +74,37 @@ def _set_device_defaults(self): self.logger.error('Neither host nor serialport set, connection not possible. Using dummy connection, plugin will not work') self._parameters[PLUGIN_ATTR_CONNECTION] = CONN_NULL + self._parameters[PLUGIN_ATTR_CMD_CLASS] = SDPCommandParseStr + b = self._parameters[PLUGIN_ATTR_CONN_TERMINATOR].encode() b = b.decode('unicode-escape').encode() self._parameters[PLUGIN_ATTR_CONN_TERMINATOR] = b - # we need to receive data via callback, as the "reply" can be unrelated to - # the sent command. Getting it as return value would assign it to the wrong - # command and discard it... so break the "return result"-chain and don't - # return anything - def _send(self, data_dict): - self._connection.send(data_dict) - def _transform_send_data(self, data=None, **kwargs): if isinstance(data, dict): data['limit_response'] = self._parameters[PLUGIN_ATTR_CONN_TERMINATOR] data['payload'] = f'{data.get("payload", "")}{data["limit_response"].decode("unicode-escape")}' return data - def on_data_received(self, by, data, command=None): + def _process_additional_data(self, command, data, value, custom, by): + zone = 0 + if command == 'zone1.control.power': + zone = 1 + elif command == 'zone2.control.power': + zone = 2 + elif command == 'zone3.control.power': + zone = 3 + if zone > 0 and value is True: + self.logger.debug(f"Device is turned on by command {command}. Requesting current state of zone {zone}.") + time.sleep(1) + self.send_command(f'zone{zone}.control.mute') + self.send_command(f'zone{zone}.control.sleep') + self.send_command(f'zone{zone}.control.standby') + if zone == 1 and value is True: + self.send_command(f'zone{zone}.control.input') + self.send_command(f'zone{zone}.control.volume') + self.send_command(f'zone{zone}.control.listeningmode') - commands = None - if command is not None: - self.logger.debug(f'received data "{data}" from {by} for command {command}') - commands = [command] - else: - # command == None means that we got raw data from a callback and - # don't know yet to which command this belongs to. So find out... - self.logger.debug(f'received data "{data}" from {by} without command specification') - - # command can be a string (classic single command) or - # - new - a list of strings if multiple commands are identified - # in that case, work on all strings - commands = self._commands.get_commands_from_reply(data) - if not commands: - if self._discard_unknown_command: - self.logger.debug(f'data "{data}" did not identify a known command, ignoring it') - return - else: - self.logger.debug(f'data "{data}" did not identify a known command, forwarding it anyway for {self._unknown_command}') - self._dispatch_callback(self._unknown_command, data, by) - - # TODO: remove later? - assert(isinstance(commands, list)) - - # process all commands - for command in commands: - self._check_for_custominputs(command, data) - custom = None - if self.custom_commands: - custom = self._get_custom_value(command, data) - - base_command = command - value = None - try: - if CUSTOM_INPUT_NAME_COMMAND in command: - value = self._custom_inputnames - else: - value = self._commands.get_shng_data(command, data) - except OSError as e: - self.logger.warning(f'received data "{data}" for command {command}, error {e} occurred while converting. Discarding data.') - else: - self.logger.debug(f'received data "{data}" for command {command} converted to value {value}') - self._dispatch_callback(command, value, by) - - self._process_additional_data(base_command, data, value, custom, by) - - def _check_for_custominputs(self, command, data): - if CUSTOM_INPUT_NAME_COMMAND in command and isinstance(data, str): - tmp = data.split(' ', 1) - src = tmp[0][5:] - name = tmp[1] - self._custom_inputnames[src] = name if __name__ == '__main__': - s = Standalone(lms, sys.argv[0]) + s = Standalone(denon, sys.argv[0]) diff --git a/denon/commands.py b/denon/commands.py index 27afbd0fa..20900f8c8 100755 --- a/denon/commands.py +++ b/denon/commands.py @@ -61,7 +61,7 @@ 'region': {'read': True, 'write': False, 'read_cmd': 'SYMODTUN ?', 'item_type': 'str', 'dev_datatype': 'str', 'reply_pattern': r'SYMODTUN\s(.*)', 'item_attrs': {'initial': True}}, }, 'general': { - 'custom_inputnames': {'read': True, 'write': False, 'read_cmd': 'SSFUN ?', 'item_type': 'dict', 'dev_datatype': 'str', 'reply_pattern': 'SSFUN(.*)', 'item_attrs': {'item_template': 'custom_inputnames'}}, + 'custom_inputnames': {'read': True, 'write': False, 'read_cmd': 'SSFUN ?', 'item_type': 'dict', 'dev_datatype': 'DenonCustominput', 'reply_pattern': 'SSFUN(.*)', 'item_attrs': {'item_template': 'custom_inputnames'}}, 'power': {'read': True, 'write': True, 'read_cmd': 'PW?', 'write_cmd': 'PW{VALUE}', 'item_type': 'bool', 'dev_datatype': 'str', 'reply_pattern': 'PW{LOOKUP}', 'lookup': 'POWER'}, 'setupmenu': {'read': True, 'write': True, 'read_cmd': 'MNMEN?', 'write_cmd': 'MNMEN {VALUE}', 'item_type': 'bool', 'dev_datatype': 'onoff', 'reply_pattern': 'MNMEN (ON|OFF)'}, 'display': {'read': True, 'write': False, 'read_cmd': 'NSE', 'item_type': 'str', 'dev_datatype': 'DenonDisplay', 'reply_pattern': 'NSE(.*)'}, @@ -106,7 +106,7 @@ 'volume': {'read': True, 'write': True, 'read_cmd': 'MV?', 'write_cmd': 'MV{VALUE}', 'item_type': 'num', 'dev_datatype': 'DenonVol', 'reply_pattern': r'MV(\d{2,3})', 'cmd_settings': {'force_min': 0.0, 'valid_max': 98.0}, 'item_attrs': {'initial': True}}, 'volumeup': {'read': False, 'write': True, 'item_type': 'bool', 'write_cmd': 'MVUP', 'dev_datatype': 'raw'}, 'volumedown': {'read': False, 'write': True, 'write_cmd': 'MVDOWN', 'item_type': 'bool', 'dev_datatype': 'raw'}, - 'volumemax': {'opcode': '{VALUE}', 'read': True, 'write': False, 'item_type': 'num', 'dev_datatype': 'str', 'reply_pattern': r'MVMAX (\d{2,3})', 'item_attrs': {'initial': True}}, + 'volumemax': {'opcode': '{VALUE}', 'read': True, 'write': False, 'item_type': 'num', 'dev_datatype': 'str', 'reply_pattern': r'MVMAX (\d{2,3})'}, 'input': {'read': True, 'write': True, 'read_cmd': 'SI?', 'write_cmd': 'SI{VALUE}', 'item_type': 'str', 'dev_datatype': 'str', 'reply_pattern': 'SI{LOOKUP}', 'lookup': 'INPUT', 'item_attrs': {'item_template': 'input', 'initial': True}}, 'listeningmode': {'read': True, 'write': True, 'cmd_settings': {'valid_list_ci': ['MOVIE', 'MUSIC', 'GAME', 'DIRECT', 'PURE DIRECT', 'STEREO', 'AUTO', 'DOLBY DIGITAL', 'DOLBY SURROUND', 'DTS SURROUND', 'NEURAL:X', 'AURO3D', 'AURO2DSURR', 'MCH STEREO', 'ROCK ARENA', 'JAZZ CLUB', 'MONO MOVIE', 'MATRIX', 'VIDEO GAME', 'VIRTUAL', 'LEFT', 'RIGHT']}, 'read_cmd': 'MS?', 'write_cmd': 'MS{RAW_VALUE_UPPER}', 'item_type': 'str', 'dev_datatype': 'str', 'reply_pattern': r'\s?MS(.*)', 'item_attrs': {'initial': True}}, 'sleep': {'read': True, 'write': True, 'item_type': 'num', 'read_cmd': 'SLP?', 'write_cmd': 'SLP{VALUE}', 'dev_datatype': 'convert0', 'reply_pattern': r'SLP(\d{3}|OFF)', 'cmd_settings': {'force_min': 0, 'force_max': 120}, 'item_attrs': {'initial': True}}, @@ -424,7 +424,7 @@ 'on_change': [".custom_name = '' if sh.....general.custom_inputnames() == {} else sh.....general.custom_inputnames()[value]",], 'custom_name': { 'type': 'str', - 'on_change': ".. = '' if sh......general.custom_inputnames.reverse() == {} else sh......general.custom_inputnames.reverse()[value]" + 'on_change': "sh...(sh......general.custom_inputnames.reverse()[value]) if sh......general.custom_inputnames.reverse() != {} else None" } } } diff --git a/denon/datatypes.py b/denon/datatypes.py index 11dbe3490..f56d5a228 100755 --- a/denon/datatypes.py +++ b/denon/datatypes.py @@ -20,6 +20,17 @@ def get_shng_data(self, data, type=None, **kwargs): return None +# read only. Creating dict with custom inputnames +class DT_DenonCustominput(DT.Datatype): + def __init__(self, fail_silent=False): + super().__init__(fail_silent) + self._custom_inputnames = {} + + def get_shng_data(self, data, type=None, **kwargs): + tmp = data.split(' ', 1) + self._custom_inputnames[tmp[0]] = tmp[1] + return self._custom_inputnames + # handle pseudo-decimal values without decimal point class DT_DenonVol(DT.Datatype): def get_send_data(self, data, **kwargs): diff --git a/denon/plugin.yaml b/denon/plugin.yaml index e03f03321..0825eb252 100755 --- a/denon/plugin.yaml +++ b/denon/plugin.yaml @@ -6,9 +6,10 @@ plugin: tester: Morg state: develop keywords: iot device av denon sdp - version: 1.0.1 + version: '1.0.1' sh_minversion: '1.9.5' py_minversion: '3.7' + sdp_minversion: '1.0.3' multi_instance: false restartable: true classname: denon @@ -128,17 +129,6 @@ parameters: de: Verbindungstyp en: connection type - command_class: - type: str - default: SDPCommandParseStr - valid_list: - - SDPCommand - - SDPCommandParseStr - - description: - de: Klasse für Verarbeitung von Kommandos - en: class for command processing - autoreconnect: type: bool default: true @@ -163,6 +153,60 @@ parameters: de: Anzahl Verbindungsversuche en: number of connect retries + send_retries: + type: num + default: 0 + + description: + de: Anzahl Sendeversuche + en: number of sending retries + description_long: + de: 'Anzahl Sendeversuche\n + Kommt keine (passende) Antwort nach dem Senden + eines Commands zurück, wird das Kommando nochmals + gesendet, sofern der Wert über 0 liegt. + ' + en: 'number of sending retries\n + If no (suiting) answer is received after sending + a command the command is resent as long as this + value is more than 0. + ' + + sendretry_cycle: + type: num + valid_min: 1 + default: 1 + + description: + de: Pause zwischen Durchgängen von Sendeversuchen + en: wait time between sending retry rounds + description_long: + de: 'Pause zwischen Durchgängen von Sendeversuchen\n + Sind Send Retries aktiv, wird ein Scheduler erstellt, + der im angegebenen Sekundentakt Kommandos erneut sendet, + zu denen keine (passenden) Antworten erhalten wurden. + ' + en: 'wait time between sending retry rounds\n + If send retries are active, a scheduler gets added + that resends commands in the given cycle value (in seconds) + where no (suiting) answer got received. + ' + + delay_initial_read: + type: num + default: 0 + + description: + de: Warte nach Verbindungsaufbau mit dem Abfragen von Werten + en: Wait after connection with querying values + + resume_initial_read: + type: bool + defaul: false + description: + de: 'Bei resume vom Plugin erstmaliges Lesen erneut durchführen' + en: 'Repeat initial read on resume' + connect_cycle: type: num default: 3 @@ -195,7 +239,6 @@ parameters: de: Item-Pfad für das Standby-Item en: item path for standby switch item - item_attributes: denon_command: @@ -226,6 +269,13 @@ item_attributes: de: Konfiguriert ein Intervall in Sekunden für regelmäßiges Lesen en: Configures a interval in seconds for cyclic read actions + denon_readafterwrite: + type: num + + description: + de: Konfiguriert eine Verzögerung, nach der der Lesebefehl im Anschluss an einen Schreibbefehl gesendet werden soll. + en: Configures a delay after that the read command related to a send command will get sent. + denon_read_initial: type: bool @@ -265,224 +315,224 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: info + denon_read_group_trigger@instance: info fullmodel: type: str - denon_command: info.fullmodel - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.fullmodel + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - info - denon_read_initial: true + denon_read_initial@instance: true model: type: str - denon_command: info.model - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.model + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - info - denon_read_initial: true + denon_read_initial@instance: true serialnumber: type: num - denon_command: info.serialnumber - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.serialnumber + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - info main: type: str - denon_command: info.main - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.main + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - info mainfbl: type: num - denon_command: info.mainfbl - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.mainfbl + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - info dsp1: type: num - denon_command: info.dsp1 - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.dsp1 + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - info dsp2: type: num - denon_command: info.dsp2 - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.dsp2 + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - info dsp3: type: num - denon_command: info.dsp3 - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.dsp3 + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - info dsp4: type: num - denon_command: info.dsp4 - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.dsp4 + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - info apld: type: num - denon_command: info.apld - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.apld + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - info vpld: type: num - denon_command: info.vpld - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.vpld + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - info guidat: type: num - denon_command: info.guidat - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.guidat + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - info heosversion: type: str - denon_command: info.heosversion - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.heosversion + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - info heosbuild: type: num - denon_command: info.heosbuild - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.heosbuild + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - info heosmod: type: num - denon_command: info.heosmod - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.heosmod + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - info heoscnf: type: str - denon_command: info.heoscnf - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.heoscnf + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - info heoslanguage: type: str - denon_command: info.heoslanguage - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.heoslanguage + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - info mac: type: str - denon_command: info.mac - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.mac + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - info wifimac: type: str - denon_command: info.wifimac - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.wifimac + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - info btmac: type: str - denon_command: info.btmac - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.btmac + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - info audyif: type: num - denon_command: info.audyif - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.audyif + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - info productid: type: num - denon_command: info.productid - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.productid + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - info packageid: type: num - denon_command: info.packageid - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.packageid + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - info cmp: type: str - denon_command: info.cmp - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.cmp + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - info region: type: str - denon_command: info.region - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.region + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - info - denon_read_initial: true + denon_read_initial@instance: true general: read: type: bool enforce_updates: true - denon_read_group_trigger: general + denon_read_group_trigger@instance: general custom_inputnames: type: dict - denon_command: general.custom_inputnames - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.custom_inputnames + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - general cache: true @@ -497,94 +547,94 @@ item_structs: power: type: bool - denon_command: general.power - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: general.power + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - general setupmenu: type: bool - denon_command: general.setupmenu - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: general.setupmenu + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - general display: type: str - denon_command: general.display - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.display + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - general soundmode: type: str - denon_command: general.soundmode - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.soundmode + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - general - denon_read_initial: true + denon_read_initial@instance: true allzonestereo: type: bool - denon_command: general.allzonestereo - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.allzonestereo + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - general - denon_read_initial: true + denon_read_initial@instance: true inputsignal: type: str - denon_command: general.inputsignal - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.inputsignal + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - general - denon_read_initial: true + denon_read_initial@instance: true inputrate: type: num - denon_command: general.inputrate - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.inputrate + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - general - denon_read_initial: true + denon_read_initial@instance: true inputformat: type: str - denon_command: general.inputformat - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.inputformat + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - general - denon_read_initial: true + denon_read_initial@instance: true inputresolution: type: str - denon_command: general.inputresolution - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.inputresolution + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - general - denon_read_initial: true + denon_read_initial@instance: true outputresolution: type: str - denon_command: general.outputresolution - denon_read: true - denon_write: false + denon_command@instance: general.outputresolution + denon_read@instance: true + denon_write@instance: false ecomode: type: str - denon_command: general.ecomode - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: general.ecomode + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - general tuner: @@ -592,86 +642,86 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: tuner + denon_read_group_trigger@instance: tuner title: type: str - denon_command: tuner.title - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: tuner.title + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - tuner - denon_read_initial: true + denon_read_initial@instance: true album: type: str - denon_command: tuner.album - denon_read: true - denon_write: false + denon_command@instance: tuner.album + denon_read@instance: true + denon_write@instance: false artist: type: str - denon_command: tuner.artist - denon_read: true - denon_write: false + denon_command@instance: tuner.artist + denon_read@instance: true + denon_write@instance: false preset: type: num - denon_command: tuner.preset - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.preset + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - tuner - denon_read_initial: true + denon_read_initial@instance: true presetup: type: bool - denon_command: tuner.presetup - denon_read: false - denon_write: true + denon_command@instance: tuner.presetup + denon_read@instance: false + denon_write@instance: true presetdown: type: bool - denon_command: tuner.presetdown - denon_read: false - denon_write: true + denon_command@instance: tuner.presetdown + denon_read@instance: false + denon_write@instance: true frequency: type: num - denon_command: tuner.frequency - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.frequency + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - tuner - denon_read_initial: true + denon_read_initial@instance: true frequencyup: type: bool - denon_command: tuner.frequencyup - denon_read: false - denon_write: true + denon_command@instance: tuner.frequencyup + denon_read@instance: false + denon_write@instance: true frequencydown: type: bool - denon_command: tuner.frequencydown - denon_read: false - denon_write: true + denon_command@instance: tuner.frequencydown + denon_read@instance: false + denon_write@instance: true band: type: str - denon_command: tuner.band - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.band + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - tuner - denon_read_initial: true + denon_read_initial@instance: true tuningmode: type: str - denon_command: tuner.tuningmode - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.tuningmode + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - tuner hd: @@ -679,215 +729,211 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: tuner.hd + denon_read_group_trigger@instance: tuner.hd channel: type: num - denon_command: tuner.hd.channel - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.hd.channel + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - tuner - tuner.hd - denon_read_initial: true + denon_read_initial@instance: true channelup: type: bool - denon_command: tuner.hd.channelup - denon_read: false - denon_write: true + denon_command@instance: tuner.hd.channelup + denon_read@instance: false + denon_write@instance: true channeldown: type: bool - denon_command: tuner.hd.channeldown - denon_read: false - denon_write: true + denon_command@instance: tuner.hd.channeldown + denon_read@instance: false + denon_write@instance: true multicastchannel: type: num - denon_command: tuner.hd.multicastchannel - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.hd.multicastchannel + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - tuner - tuner.hd presetmemory: type: num - denon_command: tuner.hd.presetmemory - denon_read: true - denon_write: true + denon_command@instance: tuner.hd.presetmemory + denon_read@instance: true + denon_write@instance: true preset: type: num - denon_command: tuner.hd.preset - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.hd.preset + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - tuner - tuner.hd presetup: type: bool - denon_command: tuner.hd.presetup - denon_read: false - denon_write: true + denon_command@instance: tuner.hd.presetup + denon_read@instance: false + denon_write@instance: true presetdown: type: bool - denon_command: tuner.hd.presetdown - denon_read: false - denon_write: true + denon_command@instance: tuner.hd.presetdown + denon_read@instance: false + denon_write@instance: true band: type: str - denon_command: tuner.hd.band - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.hd.band + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - tuner - tuner.hd - denon_read_initial: true + denon_read_initial@instance: true zone1: read: type: bool enforce_updates: true - denon_read_group_trigger: zone1 + denon_read_group_trigger@instance: zone1 control: read: type: bool enforce_updates: true - denon_read_group_trigger: zone1.control + denon_read_group_trigger@instance: zone1.control power: type: bool - denon_command: zone1.control.power - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.power + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.control - denon_read_initial: true + denon_read_initial@instance: true mute: type: bool - denon_command: zone1.control.mute - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.mute + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.control - denon_read_initial: true + denon_read_initial@instance: true volume: type: num - denon_command: zone1.control.volume - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.volume + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.control - denon_read_initial: true + denon_read_initial@instance: true volumeup: type: bool - denon_command: zone1.control.volumeup - denon_read: false - denon_write: true + denon_command@instance: zone1.control.volumeup + denon_read@instance: false + denon_write@instance: true volumedown: type: bool - denon_command: zone1.control.volumedown - denon_read: false - denon_write: true + denon_command@instance: zone1.control.volumedown + denon_read@instance: false + denon_write@instance: true volumemax: type: num - denon_command: zone1.control.volumemax - denon_read: true - denon_write: false - denon_read_group: - - zone1 - - zone1.control - denon_read_initial: true + denon_command@instance: zone1.control.volumemax + denon_read@instance: true + denon_write@instance: false input: type: str - denon_command: zone1.control.input - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.input + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.control - denon_read_initial: true + denon_read_initial@instance: true on_change: - .custom_name = '' if sh.....general.custom_inputnames() == {} else sh.....general.custom_inputnames()[value] custom_name: type: str - on_change: .. = '' if sh......general.custom_inputnames.reverse() == {} else sh......general.custom_inputnames.reverse()[value] + on_change: sh...(sh......general.custom_inputnames.reverse()[value]) if sh......general.custom_inputnames.reverse() != {} else None listeningmode: type: str - denon_command: zone1.control.listeningmode - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.listeningmode + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.control - denon_read_initial: true + denon_read_initial@instance: true sleep: type: num - denon_command: zone1.control.sleep - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.sleep + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.control - denon_read_initial: true + denon_read_initial@instance: true standby: type: num - denon_command: zone1.control.standby - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.standby + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.control - denon_read_initial: true + denon_read_initial@instance: true settings: read: type: bool enforce_updates: true - denon_read_group_trigger: zone1.settings + denon_read_group_trigger@instance: zone1.settings sound: read: type: bool enforce_updates: true - denon_read_group_trigger: zone1.settings.sound + denon_read_group_trigger@instance: zone1.settings.sound channel_level: read: type: bool enforce_updates: true - denon_read_group_trigger: zone1.settings.sound.channel_level + denon_read_group_trigger@instance: zone1.settings.sound.channel_level front_left: type: num - denon_command: zone1.settings.sound.channel_level.front_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -895,10 +941,10 @@ item_structs: front_right: type: num - denon_command: zone1.settings.sound.channel_level.front_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -906,10 +952,10 @@ item_structs: front_height_left: type: num - denon_command: zone1.settings.sound.channel_level.front_height_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_height_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -917,10 +963,10 @@ item_structs: front_height_right: type: num - denon_command: zone1.settings.sound.channel_level.front_height_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_height_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -928,10 +974,10 @@ item_structs: front_center: type: num - denon_command: zone1.settings.sound.channel_level.front_center - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_center + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -939,10 +985,10 @@ item_structs: surround_left: type: num - denon_command: zone1.settings.sound.channel_level.surround_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.surround_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -950,10 +996,10 @@ item_structs: surround_right: type: num - denon_command: zone1.settings.sound.channel_level.surround_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.surround_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -961,10 +1007,10 @@ item_structs: surroundback_left: type: num - denon_command: zone1.settings.sound.channel_level.surroundback_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.surroundback_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -972,10 +1018,10 @@ item_structs: surroundback_right: type: num - denon_command: zone1.settings.sound.channel_level.surroundback_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.surroundback_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -983,10 +1029,10 @@ item_structs: rear_height_left: type: num - denon_command: zone1.settings.sound.channel_level.rear_height_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.rear_height_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -994,10 +1040,10 @@ item_structs: rear_height_right: type: num - denon_command: zone1.settings.sound.channel_level.rear_height_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.rear_height_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -1005,10 +1051,10 @@ item_structs: subwoofer: type: num - denon_command: zone1.settings.sound.channel_level.subwoofer - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.subwoofer + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -1016,10 +1062,10 @@ item_structs: subwoofer2: type: num - denon_command: zone1.settings.sound.channel_level.subwoofer2 - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.subwoofer2 + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -1030,14 +1076,14 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: zone1.settings.sound.tone_control + denon_read_group_trigger@instance: zone1.settings.sound.tone_control tone: type: bool - denon_command: zone1.settings.sound.tone_control.tone - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.tone_control.tone + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -1045,10 +1091,10 @@ item_structs: treble: type: num - denon_command: zone1.settings.sound.tone_control.treble - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.tone_control.treble + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -1056,22 +1102,22 @@ item_structs: trebleup: type: bool - denon_command: zone1.settings.sound.tone_control.trebleup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.tone_control.trebleup + denon_read@instance: false + denon_write@instance: true trebledown: type: bool - denon_command: zone1.settings.sound.tone_control.trebledown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.tone_control.trebledown + denon_read@instance: false + denon_write@instance: true bass: type: num - denon_command: zone1.settings.sound.tone_control.bass - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.tone_control.bass + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -1079,29 +1125,29 @@ item_structs: bassup: type: bool - denon_command: zone1.settings.sound.tone_control.bassup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.tone_control.bassup + denon_read@instance: false + denon_write@instance: true bassdown: type: bool - denon_command: zone1.settings.sound.tone_control.bassdown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.tone_control.bassdown + denon_read@instance: false + denon_write@instance: true general: read: type: bool enforce_updates: true - denon_read_group_trigger: zone1.settings.sound.general + denon_read_group_trigger@instance: zone1.settings.sound.general cinema_eq: type: bool - denon_command: zone1.settings.sound.general.cinema_eq - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.cinema_eq + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -1109,10 +1155,10 @@ item_structs: dynamic_eq: type: bool - denon_command: zone1.settings.sound.general.dynamic_eq - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.dynamic_eq + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -1120,10 +1166,10 @@ item_structs: multeq: type: bool - denon_command: zone1.settings.sound.general.multeq - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.multeq + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -1131,10 +1177,10 @@ item_structs: dynamic_vol: type: bool - denon_command: zone1.settings.sound.general.dynamic_vol - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.dynamic_vol + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -1142,10 +1188,10 @@ item_structs: speakersetup: type: str - denon_command: zone1.settings.sound.general.speakersetup - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.speakersetup + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -1153,10 +1199,10 @@ item_structs: hdmiaudioout: type: str - denon_command: zone1.settings.sound.general.hdmiaudioout - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.hdmiaudioout + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -1164,10 +1210,10 @@ item_structs: dynamicrange: type: num - denon_command: zone1.settings.sound.general.dynamicrange - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.dynamicrange + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -1175,10 +1221,10 @@ item_structs: dialogtoggle: type: bool - denon_command: zone1.settings.sound.general.dialogtoggle - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.dialogtoggle + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -1186,10 +1232,10 @@ item_structs: dialog: type: num - denon_command: zone1.settings.sound.general.dialog - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.dialog + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -1197,22 +1243,22 @@ item_structs: dialogup: type: bool - denon_command: zone1.settings.sound.general.dialogup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.dialogup + denon_read@instance: false + denon_write@instance: true dialogdown: type: bool - denon_command: zone1.settings.sound.general.dialogdown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.dialogdown + denon_read@instance: false + denon_write@instance: true dialogenhance: type: num - denon_command: zone1.settings.sound.general.dialogenhance - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.dialogenhance + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -1220,10 +1266,10 @@ item_structs: subwoofertoggle: type: bool - denon_command: zone1.settings.sound.general.subwoofertoggle - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.subwoofertoggle + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -1231,10 +1277,10 @@ item_structs: subwoofer: type: num - denon_command: zone1.settings.sound.general.subwoofer - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.subwoofer + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -1242,22 +1288,22 @@ item_structs: subwooferup: type: bool - denon_command: zone1.settings.sound.general.subwooferup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.subwooferup + denon_read@instance: false + denon_write@instance: true subwooferdown: type: bool - denon_command: zone1.settings.sound.general.subwooferdown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.subwooferdown + denon_read@instance: false + denon_write@instance: true lfe: type: num - denon_command: zone1.settings.sound.general.lfe - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.lfe + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -1265,22 +1311,22 @@ item_structs: lfeup: type: bool - denon_command: zone1.settings.sound.general.lfeup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.lfeup + denon_read@instance: false + denon_write@instance: true lfedown: type: bool - denon_command: zone1.settings.sound.general.lfedown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.lfedown + denon_read@instance: false + denon_write@instance: true digitalinput: type: str - denon_command: zone1.settings.sound.general.digitalinput - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.digitalinput + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -1288,10 +1334,10 @@ item_structs: audioinput: type: str - denon_command: zone1.settings.sound.general.audioinput - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.audioinput + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.sound @@ -1302,74 +1348,74 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: zone1.settings.video + denon_read_group_trigger@instance: zone1.settings.video aspectratio: type: str - denon_command: zone1.settings.video.aspectratio - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.aspectratio + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.video hdmimonitor: type: num - denon_command: zone1.settings.video.hdmimonitor - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.hdmimonitor + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.video hdmiresolution: type: str - denon_command: zone1.settings.video.hdmiresolution - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.hdmiresolution + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.video videoprocessingmode: type: str - denon_command: zone1.settings.video.videoprocessingmode - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.videoprocessingmode + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.video videoresolution: type: str - denon_command: zone1.settings.video.videoresolution - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.videoresolution + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.video pictureenhancer: type: num - denon_command: zone1.settings.video.pictureenhancer - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.pictureenhancer + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.video videoinput: type: str - denon_command: zone1.settings.video.videoinput - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.videoinput + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone1 - zone1.settings - zone1.settings.video @@ -1379,60 +1425,60 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: zone2 + denon_read_group_trigger@instance: zone2 control: read: type: bool enforce_updates: true - denon_read_group_trigger: zone2.control + denon_read_group_trigger@instance: zone2.control power: type: bool - denon_command: zone2.control.power - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.power + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone2 - zone2.control mute: type: bool - denon_command: zone2.control.mute - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.mute + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone2 - zone2.control volume: type: num - denon_command: zone2.control.volume - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.volume + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone2 - zone2.control volumeup: type: bool - denon_command: zone2.control.volumeup - denon_read: false - denon_write: true + denon_command@instance: zone2.control.volumeup + denon_read@instance: false + denon_write@instance: true volumedown: type: bool - denon_command: zone2.control.volumedown - denon_read: false - denon_write: true + denon_command@instance: zone2.control.volumedown + denon_read@instance: false + denon_write@instance: true input: type: str - denon_command: zone2.control.input - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.input + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone2 - zone2.control on_change: @@ -1440,23 +1486,23 @@ item_structs: custom_name: type: str - on_change: .. = '' if sh......general.custom_inputnames.reverse() == {} else sh......general.custom_inputnames.reverse()[value] + on_change: sh...(sh......general.custom_inputnames.reverse()[value]) if sh......general.custom_inputnames.reverse() != {} else None sleep: type: num - denon_command: zone2.control.sleep - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.sleep + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone2 - zone2.control standby: type: num - denon_command: zone2.control.standby - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.standby + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone2 - zone2.control @@ -1465,28 +1511,28 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: zone2.settings + denon_read_group_trigger@instance: zone2.settings sound: read: type: bool enforce_updates: true - denon_read_group_trigger: zone2.settings.sound + denon_read_group_trigger@instance: zone2.settings.sound channel_level: read: type: bool enforce_updates: true - denon_read_group_trigger: zone2.settings.sound.channel_level + denon_read_group_trigger@instance: zone2.settings.sound.channel_level front_left: type: num - denon_command: zone2.settings.sound.channel_level.front_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.settings.sound.channel_level.front_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone2 - zone2.settings - zone2.settings.sound @@ -1494,10 +1540,10 @@ item_structs: front_right: type: num - denon_command: zone2.settings.sound.channel_level.front_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.settings.sound.channel_level.front_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone2 - zone2.settings - zone2.settings.sound @@ -1508,14 +1554,14 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: zone2.settings.sound.tone_control + denon_read_group_trigger@instance: zone2.settings.sound.tone_control treble: type: num - denon_command: zone2.settings.sound.tone_control.treble - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.settings.sound.tone_control.treble + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone2 - zone2.settings - zone2.settings.sound @@ -1523,22 +1569,22 @@ item_structs: trebleup: type: bool - denon_command: zone2.settings.sound.tone_control.trebleup - denon_read: false - denon_write: true + denon_command@instance: zone2.settings.sound.tone_control.trebleup + denon_read@instance: false + denon_write@instance: true trebledown: type: bool - denon_command: zone2.settings.sound.tone_control.trebledown - denon_read: false - denon_write: true + denon_command@instance: zone2.settings.sound.tone_control.trebledown + denon_read@instance: false + denon_write@instance: true bass: type: num - denon_command: zone2.settings.sound.tone_control.bass - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.settings.sound.tone_control.bass + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone2 - zone2.settings - zone2.settings.sound @@ -1546,40 +1592,40 @@ item_structs: bassup: type: bool - denon_command: zone2.settings.sound.tone_control.bassup - denon_read: false - denon_write: true + denon_command@instance: zone2.settings.sound.tone_control.bassup + denon_read@instance: false + denon_write@instance: true bassdown: type: bool - denon_command: zone2.settings.sound.tone_control.bassdown - denon_read: false - denon_write: true + denon_command@instance: zone2.settings.sound.tone_control.bassdown + denon_read@instance: false + denon_write@instance: true general: read: type: bool enforce_updates: true - denon_read_group_trigger: zone2.settings.sound.general + denon_read_group_trigger@instance: zone2.settings.sound.general hdmiout: type: str - denon_command: zone2.settings.sound.general.hdmiout - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.settings.sound.general.hdmiout + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone2 - zone2.settings - zone2.settings.sound - zone2.settings.sound.general - HPF: + hpf: type: bool - denon_command: zone2.settings.sound.general.HPF - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.settings.sound.general.HPF + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone2 - zone2.settings - zone2.settings.sound @@ -1590,78 +1636,78 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: zone3 + denon_read_group_trigger@instance: zone3 control: read: type: bool enforce_updates: true - denon_read_group_trigger: zone3.control + denon_read_group_trigger@instance: zone3.control power: type: bool - denon_command: zone3.control.power - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.control.power + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone3 - zone3.control mute: type: bool - denon_command: zone3.control.mute - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.control.mute + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone3 - zone3.control volume: type: num - denon_command: zone3.control.volume - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.control.volume + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone3 - zone3.control volumeup: type: bool - denon_command: zone3.control.volumeup - denon_read: false - denon_write: true + denon_command@instance: zone3.control.volumeup + denon_read@instance: false + denon_write@instance: true volumedown: type: bool - denon_command: zone3.control.volumedown - denon_read: false - denon_write: true + denon_command@instance: zone3.control.volumedown + denon_read@instance: false + denon_write@instance: true sleep: type: num - denon_command: zone3.control.sleep - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.control.sleep + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone3 - zone3.control standby: type: num - denon_command: zone3.control.standby - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.control.standby + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone3 - zone3.control input: type: str - denon_command: zone3.control.input - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.control.input + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone3 - zone3.control on_change: @@ -1669,35 +1715,35 @@ item_structs: custom_name: type: str - on_change: .. = '' if sh......general.custom_inputnames.reverse() == {} else sh......general.custom_inputnames.reverse()[value] + on_change: sh...(sh......general.custom_inputnames.reverse()[value]) if sh......general.custom_inputnames.reverse() != {} else None settings: read: type: bool enforce_updates: true - denon_read_group_trigger: zone3.settings + denon_read_group_trigger@instance: zone3.settings sound: read: type: bool enforce_updates: true - denon_read_group_trigger: zone3.settings.sound + denon_read_group_trigger@instance: zone3.settings.sound channel_level: read: type: bool enforce_updates: true - denon_read_group_trigger: zone3.settings.sound.channel_level + denon_read_group_trigger@instance: zone3.settings.sound.channel_level front_left: type: num - denon_command: zone3.settings.sound.channel_level.front_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.settings.sound.channel_level.front_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone3 - zone3.settings - zone3.settings.sound @@ -1705,10 +1751,10 @@ item_structs: front_right: type: num - denon_command: zone3.settings.sound.channel_level.front_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.settings.sound.channel_level.front_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone3 - zone3.settings - zone3.settings.sound @@ -1719,14 +1765,14 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: zone3.settings.sound.tone_control + denon_read_group_trigger@instance: zone3.settings.sound.tone_control treble: type: num - denon_command: zone3.settings.sound.tone_control.treble - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.settings.sound.tone_control.treble + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone3 - zone3.settings - zone3.settings.sound @@ -1734,22 +1780,22 @@ item_structs: trebleup: type: bool - denon_command: zone3.settings.sound.tone_control.trebleup - denon_read: false - denon_write: true + denon_command@instance: zone3.settings.sound.tone_control.trebleup + denon_read@instance: false + denon_write@instance: true trebledown: type: bool - denon_command: zone3.settings.sound.tone_control.trebledown - denon_read: false - denon_write: true + denon_command@instance: zone3.settings.sound.tone_control.trebledown + denon_read@instance: false + denon_write@instance: true bass: type: num - denon_command: zone3.settings.sound.tone_control.bass - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.settings.sound.tone_control.bass + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone3 - zone3.settings - zone3.settings.sound @@ -1757,29 +1803,29 @@ item_structs: bassup: type: bool - denon_command: zone3.settings.sound.tone_control.bassup - denon_read: false - denon_write: true + denon_command@instance: zone3.settings.sound.tone_control.bassup + denon_read@instance: false + denon_write@instance: true bassdown: type: bool - denon_command: zone3.settings.sound.tone_control.bassdown - denon_read: false - denon_write: true + denon_command@instance: zone3.settings.sound.tone_control.bassdown + denon_read@instance: false + denon_write@instance: true general: read: type: bool enforce_updates: true - denon_read_group_trigger: zone3.settings.sound.general + denon_read_group_trigger@instance: zone3.settings.sound.general - HPF: + hpf: type: bool - denon_command: zone3.settings.sound.general.HPF - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.settings.sound.general.HPF + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - zone3 - zone3.settings - zone3.settings.sound @@ -1790,21 +1836,21 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: ALL + denon_read_group_trigger@instance: ALL general: read: type: bool enforce_updates: true - denon_read_group_trigger: ALL.general + denon_read_group_trigger@instance: ALL.general custom_inputnames: type: dict - denon_command: general.custom_inputnames - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.custom_inputnames + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - ALL - ALL.general cache: true @@ -1820,84 +1866,84 @@ item_structs: power: type: bool - denon_command: general.power - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: general.power + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.general setupmenu: type: bool - denon_command: general.setupmenu - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: general.setupmenu + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.general soundmode: type: str - denon_command: general.soundmode - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.soundmode + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - ALL - ALL.general - denon_read_initial: true + denon_read_initial@instance: true inputsignal: type: str - denon_command: general.inputsignal - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.inputsignal + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - ALL - ALL.general - denon_read_initial: true + denon_read_initial@instance: true inputrate: type: num - denon_command: general.inputrate - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.inputrate + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - ALL - ALL.general - denon_read_initial: true + denon_read_initial@instance: true inputformat: type: str - denon_command: general.inputformat - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.inputformat + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - ALL - ALL.general - denon_read_initial: true + denon_read_initial@instance: true inputresolution: type: str - denon_command: general.inputresolution - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.inputresolution + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - ALL - ALL.general - denon_read_initial: true + denon_read_initial@instance: true outputresolution: type: str - denon_command: general.outputresolution - denon_read: true - denon_write: false + denon_command@instance: general.outputresolution + denon_read@instance: true + denon_write@instance: false ecomode: type: str - denon_command: general.ecomode - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: general.ecomode + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.general @@ -1906,68 +1952,68 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: ALL.tuner + denon_read_group_trigger@instance: ALL.tuner preset: type: num - denon_command: tuner.preset - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.preset + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.tuner - denon_read_initial: true + denon_read_initial@instance: true presetup: type: bool - denon_command: tuner.presetup - denon_read: false - denon_write: true + denon_command@instance: tuner.presetup + denon_read@instance: false + denon_write@instance: true presetdown: type: bool - denon_command: tuner.presetdown - denon_read: false - denon_write: true + denon_command@instance: tuner.presetdown + denon_read@instance: false + denon_write@instance: true frequency: type: num - denon_command: tuner.frequency - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.frequency + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.tuner - denon_read_initial: true + denon_read_initial@instance: true frequencyup: type: bool - denon_command: tuner.frequencyup - denon_read: false - denon_write: true + denon_command@instance: tuner.frequencyup + denon_read@instance: false + denon_write@instance: true frequencydown: type: bool - denon_command: tuner.frequencydown - denon_read: false - denon_write: true + denon_command@instance: tuner.frequencydown + denon_read@instance: false + denon_write@instance: true band: type: str - denon_command: tuner.band - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.band + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.tuner - denon_read_initial: true + denon_read_initial@instance: true tuningmode: type: str - denon_command: tuner.tuningmode - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.tuningmode + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.tuner @@ -1976,148 +2022,143 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: ALL.zone1 + denon_read_group_trigger@instance: ALL.zone1 control: read: type: bool enforce_updates: true - denon_read_group_trigger: ALL.zone1.control + denon_read_group_trigger@instance: ALL.zone1.control power: type: bool - denon_command: zone1.control.power - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.power + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.control - denon_read_initial: true + denon_read_initial@instance: true mute: type: bool - denon_command: zone1.control.mute - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.mute + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.control - denon_read_initial: true + denon_read_initial@instance: true volume: type: num - denon_command: zone1.control.volume - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.volume + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.control - denon_read_initial: true + denon_read_initial@instance: true volumeup: type: bool - denon_command: zone1.control.volumeup - denon_read: false - denon_write: true + denon_command@instance: zone1.control.volumeup + denon_read@instance: false + denon_write@instance: true volumedown: type: bool - denon_command: zone1.control.volumedown - denon_read: false - denon_write: true + denon_command@instance: zone1.control.volumedown + denon_read@instance: false + denon_write@instance: true volumemax: type: num - denon_command: zone1.control.volumemax - denon_read: true - denon_write: false - denon_read_group: - - ALL - - ALL.zone1 - - ALL.zone1.control - denon_read_initial: true + denon_command@instance: zone1.control.volumemax + denon_read@instance: true + denon_write@instance: false input: type: str - denon_command: zone1.control.input - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.input + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.control - denon_read_initial: true + denon_read_initial@instance: true on_change: - .custom_name = '' if sh.....general.custom_inputnames() == {} else sh.....general.custom_inputnames()[value] custom_name: type: str - on_change: .. = '' if sh......general.custom_inputnames.reverse() == {} else sh......general.custom_inputnames.reverse()[value] + on_change: sh...(sh......general.custom_inputnames.reverse()[value]) if sh......general.custom_inputnames.reverse() != {} else None listeningmode: type: str - denon_command: zone1.control.listeningmode - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.listeningmode + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.control - denon_read_initial: true + denon_read_initial@instance: true sleep: type: num - denon_command: zone1.control.sleep - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.sleep + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.control - denon_read_initial: true + denon_read_initial@instance: true standby: type: num - denon_command: zone1.control.standby - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.standby + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.control - denon_read_initial: true + denon_read_initial@instance: true settings: read: type: bool enforce_updates: true - denon_read_group_trigger: ALL.zone1.settings + denon_read_group_trigger@instance: ALL.zone1.settings sound: read: type: bool enforce_updates: true - denon_read_group_trigger: ALL.zone1.settings.sound + denon_read_group_trigger@instance: ALL.zone1.settings.sound channel_level: read: type: bool enforce_updates: true - denon_read_group_trigger: ALL.zone1.settings.sound.channel_level + denon_read_group_trigger@instance: ALL.zone1.settings.sound.channel_level front_left: type: num - denon_command: zone1.settings.sound.channel_level.front_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.settings @@ -2126,10 +2167,10 @@ item_structs: front_right: type: num - denon_command: zone1.settings.sound.channel_level.front_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.settings @@ -2138,10 +2179,10 @@ item_structs: front_height_left: type: num - denon_command: zone1.settings.sound.channel_level.front_height_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_height_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.settings @@ -2150,10 +2191,10 @@ item_structs: front_height_right: type: num - denon_command: zone1.settings.sound.channel_level.front_height_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_height_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.settings @@ -2162,10 +2203,10 @@ item_structs: front_center: type: num - denon_command: zone1.settings.sound.channel_level.front_center - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_center + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.settings @@ -2174,10 +2215,10 @@ item_structs: surround_left: type: num - denon_command: zone1.settings.sound.channel_level.surround_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.surround_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.settings @@ -2186,10 +2227,10 @@ item_structs: surround_right: type: num - denon_command: zone1.settings.sound.channel_level.surround_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.surround_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.settings @@ -2198,10 +2239,10 @@ item_structs: surroundback_left: type: num - denon_command: zone1.settings.sound.channel_level.surroundback_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.surroundback_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.settings @@ -2210,10 +2251,10 @@ item_structs: surroundback_right: type: num - denon_command: zone1.settings.sound.channel_level.surroundback_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.surroundback_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.settings @@ -2222,10 +2263,10 @@ item_structs: rear_height_left: type: num - denon_command: zone1.settings.sound.channel_level.rear_height_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.rear_height_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.settings @@ -2234,10 +2275,10 @@ item_structs: rear_height_right: type: num - denon_command: zone1.settings.sound.channel_level.rear_height_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.rear_height_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.settings @@ -2246,10 +2287,10 @@ item_structs: subwoofer: type: num - denon_command: zone1.settings.sound.channel_level.subwoofer - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.subwoofer + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.settings @@ -2261,14 +2302,14 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: ALL.zone1.settings.sound.tone_control + denon_read_group_trigger@instance: ALL.zone1.settings.sound.tone_control tone: type: bool - denon_command: zone1.settings.sound.tone_control.tone - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.tone_control.tone + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.settings @@ -2277,10 +2318,10 @@ item_structs: treble: type: num - denon_command: zone1.settings.sound.tone_control.treble - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.tone_control.treble + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.settings @@ -2289,22 +2330,22 @@ item_structs: trebleup: type: bool - denon_command: zone1.settings.sound.tone_control.trebleup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.tone_control.trebleup + denon_read@instance: false + denon_write@instance: true trebledown: type: bool - denon_command: zone1.settings.sound.tone_control.trebledown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.tone_control.trebledown + denon_read@instance: false + denon_write@instance: true bass: type: num - denon_command: zone1.settings.sound.tone_control.bass - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.tone_control.bass + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.settings @@ -2313,29 +2354,29 @@ item_structs: bassup: type: bool - denon_command: zone1.settings.sound.tone_control.bassup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.tone_control.bassup + denon_read@instance: false + denon_write@instance: true bassdown: type: bool - denon_command: zone1.settings.sound.tone_control.bassdown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.tone_control.bassdown + denon_read@instance: false + denon_write@instance: true general: read: type: bool enforce_updates: true - denon_read_group_trigger: ALL.zone1.settings.sound.general + denon_read_group_trigger@instance: ALL.zone1.settings.sound.general cinema_eq: type: bool - denon_command: zone1.settings.sound.general.cinema_eq - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.cinema_eq + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.settings @@ -2344,10 +2385,10 @@ item_structs: hdmiaudioout: type: str - denon_command: zone1.settings.sound.general.hdmiaudioout - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.hdmiaudioout + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.settings @@ -2356,10 +2397,10 @@ item_structs: dynamicrange: type: num - denon_command: zone1.settings.sound.general.dynamicrange - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.dynamicrange + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.settings @@ -2368,10 +2409,10 @@ item_structs: subwoofertoggle: type: bool - denon_command: zone1.settings.sound.general.subwoofertoggle - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.subwoofertoggle + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.settings @@ -2380,10 +2421,10 @@ item_structs: subwoofer: type: num - denon_command: zone1.settings.sound.general.subwoofer - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.subwoofer + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.settings @@ -2392,22 +2433,22 @@ item_structs: subwooferup: type: bool - denon_command: zone1.settings.sound.general.subwooferup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.subwooferup + denon_read@instance: false + denon_write@instance: true subwooferdown: type: bool - denon_command: zone1.settings.sound.general.subwooferdown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.subwooferdown + denon_read@instance: false + denon_write@instance: true lfe: type: num - denon_command: zone1.settings.sound.general.lfe - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.lfe + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.settings @@ -2416,22 +2457,22 @@ item_structs: lfeup: type: bool - denon_command: zone1.settings.sound.general.lfeup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.lfeup + denon_read@instance: false + denon_write@instance: true lfedown: type: bool - denon_command: zone1.settings.sound.general.lfedown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.lfedown + denon_read@instance: false + denon_write@instance: true audioinput: type: str - denon_command: zone1.settings.sound.general.audioinput - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.audioinput + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.settings @@ -2443,63 +2484,63 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: ALL.zone2 + denon_read_group_trigger@instance: ALL.zone2 control: read: type: bool enforce_updates: true - denon_read_group_trigger: ALL.zone2.control + denon_read_group_trigger@instance: ALL.zone2.control power: type: bool - denon_command: zone2.control.power - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.power + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone2 - ALL.zone2.control mute: type: bool - denon_command: zone2.control.mute - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.mute + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone2 - ALL.zone2.control volume: type: num - denon_command: zone2.control.volume - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.volume + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone2 - ALL.zone2.control volumeup: type: bool - denon_command: zone2.control.volumeup - denon_read: false - denon_write: true + denon_command@instance: zone2.control.volumeup + denon_read@instance: false + denon_write@instance: true volumedown: type: bool - denon_command: zone2.control.volumedown - denon_read: false - denon_write: true + denon_command@instance: zone2.control.volumedown + denon_read@instance: false + denon_write@instance: true input: type: str - denon_command: zone2.control.input - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.input + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone2 - ALL.zone2.control @@ -2508,24 +2549,24 @@ item_structs: custom_name: type: str - on_change: .. = '' if sh......general.custom_inputnames.reverse() == {} else sh......general.custom_inputnames.reverse()[value] + on_change: sh...(sh......general.custom_inputnames.reverse()[value]) if sh......general.custom_inputnames.reverse() != {} else None sleep: type: num - denon_command: zone2.control.sleep - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.sleep + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone2 - ALL.zone2.control standby: type: num - denon_command: zone2.control.standby - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.standby + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone2 - ALL.zone2.control @@ -2535,28 +2576,28 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: ALL.zone2.settings + denon_read_group_trigger@instance: ALL.zone2.settings sound: read: type: bool enforce_updates: true - denon_read_group_trigger: ALL.zone2.settings.sound + denon_read_group_trigger@instance: ALL.zone2.settings.sound general: read: type: bool enforce_updates: true - denon_read_group_trigger: ALL.zone2.settings.sound.general + denon_read_group_trigger@instance: ALL.zone2.settings.sound.general hdmiout: type: str - denon_command: zone2.settings.sound.general.hdmiout - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.settings.sound.general.hdmiout + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - ALL - ALL.zone2 - ALL.zone2.settings @@ -2568,256 +2609,256 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X6300H + denon_read_group_trigger@instance: AVR-X6300H info: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X6300H.info + denon_read_group_trigger@instance: AVR-X6300H.info fullmodel: type: str - denon_command: info.fullmodel - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.fullmodel + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.info - denon_read_initial: true + denon_read_initial@instance: true model: type: str - denon_command: info.model - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.model + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.info - denon_read_initial: true + denon_read_initial@instance: true serialnumber: type: num - denon_command: info.serialnumber - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.serialnumber + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.info main: type: str - denon_command: info.main - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.main + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.info mainfbl: type: num - denon_command: info.mainfbl - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.mainfbl + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.info dsp1: type: num - denon_command: info.dsp1 - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.dsp1 + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.info dsp2: type: num - denon_command: info.dsp2 - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.dsp2 + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.info dsp3: type: num - denon_command: info.dsp3 - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.dsp3 + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.info dsp4: type: num - denon_command: info.dsp4 - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.dsp4 + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.info apld: type: num - denon_command: info.apld - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.apld + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.info vpld: type: num - denon_command: info.vpld - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.vpld + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.info guidat: type: num - denon_command: info.guidat - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.guidat + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.info heosversion: type: str - denon_command: info.heosversion - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.heosversion + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.info heosbuild: type: num - denon_command: info.heosbuild - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.heosbuild + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.info heosmod: type: num - denon_command: info.heosmod - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.heosmod + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.info heoscnf: type: str - denon_command: info.heoscnf - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.heoscnf + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.info heoslanguage: type: str - denon_command: info.heoslanguage - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.heoslanguage + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.info mac: type: str - denon_command: info.mac - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.mac + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.info wifimac: type: str - denon_command: info.wifimac - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.wifimac + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.info btmac: type: str - denon_command: info.btmac - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.btmac + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.info audyif: type: num - denon_command: info.audyif - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.audyif + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.info productid: type: num - denon_command: info.productid - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.productid + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.info packageid: type: num - denon_command: info.packageid - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.packageid + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.info cmp: type: str - denon_command: info.cmp - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.cmp + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.info region: type: str - denon_command: info.region - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: info.region + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.info - denon_read_initial: true + denon_read_initial@instance: true general: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X6300H.general + denon_read_group_trigger@instance: AVR-X6300H.general custom_inputnames: type: dict - denon_command: general.custom_inputnames - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.custom_inputnames + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.general cache: true @@ -2833,84 +2874,84 @@ item_structs: power: type: bool - denon_command: general.power - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: general.power + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.general setupmenu: type: bool - denon_command: general.setupmenu - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: general.setupmenu + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.general soundmode: type: str - denon_command: general.soundmode - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.soundmode + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.general - denon_read_initial: true + denon_read_initial@instance: true inputsignal: type: str - denon_command: general.inputsignal - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.inputsignal + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.general - denon_read_initial: true + denon_read_initial@instance: true inputrate: type: num - denon_command: general.inputrate - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.inputrate + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.general - denon_read_initial: true + denon_read_initial@instance: true inputformat: type: str - denon_command: general.inputformat - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.inputformat + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.general - denon_read_initial: true + denon_read_initial@instance: true inputresolution: type: str - denon_command: general.inputresolution - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.inputresolution + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.general - denon_read_initial: true + denon_read_initial@instance: true outputresolution: type: str - denon_command: general.outputresolution - denon_read: true - denon_write: false + denon_command@instance: general.outputresolution + denon_read@instance: true + denon_write@instance: false ecomode: type: str - denon_command: general.ecomode - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: general.ecomode + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.general @@ -2919,68 +2960,68 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X6300H.tuner + denon_read_group_trigger@instance: AVR-X6300H.tuner preset: type: num - denon_command: tuner.preset - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.preset + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.tuner - denon_read_initial: true + denon_read_initial@instance: true presetup: type: bool - denon_command: tuner.presetup - denon_read: false - denon_write: true + denon_command@instance: tuner.presetup + denon_read@instance: false + denon_write@instance: true presetdown: type: bool - denon_command: tuner.presetdown - denon_read: false - denon_write: true + denon_command@instance: tuner.presetdown + denon_read@instance: false + denon_write@instance: true frequency: type: num - denon_command: tuner.frequency - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.frequency + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.tuner - denon_read_initial: true + denon_read_initial@instance: true frequencyup: type: bool - denon_command: tuner.frequencyup - denon_read: false - denon_write: true + denon_command@instance: tuner.frequencyup + denon_read@instance: false + denon_write@instance: true frequencydown: type: bool - denon_command: tuner.frequencydown - denon_read: false - denon_write: true + denon_command@instance: tuner.frequencydown + denon_read@instance: false + denon_write@instance: true band: type: str - denon_command: tuner.band - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.band + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.tuner - denon_read_initial: true + denon_read_initial@instance: true tuningmode: type: str - denon_command: tuner.tuningmode - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.tuningmode + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.tuner @@ -2989,227 +3030,222 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X6300H.tuner.hd + denon_read_group_trigger@instance: AVR-X6300H.tuner.hd channel: type: num - denon_command: tuner.hd.channel - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.hd.channel + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.tuner - AVR-X6300H.tuner.hd - denon_read_initial: true + denon_read_initial@instance: true channelup: type: bool - denon_command: tuner.hd.channelup - denon_read: false - denon_write: true + denon_command@instance: tuner.hd.channelup + denon_read@instance: false + denon_write@instance: true channeldown: type: bool - denon_command: tuner.hd.channeldown - denon_read: false - denon_write: true + denon_command@instance: tuner.hd.channeldown + denon_read@instance: false + denon_write@instance: true multicastchannel: type: num - denon_command: tuner.hd.multicastchannel - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.hd.multicastchannel + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.tuner - AVR-X6300H.tuner.hd presetmemory: type: num - denon_command: tuner.hd.presetmemory - denon_read: true - denon_write: true + denon_command@instance: tuner.hd.presetmemory + denon_read@instance: true + denon_write@instance: true preset: type: num - denon_command: tuner.hd.preset - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.hd.preset + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.tuner - AVR-X6300H.tuner.hd presetup: type: bool - denon_command: tuner.hd.presetup - denon_read: false - denon_write: true + denon_command@instance: tuner.hd.presetup + denon_read@instance: false + denon_write@instance: true presetdown: type: bool - denon_command: tuner.hd.presetdown - denon_read: false - denon_write: true + denon_command@instance: tuner.hd.presetdown + denon_read@instance: false + denon_write@instance: true band: type: str - denon_command: tuner.hd.band - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.hd.band + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.tuner - AVR-X6300H.tuner.hd - denon_read_initial: true + denon_read_initial@instance: true zone1: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X6300H.zone1 + denon_read_group_trigger@instance: AVR-X6300H.zone1 control: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X6300H.zone1.control + denon_read_group_trigger@instance: AVR-X6300H.zone1.control power: type: bool - denon_command: zone1.control.power - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.power + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.control - denon_read_initial: true + denon_read_initial@instance: true mute: type: bool - denon_command: zone1.control.mute - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.mute + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.control - denon_read_initial: true + denon_read_initial@instance: true volume: type: num - denon_command: zone1.control.volume - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.volume + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.control - denon_read_initial: true + denon_read_initial@instance: true volumeup: type: bool - denon_command: zone1.control.volumeup - denon_read: false - denon_write: true + denon_command@instance: zone1.control.volumeup + denon_read@instance: false + denon_write@instance: true volumedown: type: bool - denon_command: zone1.control.volumedown - denon_read: false - denon_write: true + denon_command@instance: zone1.control.volumedown + denon_read@instance: false + denon_write@instance: true volumemax: type: num - denon_command: zone1.control.volumemax - denon_read: true - denon_write: false - denon_read_group: - - AVR-X6300H - - AVR-X6300H.zone1 - - AVR-X6300H.zone1.control - denon_read_initial: true + denon_command@instance: zone1.control.volumemax + denon_read@instance: true + denon_write@instance: false input: type: str - denon_command: zone1.control.input - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.input + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.control - denon_read_initial: true + denon_read_initial@instance: true on_change: - .custom_name = '' if sh.....general.custom_inputnames() == {} else sh.....general.custom_inputnames()[value] custom_name: type: str - on_change: .. = '' if sh......general.custom_inputnames.reverse() == {} else sh......general.custom_inputnames.reverse()[value] + on_change: sh...(sh......general.custom_inputnames.reverse()[value]) if sh......general.custom_inputnames.reverse() != {} else None listeningmode: type: str - denon_command: zone1.control.listeningmode - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.listeningmode + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.control - denon_read_initial: true + denon_read_initial@instance: true sleep: type: num - denon_command: zone1.control.sleep - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.sleep + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.control - denon_read_initial: true + denon_read_initial@instance: true standby: type: num - denon_command: zone1.control.standby - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.standby + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.control - denon_read_initial: true + denon_read_initial@instance: true settings: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X6300H.zone1.settings + denon_read_group_trigger@instance: AVR-X6300H.zone1.settings sound: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X6300H.zone1.settings.sound + denon_read_group_trigger@instance: AVR-X6300H.zone1.settings.sound channel_level: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X6300H.zone1.settings.sound.channel_level + denon_read_group_trigger@instance: AVR-X6300H.zone1.settings.sound.channel_level front_left: type: num - denon_command: zone1.settings.sound.channel_level.front_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3218,10 +3254,10 @@ item_structs: front_right: type: num - denon_command: zone1.settings.sound.channel_level.front_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3230,10 +3266,10 @@ item_structs: front_height_left: type: num - denon_command: zone1.settings.sound.channel_level.front_height_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_height_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3242,10 +3278,10 @@ item_structs: front_height_right: type: num - denon_command: zone1.settings.sound.channel_level.front_height_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_height_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3254,10 +3290,10 @@ item_structs: front_center: type: num - denon_command: zone1.settings.sound.channel_level.front_center - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_center + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3266,10 +3302,10 @@ item_structs: surround_left: type: num - denon_command: zone1.settings.sound.channel_level.surround_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.surround_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3278,10 +3314,10 @@ item_structs: surround_right: type: num - denon_command: zone1.settings.sound.channel_level.surround_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.surround_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3290,10 +3326,10 @@ item_structs: surroundback_left: type: num - denon_command: zone1.settings.sound.channel_level.surroundback_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.surroundback_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3302,10 +3338,10 @@ item_structs: surroundback_right: type: num - denon_command: zone1.settings.sound.channel_level.surroundback_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.surroundback_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3314,10 +3350,10 @@ item_structs: rear_height_left: type: num - denon_command: zone1.settings.sound.channel_level.rear_height_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.rear_height_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3326,10 +3362,10 @@ item_structs: rear_height_right: type: num - denon_command: zone1.settings.sound.channel_level.rear_height_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.rear_height_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3338,10 +3374,10 @@ item_structs: subwoofer: type: num - denon_command: zone1.settings.sound.channel_level.subwoofer - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.subwoofer + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3350,10 +3386,10 @@ item_structs: subwoofer2: type: num - denon_command: zone1.settings.sound.channel_level.subwoofer2 - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.subwoofer2 + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3365,14 +3401,14 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X6300H.zone1.settings.sound.tone_control + denon_read_group_trigger@instance: AVR-X6300H.zone1.settings.sound.tone_control tone: type: bool - denon_command: zone1.settings.sound.tone_control.tone - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.tone_control.tone + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3381,10 +3417,10 @@ item_structs: treble: type: num - denon_command: zone1.settings.sound.tone_control.treble - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.tone_control.treble + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3393,22 +3429,22 @@ item_structs: trebleup: type: bool - denon_command: zone1.settings.sound.tone_control.trebleup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.tone_control.trebleup + denon_read@instance: false + denon_write@instance: true trebledown: type: bool - denon_command: zone1.settings.sound.tone_control.trebledown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.tone_control.trebledown + denon_read@instance: false + denon_write@instance: true bass: type: num - denon_command: zone1.settings.sound.tone_control.bass - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.tone_control.bass + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3417,29 +3453,29 @@ item_structs: bassup: type: bool - denon_command: zone1.settings.sound.tone_control.bassup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.tone_control.bassup + denon_read@instance: false + denon_write@instance: true bassdown: type: bool - denon_command: zone1.settings.sound.tone_control.bassdown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.tone_control.bassdown + denon_read@instance: false + denon_write@instance: true general: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X6300H.zone1.settings.sound.general + denon_read_group_trigger@instance: AVR-X6300H.zone1.settings.sound.general cinema_eq: type: bool - denon_command: zone1.settings.sound.general.cinema_eq - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.cinema_eq + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3448,10 +3484,10 @@ item_structs: speakersetup: type: str - denon_command: zone1.settings.sound.general.speakersetup - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.speakersetup + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3460,10 +3496,10 @@ item_structs: hdmiaudioout: type: str - denon_command: zone1.settings.sound.general.hdmiaudioout - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.hdmiaudioout + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3472,10 +3508,10 @@ item_structs: dynamicrange: type: num - denon_command: zone1.settings.sound.general.dynamicrange - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.dynamicrange + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3484,10 +3520,10 @@ item_structs: dialogenhance: type: num - denon_command: zone1.settings.sound.general.dialogenhance - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.dialogenhance + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3496,10 +3532,10 @@ item_structs: subwoofertoggle: type: bool - denon_command: zone1.settings.sound.general.subwoofertoggle - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.subwoofertoggle + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3508,10 +3544,10 @@ item_structs: subwoofer: type: num - denon_command: zone1.settings.sound.general.subwoofer - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.subwoofer + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3520,22 +3556,22 @@ item_structs: subwooferup: type: bool - denon_command: zone1.settings.sound.general.subwooferup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.subwooferup + denon_read@instance: false + denon_write@instance: true subwooferdown: type: bool - denon_command: zone1.settings.sound.general.subwooferdown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.subwooferdown + denon_read@instance: false + denon_write@instance: true lfe: type: num - denon_command: zone1.settings.sound.general.lfe - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.lfe + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3544,22 +3580,22 @@ item_structs: lfeup: type: bool - denon_command: zone1.settings.sound.general.lfeup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.lfeup + denon_read@instance: false + denon_write@instance: true lfedown: type: bool - denon_command: zone1.settings.sound.general.lfedown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.lfedown + denon_read@instance: false + denon_write@instance: true audioinput: type: str - denon_command: zone1.settings.sound.general.audioinput - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.audioinput + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3571,14 +3607,14 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X6300H.zone1.settings.video + denon_read_group_trigger@instance: AVR-X6300H.zone1.settings.video aspectratio: type: str - denon_command: zone1.settings.video.aspectratio - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.aspectratio + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3586,10 +3622,10 @@ item_structs: hdmimonitor: type: num - denon_command: zone1.settings.video.hdmimonitor - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.hdmimonitor + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3597,10 +3633,10 @@ item_structs: hdmiresolution: type: str - denon_command: zone1.settings.video.hdmiresolution - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.hdmiresolution + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3608,10 +3644,10 @@ item_structs: videoprocessingmode: type: str - denon_command: zone1.settings.video.videoprocessingmode - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.videoprocessingmode + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3619,10 +3655,10 @@ item_structs: videoresolution: type: str - denon_command: zone1.settings.video.videoresolution - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.videoresolution + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3630,10 +3666,10 @@ item_structs: pictureenhancer: type: num - denon_command: zone1.settings.video.pictureenhancer - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.pictureenhancer + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3641,10 +3677,10 @@ item_structs: videoinput: type: str - denon_command: zone1.settings.video.videoinput - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.videoinput + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.settings @@ -3655,63 +3691,63 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X6300H.zone2 + denon_read_group_trigger@instance: AVR-X6300H.zone2 control: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X6300H.zone2.control + denon_read_group_trigger@instance: AVR-X6300H.zone2.control power: type: bool - denon_command: zone2.control.power - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.power + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone2 - AVR-X6300H.zone2.control mute: type: bool - denon_command: zone2.control.mute - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.mute + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone2 - AVR-X6300H.zone2.control volume: type: num - denon_command: zone2.control.volume - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.volume + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone2 - AVR-X6300H.zone2.control volumeup: type: bool - denon_command: zone2.control.volumeup - denon_read: false - denon_write: true + denon_command@instance: zone2.control.volumeup + denon_read@instance: false + denon_write@instance: true volumedown: type: bool - denon_command: zone2.control.volumedown - denon_read: false - denon_write: true + denon_command@instance: zone2.control.volumedown + denon_read@instance: false + denon_write@instance: true input: type: str - denon_command: zone2.control.input - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.input + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone2 - AVR-X6300H.zone2.control @@ -3720,24 +3756,24 @@ item_structs: custom_name: type: str - on_change: .. = '' if sh......general.custom_inputnames.reverse() == {} else sh......general.custom_inputnames.reverse()[value] + on_change: sh...(sh......general.custom_inputnames.reverse()[value]) if sh......general.custom_inputnames.reverse() != {} else None sleep: type: num - denon_command: zone2.control.sleep - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.sleep + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone2 - AVR-X6300H.zone2.control standby: type: num - denon_command: zone2.control.standby - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.standby + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone2 - AVR-X6300H.zone2.control @@ -3747,28 +3783,28 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X6300H.zone2.settings + denon_read_group_trigger@instance: AVR-X6300H.zone2.settings sound: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X6300H.zone2.settings.sound + denon_read_group_trigger@instance: AVR-X6300H.zone2.settings.sound channel_level: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X6300H.zone2.settings.sound.channel_level + denon_read_group_trigger@instance: AVR-X6300H.zone2.settings.sound.channel_level front_left: type: num - denon_command: zone2.settings.sound.channel_level.front_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.settings.sound.channel_level.front_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone2 - AVR-X6300H.zone2.settings @@ -3777,10 +3813,10 @@ item_structs: front_right: type: num - denon_command: zone2.settings.sound.channel_level.front_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.settings.sound.channel_level.front_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone2 - AVR-X6300H.zone2.settings @@ -3792,14 +3828,14 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X6300H.zone2.settings.sound.tone_control + denon_read_group_trigger@instance: AVR-X6300H.zone2.settings.sound.tone_control treble: type: num - denon_command: zone2.settings.sound.tone_control.treble - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.settings.sound.tone_control.treble + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone2 - AVR-X6300H.zone2.settings @@ -3808,22 +3844,22 @@ item_structs: trebleup: type: bool - denon_command: zone2.settings.sound.tone_control.trebleup - denon_read: false - denon_write: true + denon_command@instance: zone2.settings.sound.tone_control.trebleup + denon_read@instance: false + denon_write@instance: true trebledown: type: bool - denon_command: zone2.settings.sound.tone_control.trebledown - denon_read: false - denon_write: true + denon_command@instance: zone2.settings.sound.tone_control.trebledown + denon_read@instance: false + denon_write@instance: true bass: type: num - denon_command: zone2.settings.sound.tone_control.bass - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.settings.sound.tone_control.bass + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone2 - AVR-X6300H.zone2.settings @@ -3832,41 +3868,41 @@ item_structs: bassup: type: bool - denon_command: zone2.settings.sound.tone_control.bassup - denon_read: false - denon_write: true + denon_command@instance: zone2.settings.sound.tone_control.bassup + denon_read@instance: false + denon_write@instance: true bassdown: type: bool - denon_command: zone2.settings.sound.tone_control.bassdown - denon_read: false - denon_write: true + denon_command@instance: zone2.settings.sound.tone_control.bassdown + denon_read@instance: false + denon_write@instance: true general: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X6300H.zone2.settings.sound.general + denon_read_group_trigger@instance: AVR-X6300H.zone2.settings.sound.general hdmiout: type: str - denon_command: zone2.settings.sound.general.hdmiout - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.settings.sound.general.hdmiout + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone2 - AVR-X6300H.zone2.settings - AVR-X6300H.zone2.settings.sound - AVR-X6300H.zone2.settings.sound.general - HPF: + hpf: type: bool - denon_command: zone2.settings.sound.general.HPF - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.settings.sound.general.HPF + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone2 - AVR-X6300H.zone2.settings @@ -3878,83 +3914,83 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X6300H.zone3 + denon_read_group_trigger@instance: AVR-X6300H.zone3 control: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X6300H.zone3.control + denon_read_group_trigger@instance: AVR-X6300H.zone3.control power: type: bool - denon_command: zone3.control.power - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.control.power + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone3 - AVR-X6300H.zone3.control mute: type: bool - denon_command: zone3.control.mute - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.control.mute + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone3 - AVR-X6300H.zone3.control volume: type: num - denon_command: zone3.control.volume - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.control.volume + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone3 - AVR-X6300H.zone3.control volumeup: type: bool - denon_command: zone3.control.volumeup - denon_read: false - denon_write: true + denon_command@instance: zone3.control.volumeup + denon_read@instance: false + denon_write@instance: true volumedown: type: bool - denon_command: zone3.control.volumedown - denon_read: false - denon_write: true + denon_command@instance: zone3.control.volumedown + denon_read@instance: false + denon_write@instance: true sleep: type: num - denon_command: zone3.control.sleep - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.control.sleep + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone3 - AVR-X6300H.zone3.control standby: type: num - denon_command: zone3.control.standby - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.control.standby + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone3 - AVR-X6300H.zone3.control input: type: str - denon_command: zone3.control.input - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.control.input + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone3 - AVR-X6300H.zone3.control @@ -3963,35 +3999,35 @@ item_structs: custom_name: type: str - on_change: .. = '' if sh......general.custom_inputnames.reverse() == {} else sh......general.custom_inputnames.reverse()[value] + on_change: sh...(sh......general.custom_inputnames.reverse()[value]) if sh......general.custom_inputnames.reverse() != {} else None settings: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X6300H.zone3.settings + denon_read_group_trigger@instance: AVR-X6300H.zone3.settings sound: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X6300H.zone3.settings.sound + denon_read_group_trigger@instance: AVR-X6300H.zone3.settings.sound channel_level: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X6300H.zone3.settings.sound.channel_level + denon_read_group_trigger@instance: AVR-X6300H.zone3.settings.sound.channel_level front_left: type: num - denon_command: zone3.settings.sound.channel_level.front_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.settings.sound.channel_level.front_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone3 - AVR-X6300H.zone3.settings @@ -4000,10 +4036,10 @@ item_structs: front_right: type: num - denon_command: zone3.settings.sound.channel_level.front_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.settings.sound.channel_level.front_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone3 - AVR-X6300H.zone3.settings @@ -4015,14 +4051,14 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X6300H.zone3.settings.sound.tone_control + denon_read_group_trigger@instance: AVR-X6300H.zone3.settings.sound.tone_control treble: type: num - denon_command: zone3.settings.sound.tone_control.treble - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.settings.sound.tone_control.treble + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone3 - AVR-X6300H.zone3.settings @@ -4031,22 +4067,22 @@ item_structs: trebleup: type: bool - denon_command: zone3.settings.sound.tone_control.trebleup - denon_read: false - denon_write: true + denon_command@instance: zone3.settings.sound.tone_control.trebleup + denon_read@instance: false + denon_write@instance: true trebledown: type: bool - denon_command: zone3.settings.sound.tone_control.trebledown - denon_read: false - denon_write: true + denon_command@instance: zone3.settings.sound.tone_control.trebledown + denon_read@instance: false + denon_write@instance: true bass: type: num - denon_command: zone3.settings.sound.tone_control.bass - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.settings.sound.tone_control.bass + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone3 - AVR-X6300H.zone3.settings @@ -4055,29 +4091,29 @@ item_structs: bassup: type: bool - denon_command: zone3.settings.sound.tone_control.bassup - denon_read: false - denon_write: true + denon_command@instance: zone3.settings.sound.tone_control.bassup + denon_read@instance: false + denon_write@instance: true bassdown: type: bool - denon_command: zone3.settings.sound.tone_control.bassdown - denon_read: false - denon_write: true + denon_command@instance: zone3.settings.sound.tone_control.bassdown + denon_read@instance: false + denon_write@instance: true general: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X6300H.zone3.settings.sound.general + denon_read_group_trigger@instance: AVR-X6300H.zone3.settings.sound.general - HPF: + hpf: type: bool - denon_command: zone3.settings.sound.general.HPF - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.settings.sound.general.HPF + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone3 - AVR-X6300H.zone3.settings @@ -4089,21 +4125,21 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X4300H + denon_read_group_trigger@instance: AVR-X4300H general: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X4300H.general + denon_read_group_trigger@instance: AVR-X4300H.general custom_inputnames: type: dict - denon_command: general.custom_inputnames - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.custom_inputnames + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.general cache: true @@ -4119,84 +4155,84 @@ item_structs: power: type: bool - denon_command: general.power - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: general.power + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.general setupmenu: type: bool - denon_command: general.setupmenu - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: general.setupmenu + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.general soundmode: type: str - denon_command: general.soundmode - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.soundmode + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.general - denon_read_initial: true + denon_read_initial@instance: true inputsignal: type: str - denon_command: general.inputsignal - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.inputsignal + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.general - denon_read_initial: true + denon_read_initial@instance: true inputrate: type: num - denon_command: general.inputrate - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.inputrate + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.general - denon_read_initial: true + denon_read_initial@instance: true inputformat: type: str - denon_command: general.inputformat - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.inputformat + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.general - denon_read_initial: true + denon_read_initial@instance: true inputresolution: type: str - denon_command: general.inputresolution - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.inputresolution + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.general - denon_read_initial: true + denon_read_initial@instance: true outputresolution: type: str - denon_command: general.outputresolution - denon_read: true - denon_write: false + denon_command@instance: general.outputresolution + denon_read@instance: true + denon_write@instance: false ecomode: type: str - denon_command: general.ecomode - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: general.ecomode + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.general @@ -4205,68 +4241,68 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X4300H.tuner + denon_read_group_trigger@instance: AVR-X4300H.tuner preset: type: num - denon_command: tuner.preset - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.preset + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.tuner - denon_read_initial: true + denon_read_initial@instance: true presetup: type: bool - denon_command: tuner.presetup - denon_read: false - denon_write: true + denon_command@instance: tuner.presetup + denon_read@instance: false + denon_write@instance: true presetdown: type: bool - denon_command: tuner.presetdown - denon_read: false - denon_write: true + denon_command@instance: tuner.presetdown + denon_read@instance: false + denon_write@instance: true frequency: type: num - denon_command: tuner.frequency - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.frequency + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.tuner - denon_read_initial: true + denon_read_initial@instance: true frequencyup: type: bool - denon_command: tuner.frequencyup - denon_read: false - denon_write: true + denon_command@instance: tuner.frequencyup + denon_read@instance: false + denon_write@instance: true frequencydown: type: bool - denon_command: tuner.frequencydown - denon_read: false - denon_write: true + denon_command@instance: tuner.frequencydown + denon_read@instance: false + denon_write@instance: true band: type: str - denon_command: tuner.band - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.band + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.tuner - denon_read_initial: true + denon_read_initial@instance: true tuningmode: type: str - denon_command: tuner.tuningmode - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.tuningmode + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.tuner @@ -4275,148 +4311,143 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X4300H.zone1 + denon_read_group_trigger@instance: AVR-X4300H.zone1 control: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X4300H.zone1.control + denon_read_group_trigger@instance: AVR-X4300H.zone1.control power: type: bool - denon_command: zone1.control.power - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.power + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.control - denon_read_initial: true + denon_read_initial@instance: true mute: type: bool - denon_command: zone1.control.mute - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.mute + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.control - denon_read_initial: true + denon_read_initial@instance: true volume: type: num - denon_command: zone1.control.volume - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.volume + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.control - denon_read_initial: true + denon_read_initial@instance: true volumeup: type: bool - denon_command: zone1.control.volumeup - denon_read: false - denon_write: true + denon_command@instance: zone1.control.volumeup + denon_read@instance: false + denon_write@instance: true volumedown: type: bool - denon_command: zone1.control.volumedown - denon_read: false - denon_write: true + denon_command@instance: zone1.control.volumedown + denon_read@instance: false + denon_write@instance: true volumemax: type: num - denon_command: zone1.control.volumemax - denon_read: true - denon_write: false - denon_read_group: - - AVR-X4300H - - AVR-X4300H.zone1 - - AVR-X4300H.zone1.control - denon_read_initial: true + denon_command@instance: zone1.control.volumemax + denon_read@instance: true + denon_write@instance: false input: type: str - denon_command: zone1.control.input - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.input + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.control - denon_read_initial: true + denon_read_initial@instance: true on_change: - .custom_name = '' if sh.....general.custom_inputnames() == {} else sh.....general.custom_inputnames()[value] custom_name: type: str - on_change: .. = '' if sh......general.custom_inputnames.reverse() == {} else sh......general.custom_inputnames.reverse()[value] + on_change: sh...(sh......general.custom_inputnames.reverse()[value]) if sh......general.custom_inputnames.reverse() != {} else None listeningmode: type: str - denon_command: zone1.control.listeningmode - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.listeningmode + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.control - denon_read_initial: true + denon_read_initial@instance: true sleep: type: num - denon_command: zone1.control.sleep - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.sleep + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.control - denon_read_initial: true + denon_read_initial@instance: true standby: type: num - denon_command: zone1.control.standby - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.standby + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.control - denon_read_initial: true + denon_read_initial@instance: true settings: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X4300H.zone1.settings + denon_read_group_trigger@instance: AVR-X4300H.zone1.settings sound: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X4300H.zone1.settings.sound + denon_read_group_trigger@instance: AVR-X4300H.zone1.settings.sound channel_level: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X4300H.zone1.settings.sound.channel_level + denon_read_group_trigger@instance: AVR-X4300H.zone1.settings.sound.channel_level front_left: type: num - denon_command: zone1.settings.sound.channel_level.front_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4425,10 +4456,10 @@ item_structs: front_right: type: num - denon_command: zone1.settings.sound.channel_level.front_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4437,10 +4468,10 @@ item_structs: front_height_left: type: num - denon_command: zone1.settings.sound.channel_level.front_height_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_height_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4449,10 +4480,10 @@ item_structs: front_height_right: type: num - denon_command: zone1.settings.sound.channel_level.front_height_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_height_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4461,10 +4492,10 @@ item_structs: front_center: type: num - denon_command: zone1.settings.sound.channel_level.front_center - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_center + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4473,10 +4504,10 @@ item_structs: surround_left: type: num - denon_command: zone1.settings.sound.channel_level.surround_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.surround_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4485,10 +4516,10 @@ item_structs: surround_right: type: num - denon_command: zone1.settings.sound.channel_level.surround_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.surround_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4497,10 +4528,10 @@ item_structs: surroundback_left: type: num - denon_command: zone1.settings.sound.channel_level.surroundback_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.surroundback_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4509,10 +4540,10 @@ item_structs: surroundback_right: type: num - denon_command: zone1.settings.sound.channel_level.surroundback_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.surroundback_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4521,10 +4552,10 @@ item_structs: rear_height_left: type: num - denon_command: zone1.settings.sound.channel_level.rear_height_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.rear_height_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4533,10 +4564,10 @@ item_structs: rear_height_right: type: num - denon_command: zone1.settings.sound.channel_level.rear_height_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.rear_height_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4545,10 +4576,10 @@ item_structs: subwoofer: type: num - denon_command: zone1.settings.sound.channel_level.subwoofer - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.subwoofer + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4557,10 +4588,10 @@ item_structs: subwoofer2: type: num - denon_command: zone1.settings.sound.channel_level.subwoofer2 - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.subwoofer2 + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4572,14 +4603,14 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X4300H.zone1.settings.sound.tone_control + denon_read_group_trigger@instance: AVR-X4300H.zone1.settings.sound.tone_control tone: type: bool - denon_command: zone1.settings.sound.tone_control.tone - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.tone_control.tone + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4588,10 +4619,10 @@ item_structs: treble: type: num - denon_command: zone1.settings.sound.tone_control.treble - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.tone_control.treble + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4600,22 +4631,22 @@ item_structs: trebleup: type: bool - denon_command: zone1.settings.sound.tone_control.trebleup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.tone_control.trebleup + denon_read@instance: false + denon_write@instance: true trebledown: type: bool - denon_command: zone1.settings.sound.tone_control.trebledown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.tone_control.trebledown + denon_read@instance: false + denon_write@instance: true bass: type: num - denon_command: zone1.settings.sound.tone_control.bass - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.tone_control.bass + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4624,29 +4655,29 @@ item_structs: bassup: type: bool - denon_command: zone1.settings.sound.tone_control.bassup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.tone_control.bassup + denon_read@instance: false + denon_write@instance: true bassdown: type: bool - denon_command: zone1.settings.sound.tone_control.bassdown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.tone_control.bassdown + denon_read@instance: false + denon_write@instance: true general: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X4300H.zone1.settings.sound.general + denon_read_group_trigger@instance: AVR-X4300H.zone1.settings.sound.general cinema_eq: type: bool - denon_command: zone1.settings.sound.general.cinema_eq - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.cinema_eq + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4655,10 +4686,10 @@ item_structs: speakersetup: type: str - denon_command: zone1.settings.sound.general.speakersetup - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.speakersetup + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4667,10 +4698,10 @@ item_structs: hdmiaudioout: type: str - denon_command: zone1.settings.sound.general.hdmiaudioout - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.hdmiaudioout + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4679,10 +4710,10 @@ item_structs: dynamicrange: type: num - denon_command: zone1.settings.sound.general.dynamicrange - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.dynamicrange + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4691,10 +4722,10 @@ item_structs: dialogtoggle: type: bool - denon_command: zone1.settings.sound.general.dialogtoggle - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.dialogtoggle + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4703,10 +4734,10 @@ item_structs: dialog: type: num - denon_command: zone1.settings.sound.general.dialog - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.dialog + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4715,22 +4746,22 @@ item_structs: dialogup: type: bool - denon_command: zone1.settings.sound.general.dialogup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.dialogup + denon_read@instance: false + denon_write@instance: true dialogdown: type: bool - denon_command: zone1.settings.sound.general.dialogdown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.dialogdown + denon_read@instance: false + denon_write@instance: true subwoofertoggle: type: bool - denon_command: zone1.settings.sound.general.subwoofertoggle - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.subwoofertoggle + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4739,10 +4770,10 @@ item_structs: subwoofer: type: num - denon_command: zone1.settings.sound.general.subwoofer - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.subwoofer + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4751,22 +4782,22 @@ item_structs: subwooferup: type: bool - denon_command: zone1.settings.sound.general.subwooferup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.subwooferup + denon_read@instance: false + denon_write@instance: true subwooferdown: type: bool - denon_command: zone1.settings.sound.general.subwooferdown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.subwooferdown + denon_read@instance: false + denon_write@instance: true lfe: type: num - denon_command: zone1.settings.sound.general.lfe - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.lfe + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4775,22 +4806,22 @@ item_structs: lfeup: type: bool - denon_command: zone1.settings.sound.general.lfeup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.lfeup + denon_read@instance: false + denon_write@instance: true lfedown: type: bool - denon_command: zone1.settings.sound.general.lfedown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.lfedown + denon_read@instance: false + denon_write@instance: true audioinput: type: str - denon_command: zone1.settings.sound.general.audioinput - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.audioinput + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4802,14 +4833,14 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X4300H.zone1.settings.video + denon_read_group_trigger@instance: AVR-X4300H.zone1.settings.video aspectratio: type: str - denon_command: zone1.settings.video.aspectratio - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.aspectratio + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4817,10 +4848,10 @@ item_structs: hdmimonitor: type: num - denon_command: zone1.settings.video.hdmimonitor - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.hdmimonitor + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4828,10 +4859,10 @@ item_structs: hdmiresolution: type: str - denon_command: zone1.settings.video.hdmiresolution - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.hdmiresolution + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4839,10 +4870,10 @@ item_structs: videoprocessingmode: type: str - denon_command: zone1.settings.video.videoprocessingmode - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.videoprocessingmode + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4850,10 +4881,10 @@ item_structs: videoresolution: type: str - denon_command: zone1.settings.video.videoresolution - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.videoresolution + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4861,10 +4892,10 @@ item_structs: pictureenhancer: type: num - denon_command: zone1.settings.video.pictureenhancer - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.pictureenhancer + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4872,10 +4903,10 @@ item_structs: videoinput: type: str - denon_command: zone1.settings.video.videoinput - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.videoinput + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.settings @@ -4886,63 +4917,63 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X4300H.zone2 + denon_read_group_trigger@instance: AVR-X4300H.zone2 control: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X4300H.zone2.control + denon_read_group_trigger@instance: AVR-X4300H.zone2.control power: type: bool - denon_command: zone2.control.power - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.power + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone2 - AVR-X4300H.zone2.control mute: type: bool - denon_command: zone2.control.mute - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.mute + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone2 - AVR-X4300H.zone2.control volume: type: num - denon_command: zone2.control.volume - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.volume + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone2 - AVR-X4300H.zone2.control volumeup: type: bool - denon_command: zone2.control.volumeup - denon_read: false - denon_write: true + denon_command@instance: zone2.control.volumeup + denon_read@instance: false + denon_write@instance: true volumedown: type: bool - denon_command: zone2.control.volumedown - denon_read: false - denon_write: true + denon_command@instance: zone2.control.volumedown + denon_read@instance: false + denon_write@instance: true input: type: str - denon_command: zone2.control.input - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.input + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone2 - AVR-X4300H.zone2.control @@ -4951,24 +4982,24 @@ item_structs: custom_name: type: str - on_change: .. = '' if sh......general.custom_inputnames.reverse() == {} else sh......general.custom_inputnames.reverse()[value] + on_change: sh...(sh......general.custom_inputnames.reverse()[value]) if sh......general.custom_inputnames.reverse() != {} else None sleep: type: num - denon_command: zone2.control.sleep - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.sleep + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone2 - AVR-X4300H.zone2.control standby: type: num - denon_command: zone2.control.standby - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.standby + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone2 - AVR-X4300H.zone2.control @@ -4978,28 +5009,28 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X4300H.zone2.settings + denon_read_group_trigger@instance: AVR-X4300H.zone2.settings sound: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X4300H.zone2.settings.sound + denon_read_group_trigger@instance: AVR-X4300H.zone2.settings.sound channel_level: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X4300H.zone2.settings.sound.channel_level + denon_read_group_trigger@instance: AVR-X4300H.zone2.settings.sound.channel_level front_left: type: num - denon_command: zone2.settings.sound.channel_level.front_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.settings.sound.channel_level.front_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone2 - AVR-X4300H.zone2.settings @@ -5008,10 +5039,10 @@ item_structs: front_right: type: num - denon_command: zone2.settings.sound.channel_level.front_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.settings.sound.channel_level.front_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone2 - AVR-X4300H.zone2.settings @@ -5023,14 +5054,14 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X4300H.zone2.settings.sound.tone_control + denon_read_group_trigger@instance: AVR-X4300H.zone2.settings.sound.tone_control treble: type: num - denon_command: zone2.settings.sound.tone_control.treble - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.settings.sound.tone_control.treble + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone2 - AVR-X4300H.zone2.settings @@ -5039,22 +5070,22 @@ item_structs: trebleup: type: bool - denon_command: zone2.settings.sound.tone_control.trebleup - denon_read: false - denon_write: true + denon_command@instance: zone2.settings.sound.tone_control.trebleup + denon_read@instance: false + denon_write@instance: true trebledown: type: bool - denon_command: zone2.settings.sound.tone_control.trebledown - denon_read: false - denon_write: true + denon_command@instance: zone2.settings.sound.tone_control.trebledown + denon_read@instance: false + denon_write@instance: true bass: type: num - denon_command: zone2.settings.sound.tone_control.bass - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.settings.sound.tone_control.bass + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone2 - AVR-X4300H.zone2.settings @@ -5063,41 +5094,41 @@ item_structs: bassup: type: bool - denon_command: zone2.settings.sound.tone_control.bassup - denon_read: false - denon_write: true + denon_command@instance: zone2.settings.sound.tone_control.bassup + denon_read@instance: false + denon_write@instance: true bassdown: type: bool - denon_command: zone2.settings.sound.tone_control.bassdown - denon_read: false - denon_write: true + denon_command@instance: zone2.settings.sound.tone_control.bassdown + denon_read@instance: false + denon_write@instance: true general: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X4300H.zone2.settings.sound.general + denon_read_group_trigger@instance: AVR-X4300H.zone2.settings.sound.general hdmiout: type: str - denon_command: zone2.settings.sound.general.hdmiout - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.settings.sound.general.hdmiout + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone2 - AVR-X4300H.zone2.settings - AVR-X4300H.zone2.settings.sound - AVR-X4300H.zone2.settings.sound.general - HPF: + hpf: type: bool - denon_command: zone2.settings.sound.general.HPF - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.settings.sound.general.HPF + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone2 - AVR-X4300H.zone2.settings @@ -5109,83 +5140,83 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X4300H.zone3 + denon_read_group_trigger@instance: AVR-X4300H.zone3 control: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X4300H.zone3.control + denon_read_group_trigger@instance: AVR-X4300H.zone3.control power: type: bool - denon_command: zone3.control.power - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.control.power + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone3 - AVR-X4300H.zone3.control mute: type: bool - denon_command: zone3.control.mute - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.control.mute + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone3 - AVR-X4300H.zone3.control volume: type: num - denon_command: zone3.control.volume - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.control.volume + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone3 - AVR-X4300H.zone3.control volumeup: type: bool - denon_command: zone3.control.volumeup - denon_read: false - denon_write: true + denon_command@instance: zone3.control.volumeup + denon_read@instance: false + denon_write@instance: true volumedown: type: bool - denon_command: zone3.control.volumedown - denon_read: false - denon_write: true + denon_command@instance: zone3.control.volumedown + denon_read@instance: false + denon_write@instance: true sleep: type: num - denon_command: zone3.control.sleep - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.control.sleep + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone3 - AVR-X4300H.zone3.control standby: type: num - denon_command: zone3.control.standby - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.control.standby + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone3 - AVR-X4300H.zone3.control input: type: str - denon_command: zone3.control.input - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.control.input + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone3 - AVR-X4300H.zone3.control @@ -5194,35 +5225,35 @@ item_structs: custom_name: type: str - on_change: .. = '' if sh......general.custom_inputnames.reverse() == {} else sh......general.custom_inputnames.reverse()[value] + on_change: sh...(sh......general.custom_inputnames.reverse()[value]) if sh......general.custom_inputnames.reverse() != {} else None settings: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X4300H.zone3.settings + denon_read_group_trigger@instance: AVR-X4300H.zone3.settings sound: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X4300H.zone3.settings.sound + denon_read_group_trigger@instance: AVR-X4300H.zone3.settings.sound channel_level: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X4300H.zone3.settings.sound.channel_level + denon_read_group_trigger@instance: AVR-X4300H.zone3.settings.sound.channel_level front_left: type: num - denon_command: zone3.settings.sound.channel_level.front_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.settings.sound.channel_level.front_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone3 - AVR-X4300H.zone3.settings @@ -5231,10 +5262,10 @@ item_structs: front_right: type: num - denon_command: zone3.settings.sound.channel_level.front_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.settings.sound.channel_level.front_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone3 - AVR-X4300H.zone3.settings @@ -5246,14 +5277,14 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X4300H.zone3.settings.sound.tone_control + denon_read_group_trigger@instance: AVR-X4300H.zone3.settings.sound.tone_control treble: type: num - denon_command: zone3.settings.sound.tone_control.treble - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.settings.sound.tone_control.treble + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone3 - AVR-X4300H.zone3.settings @@ -5262,22 +5293,22 @@ item_structs: trebleup: type: bool - denon_command: zone3.settings.sound.tone_control.trebleup - denon_read: false - denon_write: true + denon_command@instance: zone3.settings.sound.tone_control.trebleup + denon_read@instance: false + denon_write@instance: true trebledown: type: bool - denon_command: zone3.settings.sound.tone_control.trebledown - denon_read: false - denon_write: true + denon_command@instance: zone3.settings.sound.tone_control.trebledown + denon_read@instance: false + denon_write@instance: true bass: type: num - denon_command: zone3.settings.sound.tone_control.bass - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.settings.sound.tone_control.bass + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone3 - AVR-X4300H.zone3.settings @@ -5286,29 +5317,29 @@ item_structs: bassup: type: bool - denon_command: zone3.settings.sound.tone_control.bassup - denon_read: false - denon_write: true + denon_command@instance: zone3.settings.sound.tone_control.bassup + denon_read@instance: false + denon_write@instance: true bassdown: type: bool - denon_command: zone3.settings.sound.tone_control.bassdown - denon_read: false - denon_write: true + denon_command@instance: zone3.settings.sound.tone_control.bassdown + denon_read@instance: false + denon_write@instance: true general: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X4300H.zone3.settings.sound.general + denon_read_group_trigger@instance: AVR-X4300H.zone3.settings.sound.general - HPF: + hpf: type: bool - denon_command: zone3.settings.sound.general.HPF - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone3.settings.sound.general.HPF + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone3 - AVR-X4300H.zone3.settings @@ -5320,21 +5351,21 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X3300W + denon_read_group_trigger@instance: AVR-X3300W general: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X3300W.general + denon_read_group_trigger@instance: AVR-X3300W.general custom_inputnames: type: dict - denon_command: general.custom_inputnames - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.custom_inputnames + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.general cache: true @@ -5350,93 +5381,93 @@ item_structs: power: type: bool - denon_command: general.power - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: general.power + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.general setupmenu: type: bool - denon_command: general.setupmenu - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: general.setupmenu + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.general display: type: str - denon_command: general.display - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.display + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.general soundmode: type: str - denon_command: general.soundmode - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.soundmode + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.general - denon_read_initial: true + denon_read_initial@instance: true inputsignal: type: str - denon_command: general.inputsignal - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.inputsignal + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.general - denon_read_initial: true + denon_read_initial@instance: true inputrate: type: num - denon_command: general.inputrate - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.inputrate + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.general - denon_read_initial: true + denon_read_initial@instance: true inputformat: type: str - denon_command: general.inputformat - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.inputformat + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.general - denon_read_initial: true + denon_read_initial@instance: true inputresolution: type: str - denon_command: general.inputresolution - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.inputresolution + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.general - denon_read_initial: true + denon_read_initial@instance: true outputresolution: type: str - denon_command: general.outputresolution - denon_read: true - denon_write: false + denon_command@instance: general.outputresolution + denon_read@instance: true + denon_write@instance: false ecomode: type: str - denon_command: general.ecomode - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: general.ecomode + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.general @@ -5445,90 +5476,90 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X3300W.tuner + denon_read_group_trigger@instance: AVR-X3300W.tuner title: type: str - denon_command: tuner.title - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: tuner.title + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.tuner - denon_read_initial: true + denon_read_initial@instance: true album: type: str - denon_command: tuner.album - denon_read: true - denon_write: false + denon_command@instance: tuner.album + denon_read@instance: true + denon_write@instance: false artist: type: str - denon_command: tuner.artist - denon_read: true - denon_write: false + denon_command@instance: tuner.artist + denon_read@instance: true + denon_write@instance: false preset: type: num - denon_command: tuner.preset - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.preset + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.tuner - denon_read_initial: true + denon_read_initial@instance: true presetup: type: bool - denon_command: tuner.presetup - denon_read: false - denon_write: true + denon_command@instance: tuner.presetup + denon_read@instance: false + denon_write@instance: true presetdown: type: bool - denon_command: tuner.presetdown - denon_read: false - denon_write: true + denon_command@instance: tuner.presetdown + denon_read@instance: false + denon_write@instance: true frequency: type: num - denon_command: tuner.frequency - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.frequency + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.tuner - denon_read_initial: true + denon_read_initial@instance: true frequencyup: type: bool - denon_command: tuner.frequencyup - denon_read: false - denon_write: true + denon_command@instance: tuner.frequencyup + denon_read@instance: false + denon_write@instance: true frequencydown: type: bool - denon_command: tuner.frequencydown - denon_read: false - denon_write: true + denon_command@instance: tuner.frequencydown + denon_read@instance: false + denon_write@instance: true band: type: str - denon_command: tuner.band - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.band + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.tuner - denon_read_initial: true + denon_read_initial@instance: true tuningmode: type: str - denon_command: tuner.tuningmode - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.tuningmode + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.tuner @@ -5537,148 +5568,143 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X3300W.zone1 + denon_read_group_trigger@instance: AVR-X3300W.zone1 control: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X3300W.zone1.control + denon_read_group_trigger@instance: AVR-X3300W.zone1.control power: type: bool - denon_command: zone1.control.power - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.power + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.control - denon_read_initial: true + denon_read_initial@instance: true mute: type: bool - denon_command: zone1.control.mute - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.mute + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.control - denon_read_initial: true + denon_read_initial@instance: true volume: type: num - denon_command: zone1.control.volume - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.volume + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.control - denon_read_initial: true + denon_read_initial@instance: true volumeup: type: bool - denon_command: zone1.control.volumeup - denon_read: false - denon_write: true + denon_command@instance: zone1.control.volumeup + denon_read@instance: false + denon_write@instance: true volumedown: type: bool - denon_command: zone1.control.volumedown - denon_read: false - denon_write: true + denon_command@instance: zone1.control.volumedown + denon_read@instance: false + denon_write@instance: true volumemax: type: num - denon_command: zone1.control.volumemax - denon_read: true - denon_write: false - denon_read_group: - - AVR-X3300W - - AVR-X3300W.zone1 - - AVR-X3300W.zone1.control - denon_read_initial: true + denon_command@instance: zone1.control.volumemax + denon_read@instance: true + denon_write@instance: false input: type: str - denon_command: zone1.control.input - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.input + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.control - denon_read_initial: true + denon_read_initial@instance: true on_change: - .custom_name = '' if sh.....general.custom_inputnames() == {} else sh.....general.custom_inputnames()[value] custom_name: type: str - on_change: .. = '' if sh......general.custom_inputnames.reverse() == {} else sh......general.custom_inputnames.reverse()[value] + on_change: sh...(sh......general.custom_inputnames.reverse()[value]) if sh......general.custom_inputnames.reverse() != {} else None listeningmode: type: str - denon_command: zone1.control.listeningmode - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.listeningmode + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.control - denon_read_initial: true + denon_read_initial@instance: true sleep: type: num - denon_command: zone1.control.sleep - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.sleep + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.control - denon_read_initial: true + denon_read_initial@instance: true standby: type: num - denon_command: zone1.control.standby - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.standby + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.control - denon_read_initial: true + denon_read_initial@instance: true settings: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X3300W.zone1.settings + denon_read_group_trigger@instance: AVR-X3300W.zone1.settings sound: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X3300W.zone1.settings.sound + denon_read_group_trigger@instance: AVR-X3300W.zone1.settings.sound channel_level: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X3300W.zone1.settings.sound.channel_level + denon_read_group_trigger@instance: AVR-X3300W.zone1.settings.sound.channel_level front_left: type: num - denon_command: zone1.settings.sound.channel_level.front_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -5687,10 +5713,10 @@ item_structs: front_right: type: num - denon_command: zone1.settings.sound.channel_level.front_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -5699,10 +5725,10 @@ item_structs: front_height_left: type: num - denon_command: zone1.settings.sound.channel_level.front_height_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_height_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -5711,10 +5737,10 @@ item_structs: front_height_right: type: num - denon_command: zone1.settings.sound.channel_level.front_height_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_height_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -5723,10 +5749,10 @@ item_structs: front_center: type: num - denon_command: zone1.settings.sound.channel_level.front_center - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_center + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -5735,10 +5761,10 @@ item_structs: surround_left: type: num - denon_command: zone1.settings.sound.channel_level.surround_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.surround_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -5747,10 +5773,10 @@ item_structs: surround_right: type: num - denon_command: zone1.settings.sound.channel_level.surround_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.surround_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -5759,10 +5785,10 @@ item_structs: surroundback_left: type: num - denon_command: zone1.settings.sound.channel_level.surroundback_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.surroundback_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -5771,10 +5797,10 @@ item_structs: surroundback_right: type: num - denon_command: zone1.settings.sound.channel_level.surroundback_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.surroundback_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -5783,10 +5809,10 @@ item_structs: rear_height_left: type: num - denon_command: zone1.settings.sound.channel_level.rear_height_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.rear_height_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -5795,10 +5821,10 @@ item_structs: rear_height_right: type: num - denon_command: zone1.settings.sound.channel_level.rear_height_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.rear_height_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -5807,10 +5833,10 @@ item_structs: subwoofer: type: num - denon_command: zone1.settings.sound.channel_level.subwoofer - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.subwoofer + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -5819,10 +5845,10 @@ item_structs: subwoofer2: type: num - denon_command: zone1.settings.sound.channel_level.subwoofer2 - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.subwoofer2 + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -5834,14 +5860,14 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X3300W.zone1.settings.sound.tone_control + denon_read_group_trigger@instance: AVR-X3300W.zone1.settings.sound.tone_control tone: type: bool - denon_command: zone1.settings.sound.tone_control.tone - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.tone_control.tone + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -5850,10 +5876,10 @@ item_structs: treble: type: num - denon_command: zone1.settings.sound.tone_control.treble - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.tone_control.treble + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -5862,22 +5888,22 @@ item_structs: trebleup: type: bool - denon_command: zone1.settings.sound.tone_control.trebleup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.tone_control.trebleup + denon_read@instance: false + denon_write@instance: true trebledown: type: bool - denon_command: zone1.settings.sound.tone_control.trebledown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.tone_control.trebledown + denon_read@instance: false + denon_write@instance: true bass: type: num - denon_command: zone1.settings.sound.tone_control.bass - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.tone_control.bass + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -5886,29 +5912,29 @@ item_structs: bassup: type: bool - denon_command: zone1.settings.sound.tone_control.bassup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.tone_control.bassup + denon_read@instance: false + denon_write@instance: true bassdown: type: bool - denon_command: zone1.settings.sound.tone_control.bassdown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.tone_control.bassdown + denon_read@instance: false + denon_write@instance: true general: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X3300W.zone1.settings.sound.general + denon_read_group_trigger@instance: AVR-X3300W.zone1.settings.sound.general cinema_eq: type: bool - denon_command: zone1.settings.sound.general.cinema_eq - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.cinema_eq + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -5917,10 +5943,10 @@ item_structs: hdmiaudioout: type: str - denon_command: zone1.settings.sound.general.hdmiaudioout - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.hdmiaudioout + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -5929,10 +5955,10 @@ item_structs: dynamicrange: type: num - denon_command: zone1.settings.sound.general.dynamicrange - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.dynamicrange + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -5941,10 +5967,10 @@ item_structs: dialogtoggle: type: bool - denon_command: zone1.settings.sound.general.dialogtoggle - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.dialogtoggle + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -5953,10 +5979,10 @@ item_structs: dialog: type: num - denon_command: zone1.settings.sound.general.dialog - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.dialog + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -5965,22 +5991,22 @@ item_structs: dialogup: type: bool - denon_command: zone1.settings.sound.general.dialogup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.dialogup + denon_read@instance: false + denon_write@instance: true dialogdown: type: bool - denon_command: zone1.settings.sound.general.dialogdown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.dialogdown + denon_read@instance: false + denon_write@instance: true subwoofertoggle: type: bool - denon_command: zone1.settings.sound.general.subwoofertoggle - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.subwoofertoggle + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -5989,10 +6015,10 @@ item_structs: subwoofer: type: num - denon_command: zone1.settings.sound.general.subwoofer - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.subwoofer + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -6001,22 +6027,22 @@ item_structs: subwooferup: type: bool - denon_command: zone1.settings.sound.general.subwooferup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.subwooferup + denon_read@instance: false + denon_write@instance: true subwooferdown: type: bool - denon_command: zone1.settings.sound.general.subwooferdown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.subwooferdown + denon_read@instance: false + denon_write@instance: true lfe: type: num - denon_command: zone1.settings.sound.general.lfe - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.lfe + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -6025,22 +6051,22 @@ item_structs: lfeup: type: bool - denon_command: zone1.settings.sound.general.lfeup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.lfeup + denon_read@instance: false + denon_write@instance: true lfedown: type: bool - denon_command: zone1.settings.sound.general.lfedown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.lfedown + denon_read@instance: false + denon_write@instance: true audioinput: type: str - denon_command: zone1.settings.sound.general.audioinput - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.audioinput + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -6052,14 +6078,14 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X3300W.zone1.settings.video + denon_read_group_trigger@instance: AVR-X3300W.zone1.settings.video aspectratio: type: str - denon_command: zone1.settings.video.aspectratio - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.aspectratio + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -6067,10 +6093,10 @@ item_structs: hdmiresolution: type: str - denon_command: zone1.settings.video.hdmiresolution - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.hdmiresolution + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -6078,10 +6104,10 @@ item_structs: videoprocessingmode: type: str - denon_command: zone1.settings.video.videoprocessingmode - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.videoprocessingmode + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -6089,10 +6115,10 @@ item_structs: videoresolution: type: str - denon_command: zone1.settings.video.videoresolution - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.videoresolution + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -6100,10 +6126,10 @@ item_structs: pictureenhancer: type: num - denon_command: zone1.settings.video.pictureenhancer - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.pictureenhancer + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -6111,10 +6137,10 @@ item_structs: videoinput: type: str - denon_command: zone1.settings.video.videoinput - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.videoinput + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.settings @@ -6125,63 +6151,63 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X3300W.zone2 + denon_read_group_trigger@instance: AVR-X3300W.zone2 control: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X3300W.zone2.control + denon_read_group_trigger@instance: AVR-X3300W.zone2.control power: type: bool - denon_command: zone2.control.power - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.power + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone2 - AVR-X3300W.zone2.control mute: type: bool - denon_command: zone2.control.mute - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.mute + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone2 - AVR-X3300W.zone2.control volume: type: num - denon_command: zone2.control.volume - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.volume + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone2 - AVR-X3300W.zone2.control volumeup: type: bool - denon_command: zone2.control.volumeup - denon_read: false - denon_write: true + denon_command@instance: zone2.control.volumeup + denon_read@instance: false + denon_write@instance: true volumedown: type: bool - denon_command: zone2.control.volumedown - denon_read: false - denon_write: true + denon_command@instance: zone2.control.volumedown + denon_read@instance: false + denon_write@instance: true input: type: str - denon_command: zone2.control.input - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.input + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone2 - AVR-X3300W.zone2.control @@ -6190,24 +6216,24 @@ item_structs: custom_name: type: str - on_change: .. = '' if sh......general.custom_inputnames.reverse() == {} else sh......general.custom_inputnames.reverse()[value] + on_change: sh...(sh......general.custom_inputnames.reverse()[value]) if sh......general.custom_inputnames.reverse() != {} else None sleep: type: num - denon_command: zone2.control.sleep - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.sleep + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone2 - AVR-X3300W.zone2.control standby: type: num - denon_command: zone2.control.standby - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.standby + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone2 - AVR-X3300W.zone2.control @@ -6217,28 +6243,28 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X3300W.zone2.settings + denon_read_group_trigger@instance: AVR-X3300W.zone2.settings sound: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X3300W.zone2.settings.sound + denon_read_group_trigger@instance: AVR-X3300W.zone2.settings.sound channel_level: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X3300W.zone2.settings.sound.channel_level + denon_read_group_trigger@instance: AVR-X3300W.zone2.settings.sound.channel_level front_left: type: num - denon_command: zone2.settings.sound.channel_level.front_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.settings.sound.channel_level.front_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone2 - AVR-X3300W.zone2.settings @@ -6247,10 +6273,10 @@ item_structs: front_right: type: num - denon_command: zone2.settings.sound.channel_level.front_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.settings.sound.channel_level.front_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone2 - AVR-X3300W.zone2.settings @@ -6262,14 +6288,14 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X3300W.zone2.settings.sound.tone_control + denon_read_group_trigger@instance: AVR-X3300W.zone2.settings.sound.tone_control treble: type: num - denon_command: zone2.settings.sound.tone_control.treble - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.settings.sound.tone_control.treble + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone2 - AVR-X3300W.zone2.settings @@ -6278,22 +6304,22 @@ item_structs: trebleup: type: bool - denon_command: zone2.settings.sound.tone_control.trebleup - denon_read: false - denon_write: true + denon_command@instance: zone2.settings.sound.tone_control.trebleup + denon_read@instance: false + denon_write@instance: true trebledown: type: bool - denon_command: zone2.settings.sound.tone_control.trebledown - denon_read: false - denon_write: true + denon_command@instance: zone2.settings.sound.tone_control.trebledown + denon_read@instance: false + denon_write@instance: true bass: type: num - denon_command: zone2.settings.sound.tone_control.bass - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.settings.sound.tone_control.bass + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone2 - AVR-X3300W.zone2.settings @@ -6302,41 +6328,41 @@ item_structs: bassup: type: bool - denon_command: zone2.settings.sound.tone_control.bassup - denon_read: false - denon_write: true + denon_command@instance: zone2.settings.sound.tone_control.bassup + denon_read@instance: false + denon_write@instance: true bassdown: type: bool - denon_command: zone2.settings.sound.tone_control.bassdown - denon_read: false - denon_write: true + denon_command@instance: zone2.settings.sound.tone_control.bassdown + denon_read@instance: false + denon_write@instance: true general: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X3300W.zone2.settings.sound.general + denon_read_group_trigger@instance: AVR-X3300W.zone2.settings.sound.general hdmiout: type: str - denon_command: zone2.settings.sound.general.hdmiout - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.settings.sound.general.hdmiout + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone2 - AVR-X3300W.zone2.settings - AVR-X3300W.zone2.settings.sound - AVR-X3300W.zone2.settings.sound.general - HPF: + hpf: type: bool - denon_command: zone2.settings.sound.general.HPF - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.settings.sound.general.HPF + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone2 - AVR-X3300W.zone2.settings @@ -6348,21 +6374,21 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X2300W + denon_read_group_trigger@instance: AVR-X2300W general: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X2300W.general + denon_read_group_trigger@instance: AVR-X2300W.general custom_inputnames: type: dict - denon_command: general.custom_inputnames - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.custom_inputnames + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.general cache: true @@ -6378,93 +6404,93 @@ item_structs: power: type: bool - denon_command: general.power - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: general.power + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.general setupmenu: type: bool - denon_command: general.setupmenu - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: general.setupmenu + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.general display: type: str - denon_command: general.display - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.display + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.general soundmode: type: str - denon_command: general.soundmode - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.soundmode + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.general - denon_read_initial: true + denon_read_initial@instance: true inputsignal: type: str - denon_command: general.inputsignal - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.inputsignal + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.general - denon_read_initial: true + denon_read_initial@instance: true inputrate: type: num - denon_command: general.inputrate - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.inputrate + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.general - denon_read_initial: true + denon_read_initial@instance: true inputformat: type: str - denon_command: general.inputformat - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.inputformat + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.general - denon_read_initial: true + denon_read_initial@instance: true inputresolution: type: str - denon_command: general.inputresolution - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.inputresolution + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.general - denon_read_initial: true + denon_read_initial@instance: true outputresolution: type: str - denon_command: general.outputresolution - denon_read: true - denon_write: false + denon_command@instance: general.outputresolution + denon_read@instance: true + denon_write@instance: false ecomode: type: str - denon_command: general.ecomode - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: general.ecomode + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.general @@ -6473,90 +6499,90 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X2300W.tuner + denon_read_group_trigger@instance: AVR-X2300W.tuner title: type: str - denon_command: tuner.title - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: tuner.title + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.tuner - denon_read_initial: true + denon_read_initial@instance: true album: type: str - denon_command: tuner.album - denon_read: true - denon_write: false + denon_command@instance: tuner.album + denon_read@instance: true + denon_write@instance: false artist: type: str - denon_command: tuner.artist - denon_read: true - denon_write: false + denon_command@instance: tuner.artist + denon_read@instance: true + denon_write@instance: false preset: type: num - denon_command: tuner.preset - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.preset + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.tuner - denon_read_initial: true + denon_read_initial@instance: true presetup: type: bool - denon_command: tuner.presetup - denon_read: false - denon_write: true + denon_command@instance: tuner.presetup + denon_read@instance: false + denon_write@instance: true presetdown: type: bool - denon_command: tuner.presetdown - denon_read: false - denon_write: true + denon_command@instance: tuner.presetdown + denon_read@instance: false + denon_write@instance: true frequency: type: num - denon_command: tuner.frequency - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.frequency + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.tuner - denon_read_initial: true + denon_read_initial@instance: true frequencyup: type: bool - denon_command: tuner.frequencyup - denon_read: false - denon_write: true + denon_command@instance: tuner.frequencyup + denon_read@instance: false + denon_write@instance: true frequencydown: type: bool - denon_command: tuner.frequencydown - denon_read: false - denon_write: true + denon_command@instance: tuner.frequencydown + denon_read@instance: false + denon_write@instance: true band: type: str - denon_command: tuner.band - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.band + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.tuner - denon_read_initial: true + denon_read_initial@instance: true tuningmode: type: str - denon_command: tuner.tuningmode - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.tuningmode + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.tuner @@ -6565,148 +6591,143 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X2300W.zone1 + denon_read_group_trigger@instance: AVR-X2300W.zone1 control: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X2300W.zone1.control + denon_read_group_trigger@instance: AVR-X2300W.zone1.control power: type: bool - denon_command: zone1.control.power - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.power + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.control - denon_read_initial: true + denon_read_initial@instance: true mute: type: bool - denon_command: zone1.control.mute - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.mute + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.control - denon_read_initial: true + denon_read_initial@instance: true volume: type: num - denon_command: zone1.control.volume - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.volume + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.control - denon_read_initial: true + denon_read_initial@instance: true volumeup: type: bool - denon_command: zone1.control.volumeup - denon_read: false - denon_write: true + denon_command@instance: zone1.control.volumeup + denon_read@instance: false + denon_write@instance: true volumedown: type: bool - denon_command: zone1.control.volumedown - denon_read: false - denon_write: true + denon_command@instance: zone1.control.volumedown + denon_read@instance: false + denon_write@instance: true volumemax: type: num - denon_command: zone1.control.volumemax - denon_read: true - denon_write: false - denon_read_group: - - AVR-X2300W - - AVR-X2300W.zone1 - - AVR-X2300W.zone1.control - denon_read_initial: true + denon_command@instance: zone1.control.volumemax + denon_read@instance: true + denon_write@instance: false input: type: str - denon_command: zone1.control.input - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.input + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.control - denon_read_initial: true + denon_read_initial@instance: true on_change: - .custom_name = '' if sh.....general.custom_inputnames() == {} else sh.....general.custom_inputnames()[value] custom_name: type: str - on_change: .. = '' if sh......general.custom_inputnames.reverse() == {} else sh......general.custom_inputnames.reverse()[value] + on_change: sh...(sh......general.custom_inputnames.reverse()[value]) if sh......general.custom_inputnames.reverse() != {} else None listeningmode: type: str - denon_command: zone1.control.listeningmode - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.listeningmode + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.control - denon_read_initial: true + denon_read_initial@instance: true sleep: type: num - denon_command: zone1.control.sleep - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.sleep + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.control - denon_read_initial: true + denon_read_initial@instance: true standby: type: num - denon_command: zone1.control.standby - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.standby + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.control - denon_read_initial: true + denon_read_initial@instance: true settings: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X2300W.zone1.settings + denon_read_group_trigger@instance: AVR-X2300W.zone1.settings sound: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X2300W.zone1.settings.sound + denon_read_group_trigger@instance: AVR-X2300W.zone1.settings.sound channel_level: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X2300W.zone1.settings.sound.channel_level + denon_read_group_trigger@instance: AVR-X2300W.zone1.settings.sound.channel_level front_left: type: num - denon_command: zone1.settings.sound.channel_level.front_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -6715,10 +6736,10 @@ item_structs: front_right: type: num - denon_command: zone1.settings.sound.channel_level.front_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -6727,10 +6748,10 @@ item_structs: front_height_left: type: num - denon_command: zone1.settings.sound.channel_level.front_height_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_height_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -6739,10 +6760,10 @@ item_structs: front_height_right: type: num - denon_command: zone1.settings.sound.channel_level.front_height_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_height_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -6751,10 +6772,10 @@ item_structs: front_center: type: num - denon_command: zone1.settings.sound.channel_level.front_center - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_center + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -6763,10 +6784,10 @@ item_structs: surround_left: type: num - denon_command: zone1.settings.sound.channel_level.surround_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.surround_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -6775,10 +6796,10 @@ item_structs: surround_right: type: num - denon_command: zone1.settings.sound.channel_level.surround_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.surround_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -6787,10 +6808,10 @@ item_structs: surroundback_left: type: num - denon_command: zone1.settings.sound.channel_level.surroundback_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.surroundback_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -6799,10 +6820,10 @@ item_structs: surroundback_right: type: num - denon_command: zone1.settings.sound.channel_level.surroundback_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.surroundback_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -6811,10 +6832,10 @@ item_structs: rear_height_left: type: num - denon_command: zone1.settings.sound.channel_level.rear_height_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.rear_height_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -6823,10 +6844,10 @@ item_structs: rear_height_right: type: num - denon_command: zone1.settings.sound.channel_level.rear_height_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.rear_height_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -6835,10 +6856,10 @@ item_structs: subwoofer: type: num - denon_command: zone1.settings.sound.channel_level.subwoofer - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.subwoofer + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -6850,14 +6871,14 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X2300W.zone1.settings.sound.tone_control + denon_read_group_trigger@instance: AVR-X2300W.zone1.settings.sound.tone_control tone: type: bool - denon_command: zone1.settings.sound.tone_control.tone - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.tone_control.tone + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -6866,10 +6887,10 @@ item_structs: treble: type: num - denon_command: zone1.settings.sound.tone_control.treble - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.tone_control.treble + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -6878,22 +6899,22 @@ item_structs: trebleup: type: bool - denon_command: zone1.settings.sound.tone_control.trebleup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.tone_control.trebleup + denon_read@instance: false + denon_write@instance: true trebledown: type: bool - denon_command: zone1.settings.sound.tone_control.trebledown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.tone_control.trebledown + denon_read@instance: false + denon_write@instance: true bass: type: num - denon_command: zone1.settings.sound.tone_control.bass - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.tone_control.bass + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -6902,29 +6923,29 @@ item_structs: bassup: type: bool - denon_command: zone1.settings.sound.tone_control.bassup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.tone_control.bassup + denon_read@instance: false + denon_write@instance: true bassdown: type: bool - denon_command: zone1.settings.sound.tone_control.bassdown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.tone_control.bassdown + denon_read@instance: false + denon_write@instance: true general: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X2300W.zone1.settings.sound.general + denon_read_group_trigger@instance: AVR-X2300W.zone1.settings.sound.general cinema_eq: type: bool - denon_command: zone1.settings.sound.general.cinema_eq - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.cinema_eq + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -6933,10 +6954,10 @@ item_structs: hdmiaudioout: type: str - denon_command: zone1.settings.sound.general.hdmiaudioout - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.hdmiaudioout + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -6945,10 +6966,10 @@ item_structs: dynamicrange: type: num - denon_command: zone1.settings.sound.general.dynamicrange - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.dynamicrange + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -6957,10 +6978,10 @@ item_structs: dialogtoggle: type: bool - denon_command: zone1.settings.sound.general.dialogtoggle - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.dialogtoggle + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -6969,10 +6990,10 @@ item_structs: dialog: type: num - denon_command: zone1.settings.sound.general.dialog - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.dialog + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -6981,22 +7002,22 @@ item_structs: dialogup: type: bool - denon_command: zone1.settings.sound.general.dialogup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.dialogup + denon_read@instance: false + denon_write@instance: true dialogdown: type: bool - denon_command: zone1.settings.sound.general.dialogdown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.dialogdown + denon_read@instance: false + denon_write@instance: true subwoofertoggle: type: bool - denon_command: zone1.settings.sound.general.subwoofertoggle - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.subwoofertoggle + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -7005,10 +7026,10 @@ item_structs: subwoofer: type: num - denon_command: zone1.settings.sound.general.subwoofer - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.subwoofer + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -7017,22 +7038,22 @@ item_structs: subwooferup: type: bool - denon_command: zone1.settings.sound.general.subwooferup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.subwooferup + denon_read@instance: false + denon_write@instance: true subwooferdown: type: bool - denon_command: zone1.settings.sound.general.subwooferdown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.subwooferdown + denon_read@instance: false + denon_write@instance: true lfe: type: num - denon_command: zone1.settings.sound.general.lfe - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.lfe + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -7041,22 +7062,22 @@ item_structs: lfeup: type: bool - denon_command: zone1.settings.sound.general.lfeup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.lfeup + denon_read@instance: false + denon_write@instance: true lfedown: type: bool - denon_command: zone1.settings.sound.general.lfedown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.lfedown + denon_read@instance: false + denon_write@instance: true audioinput: type: str - denon_command: zone1.settings.sound.general.audioinput - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.audioinput + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -7068,14 +7089,14 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X2300W.zone1.settings.video + denon_read_group_trigger@instance: AVR-X2300W.zone1.settings.video aspectratio: type: str - denon_command: zone1.settings.video.aspectratio - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.aspectratio + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -7083,10 +7104,10 @@ item_structs: hdmimonitor: type: num - denon_command: zone1.settings.video.hdmimonitor - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.hdmimonitor + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -7094,10 +7115,10 @@ item_structs: hdmiresolution: type: str - denon_command: zone1.settings.video.hdmiresolution - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.hdmiresolution + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -7105,10 +7126,10 @@ item_structs: videoprocessingmode: type: str - denon_command: zone1.settings.video.videoprocessingmode - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.videoprocessingmode + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -7116,10 +7137,10 @@ item_structs: videoresolution: type: str - denon_command: zone1.settings.video.videoresolution - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.videoresolution + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -7127,10 +7148,10 @@ item_structs: pictureenhancer: type: num - denon_command: zone1.settings.video.pictureenhancer - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.pictureenhancer + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -7138,10 +7159,10 @@ item_structs: videoinput: type: str - denon_command: zone1.settings.video.videoinput - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.video.videoinput + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.settings @@ -7152,63 +7173,63 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X2300W.zone2 + denon_read_group_trigger@instance: AVR-X2300W.zone2 control: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X2300W.zone2.control + denon_read_group_trigger@instance: AVR-X2300W.zone2.control power: type: bool - denon_command: zone2.control.power - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.power + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone2 - AVR-X2300W.zone2.control mute: type: bool - denon_command: zone2.control.mute - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.mute + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone2 - AVR-X2300W.zone2.control volume: type: num - denon_command: zone2.control.volume - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.volume + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone2 - AVR-X2300W.zone2.control volumeup: type: bool - denon_command: zone2.control.volumeup - denon_read: false - denon_write: true + denon_command@instance: zone2.control.volumeup + denon_read@instance: false + denon_write@instance: true volumedown: type: bool - denon_command: zone2.control.volumedown - denon_read: false - denon_write: true + denon_command@instance: zone2.control.volumedown + denon_read@instance: false + denon_write@instance: true input: type: str - denon_command: zone2.control.input - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.input + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone2 - AVR-X2300W.zone2.control @@ -7217,24 +7238,24 @@ item_structs: custom_name: type: str - on_change: .. = '' if sh......general.custom_inputnames.reverse() == {} else sh......general.custom_inputnames.reverse()[value] + on_change: sh...(sh......general.custom_inputnames.reverse()[value]) if sh......general.custom_inputnames.reverse() != {} else None sleep: type: num - denon_command: zone2.control.sleep - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.sleep + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone2 - AVR-X2300W.zone2.control standby: type: num - denon_command: zone2.control.standby - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.standby + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone2 - AVR-X2300W.zone2.control @@ -7244,28 +7265,28 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X2300W.zone2.settings + denon_read_group_trigger@instance: AVR-X2300W.zone2.settings sound: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X2300W.zone2.settings.sound + denon_read_group_trigger@instance: AVR-X2300W.zone2.settings.sound channel_level: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X2300W.zone2.settings.sound.channel_level + denon_read_group_trigger@instance: AVR-X2300W.zone2.settings.sound.channel_level front_left: type: num - denon_command: zone2.settings.sound.channel_level.front_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.settings.sound.channel_level.front_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone2 - AVR-X2300W.zone2.settings @@ -7274,10 +7295,10 @@ item_structs: front_right: type: num - denon_command: zone2.settings.sound.channel_level.front_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.settings.sound.channel_level.front_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone2 - AVR-X2300W.zone2.settings @@ -7289,14 +7310,14 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X2300W.zone2.settings.sound.general + denon_read_group_trigger@instance: AVR-X2300W.zone2.settings.sound.general hdmiout: type: str - denon_command: zone2.settings.sound.general.hdmiout - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.settings.sound.general.hdmiout + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone2 - AVR-X2300W.zone2.settings @@ -7308,21 +7329,21 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X1300W + denon_read_group_trigger@instance: AVR-X1300W general: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X1300W.general + denon_read_group_trigger@instance: AVR-X1300W.general custom_inputnames: type: dict - denon_command: general.custom_inputnames - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.custom_inputnames + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.general cache: true @@ -7338,93 +7359,93 @@ item_structs: power: type: bool - denon_command: general.power - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: general.power + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.general setupmenu: type: bool - denon_command: general.setupmenu - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: general.setupmenu + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.general display: type: str - denon_command: general.display - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.display + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.general soundmode: type: str - denon_command: general.soundmode - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.soundmode + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.general - denon_read_initial: true + denon_read_initial@instance: true inputsignal: type: str - denon_command: general.inputsignal - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.inputsignal + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.general - denon_read_initial: true + denon_read_initial@instance: true inputrate: type: num - denon_command: general.inputrate - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.inputrate + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.general - denon_read_initial: true + denon_read_initial@instance: true inputformat: type: str - denon_command: general.inputformat - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.inputformat + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.general - denon_read_initial: true + denon_read_initial@instance: true inputresolution: type: str - denon_command: general.inputresolution - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: general.inputresolution + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.general - denon_read_initial: true + denon_read_initial@instance: true outputresolution: type: str - denon_command: general.outputresolution - denon_read: true - denon_write: false + denon_command@instance: general.outputresolution + denon_read@instance: true + denon_write@instance: false ecomode: type: str - denon_command: general.ecomode - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: general.ecomode + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.general @@ -7433,90 +7454,90 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X1300W.tuner + denon_read_group_trigger@instance: AVR-X1300W.tuner title: type: str - denon_command: tuner.title - denon_read: true - denon_write: false - denon_read_group: + denon_command@instance: tuner.title + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.tuner - denon_read_initial: true + denon_read_initial@instance: true album: type: str - denon_command: tuner.album - denon_read: true - denon_write: false + denon_command@instance: tuner.album + denon_read@instance: true + denon_write@instance: false artist: type: str - denon_command: tuner.artist - denon_read: true - denon_write: false + denon_command@instance: tuner.artist + denon_read@instance: true + denon_write@instance: false preset: type: num - denon_command: tuner.preset - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.preset + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.tuner - denon_read_initial: true + denon_read_initial@instance: true presetup: type: bool - denon_command: tuner.presetup - denon_read: false - denon_write: true + denon_command@instance: tuner.presetup + denon_read@instance: false + denon_write@instance: true presetdown: type: bool - denon_command: tuner.presetdown - denon_read: false - denon_write: true + denon_command@instance: tuner.presetdown + denon_read@instance: false + denon_write@instance: true frequency: type: num - denon_command: tuner.frequency - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.frequency + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.tuner - denon_read_initial: true + denon_read_initial@instance: true frequencyup: type: bool - denon_command: tuner.frequencyup - denon_read: false - denon_write: true + denon_command@instance: tuner.frequencyup + denon_read@instance: false + denon_write@instance: true frequencydown: type: bool - denon_command: tuner.frequencydown - denon_read: false - denon_write: true + denon_command@instance: tuner.frequencydown + denon_read@instance: false + denon_write@instance: true band: type: str - denon_command: tuner.band - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.band + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.tuner - denon_read_initial: true + denon_read_initial@instance: true tuningmode: type: str - denon_command: tuner.tuningmode - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: tuner.tuningmode + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.tuner @@ -7525,148 +7546,143 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X1300W.zone1 + denon_read_group_trigger@instance: AVR-X1300W.zone1 control: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X1300W.zone1.control + denon_read_group_trigger@instance: AVR-X1300W.zone1.control power: type: bool - denon_command: zone1.control.power - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.power + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.control - denon_read_initial: true + denon_read_initial@instance: true mute: type: bool - denon_command: zone1.control.mute - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.mute + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.control - denon_read_initial: true + denon_read_initial@instance: true volume: type: num - denon_command: zone1.control.volume - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.volume + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.control - denon_read_initial: true + denon_read_initial@instance: true volumeup: type: bool - denon_command: zone1.control.volumeup - denon_read: false - denon_write: true + denon_command@instance: zone1.control.volumeup + denon_read@instance: false + denon_write@instance: true volumedown: type: bool - denon_command: zone1.control.volumedown - denon_read: false - denon_write: true + denon_command@instance: zone1.control.volumedown + denon_read@instance: false + denon_write@instance: true volumemax: type: num - denon_command: zone1.control.volumemax - denon_read: true - denon_write: false - denon_read_group: - - AVR-X1300W - - AVR-X1300W.zone1 - - AVR-X1300W.zone1.control - denon_read_initial: true + denon_command@instance: zone1.control.volumemax + denon_read@instance: true + denon_write@instance: false input: type: str - denon_command: zone1.control.input - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.input + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.control - denon_read_initial: true + denon_read_initial@instance: true on_change: - .custom_name = '' if sh.....general.custom_inputnames() == {} else sh.....general.custom_inputnames()[value] custom_name: type: str - on_change: .. = '' if sh......general.custom_inputnames.reverse() == {} else sh......general.custom_inputnames.reverse()[value] + on_change: sh...(sh......general.custom_inputnames.reverse()[value]) if sh......general.custom_inputnames.reverse() != {} else None listeningmode: type: str - denon_command: zone1.control.listeningmode - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.listeningmode + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.control - denon_read_initial: true + denon_read_initial@instance: true sleep: type: num - denon_command: zone1.control.sleep - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.sleep + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.control - denon_read_initial: true + denon_read_initial@instance: true standby: type: num - denon_command: zone1.control.standby - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.control.standby + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.control - denon_read_initial: true + denon_read_initial@instance: true settings: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X1300W.zone1.settings + denon_read_group_trigger@instance: AVR-X1300W.zone1.settings sound: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X1300W.zone1.settings.sound + denon_read_group_trigger@instance: AVR-X1300W.zone1.settings.sound channel_level: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X1300W.zone1.settings.sound.channel_level + denon_read_group_trigger@instance: AVR-X1300W.zone1.settings.sound.channel_level front_left: type: num - denon_command: zone1.settings.sound.channel_level.front_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.settings @@ -7675,10 +7691,10 @@ item_structs: front_right: type: num - denon_command: zone1.settings.sound.channel_level.front_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.settings @@ -7687,10 +7703,10 @@ item_structs: front_height_left: type: num - denon_command: zone1.settings.sound.channel_level.front_height_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_height_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.settings @@ -7699,10 +7715,10 @@ item_structs: front_height_right: type: num - denon_command: zone1.settings.sound.channel_level.front_height_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_height_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.settings @@ -7711,10 +7727,10 @@ item_structs: front_center: type: num - denon_command: zone1.settings.sound.channel_level.front_center - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.front_center + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.settings @@ -7723,10 +7739,10 @@ item_structs: surround_left: type: num - denon_command: zone1.settings.sound.channel_level.surround_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.surround_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.settings @@ -7735,10 +7751,10 @@ item_structs: surround_right: type: num - denon_command: zone1.settings.sound.channel_level.surround_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.surround_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.settings @@ -7747,10 +7763,10 @@ item_structs: surroundback_left: type: num - denon_command: zone1.settings.sound.channel_level.surroundback_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.surroundback_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.settings @@ -7759,10 +7775,10 @@ item_structs: surroundback_right: type: num - denon_command: zone1.settings.sound.channel_level.surroundback_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.surroundback_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.settings @@ -7771,10 +7787,10 @@ item_structs: rear_height_left: type: num - denon_command: zone1.settings.sound.channel_level.rear_height_left - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.rear_height_left + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.settings @@ -7783,10 +7799,10 @@ item_structs: rear_height_right: type: num - denon_command: zone1.settings.sound.channel_level.rear_height_right - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.rear_height_right + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.settings @@ -7795,10 +7811,10 @@ item_structs: subwoofer: type: num - denon_command: zone1.settings.sound.channel_level.subwoofer - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.channel_level.subwoofer + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.settings @@ -7810,14 +7826,14 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X1300W.zone1.settings.sound.tone_control + denon_read_group_trigger@instance: AVR-X1300W.zone1.settings.sound.tone_control tone: type: bool - denon_command: zone1.settings.sound.tone_control.tone - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.tone_control.tone + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.settings @@ -7826,10 +7842,10 @@ item_structs: treble: type: num - denon_command: zone1.settings.sound.tone_control.treble - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.tone_control.treble + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.settings @@ -7838,22 +7854,22 @@ item_structs: trebleup: type: bool - denon_command: zone1.settings.sound.tone_control.trebleup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.tone_control.trebleup + denon_read@instance: false + denon_write@instance: true trebledown: type: bool - denon_command: zone1.settings.sound.tone_control.trebledown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.tone_control.trebledown + denon_read@instance: false + denon_write@instance: true bass: type: num - denon_command: zone1.settings.sound.tone_control.bass - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.tone_control.bass + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.settings @@ -7862,29 +7878,29 @@ item_structs: bassup: type: bool - denon_command: zone1.settings.sound.tone_control.bassup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.tone_control.bassup + denon_read@instance: false + denon_write@instance: true bassdown: type: bool - denon_command: zone1.settings.sound.tone_control.bassdown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.tone_control.bassdown + denon_read@instance: false + denon_write@instance: true general: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X1300W.zone1.settings.sound.general + denon_read_group_trigger@instance: AVR-X1300W.zone1.settings.sound.general cinema_eq: type: bool - denon_command: zone1.settings.sound.general.cinema_eq - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.cinema_eq + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.settings @@ -7893,10 +7909,10 @@ item_structs: hdmiaudioout: type: str - denon_command: zone1.settings.sound.general.hdmiaudioout - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.hdmiaudioout + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.settings @@ -7905,10 +7921,10 @@ item_structs: dynamicrange: type: num - denon_command: zone1.settings.sound.general.dynamicrange - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.dynamicrange + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.settings @@ -7917,10 +7933,10 @@ item_structs: dialogtoggle: type: bool - denon_command: zone1.settings.sound.general.dialogtoggle - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.dialogtoggle + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.settings @@ -7929,10 +7945,10 @@ item_structs: dialog: type: num - denon_command: zone1.settings.sound.general.dialog - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.dialog + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.settings @@ -7941,22 +7957,22 @@ item_structs: dialogup: type: bool - denon_command: zone1.settings.sound.general.dialogup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.dialogup + denon_read@instance: false + denon_write@instance: true dialogdown: type: bool - denon_command: zone1.settings.sound.general.dialogdown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.dialogdown + denon_read@instance: false + denon_write@instance: true subwoofertoggle: type: bool - denon_command: zone1.settings.sound.general.subwoofertoggle - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.subwoofertoggle + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.settings @@ -7965,10 +7981,10 @@ item_structs: subwoofer: type: num - denon_command: zone1.settings.sound.general.subwoofer - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.subwoofer + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.settings @@ -7977,22 +7993,22 @@ item_structs: subwooferup: type: bool - denon_command: zone1.settings.sound.general.subwooferup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.subwooferup + denon_read@instance: false + denon_write@instance: true subwooferdown: type: bool - denon_command: zone1.settings.sound.general.subwooferdown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.subwooferdown + denon_read@instance: false + denon_write@instance: true lfe: type: num - denon_command: zone1.settings.sound.general.lfe - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.lfe + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.settings @@ -8001,22 +8017,22 @@ item_structs: lfeup: type: bool - denon_command: zone1.settings.sound.general.lfeup - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.lfeup + denon_read@instance: false + denon_write@instance: true lfedown: type: bool - denon_command: zone1.settings.sound.general.lfedown - denon_read: false - denon_write: true + denon_command@instance: zone1.settings.sound.general.lfedown + denon_read@instance: false + denon_write@instance: true audioinput: type: str - denon_command: zone1.settings.sound.general.audioinput - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone1.settings.sound.general.audioinput + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.settings @@ -8028,63 +8044,63 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X1300W.zone2 + denon_read_group_trigger@instance: AVR-X1300W.zone2 control: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X1300W.zone2.control + denon_read_group_trigger@instance: AVR-X1300W.zone2.control power: type: bool - denon_command: zone2.control.power - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.power + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone2 - AVR-X1300W.zone2.control mute: type: bool - denon_command: zone2.control.mute - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.mute + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone2 - AVR-X1300W.zone2.control volume: type: num - denon_command: zone2.control.volume - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.volume + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone2 - AVR-X1300W.zone2.control volumeup: type: bool - denon_command: zone2.control.volumeup - denon_read: false - denon_write: true + denon_command@instance: zone2.control.volumeup + denon_read@instance: false + denon_write@instance: true volumedown: type: bool - denon_command: zone2.control.volumedown - denon_read: false - denon_write: true + denon_command@instance: zone2.control.volumedown + denon_read@instance: false + denon_write@instance: true input: type: str - denon_command: zone2.control.input - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.input + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone2 - AVR-X1300W.zone2.control @@ -8093,24 +8109,24 @@ item_structs: custom_name: type: str - on_change: .. = '' if sh......general.custom_inputnames.reverse() == {} else sh......general.custom_inputnames.reverse()[value] + on_change: sh...(sh......general.custom_inputnames.reverse()[value]) if sh......general.custom_inputnames.reverse() != {} else None sleep: type: num - denon_command: zone2.control.sleep - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.sleep + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone2 - AVR-X1300W.zone2.control standby: type: num - denon_command: zone2.control.standby - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.control.standby + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone2 - AVR-X1300W.zone2.control @@ -8120,28 +8136,28 @@ item_structs: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X1300W.zone2.settings + denon_read_group_trigger@instance: AVR-X1300W.zone2.settings sound: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X1300W.zone2.settings.sound + denon_read_group_trigger@instance: AVR-X1300W.zone2.settings.sound general: read: type: bool enforce_updates: true - denon_read_group_trigger: AVR-X1300W.zone2.settings.sound.general + denon_read_group_trigger@instance: AVR-X1300W.zone2.settings.sound.general hdmiout: type: str - denon_command: zone2.settings.sound.general.hdmiout - denon_read: true - denon_write: true - denon_read_group: + denon_command@instance: zone2.settings.sound.general.hdmiout + denon_read@instance: true + denon_write@instance: true + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone2 - AVR-X1300W.zone2.settings