diff --git a/denon/__init__.py b/denon/__init__.py index 56b0f7818..633c4c258 100755 --- a/denon/__init__.py +++ b/denon/__init__.py @@ -24,6 +24,10 @@ import builtins import os import sys +import threading +import time +import datetime +from lib.shtime import Shtime if __name__ == '__main__': builtins.SDP_standalone = True @@ -56,12 +60,37 @@ class denon(SmartDevicePlugin): PLUGIN_VERSION = '1.0.1' def on_connect(self, by=None): + self.logger.debug(f"Connected.. Cycle for retry: {self._sendretry_cycle}") + if self._send_retries >= 1: + self.scheduler_add('resend', self._resend, cycle=self._sendretry_cycle) self.logger.debug("Checking for custom input names.") self.send_command('general.custom_inputnames') + if self.scheduler_get('read_initial_values'): + return + elif self._initial_value_read_delay > 0: + self.logger.dbghigh(f"On connect reading initial values after {self._initial_value_read_delay} seconds.") + self.scheduler_add('read_initial_values', self._read_initial_values, value={'force': True}, next=self.shtime.now() + datetime.timedelta(seconds=self._initial_value_read_delay)) + else: + self._read_initial_values(True) - def _set_device_defaults(self): + def _on_suspend(self): + for scheduler in self.scheduler_get_all(): + self.scheduler_remove(scheduler) + + def _on_resume(self): + if self.scheduler_get('resend'): + self.scheduler_remove('resend') + self.logger.debug(f"Resuming.. Cycle for retry: {self._sendretry_cycle}") + if self._send_retries >= 1: + self.scheduler_add('resend', self._resend, cycle=self._sendretry_cycle) + def _set_device_defaults(self): + self._use_callbacks = True self._custom_inputnames = {} + self._sending = {} + self._sending_lock = threading.Lock() + self._send_retries = self.get_parameter_value('send_retries') + self._sendretry_cycle = int(self.get_parameter_value('sendretry_cycle')) # set our own preferences concerning connections if PLUGIN_ATTR_NET_HOST in self._parameters and self._parameters[PLUGIN_ATTR_NET_HOST]: @@ -80,8 +109,33 @@ def _set_device_defaults(self): # 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 _send(self, data_dict, resend_info=None): + if resend_info is None: + resend_info = {} + if resend_info.get('returnvalue') is not None: + self._sending.update({resend_info.get('command'): resend_info}) + return self._connection.send(data_dict) + + def _resend(self): + if not self.alive or self.suspended: + return + self._sending_lock.acquire(True, 2) + _remove_commands = [] + for command in list(self._sending.keys()): + _retry = self._sending[command].get("retry") or 0 + _sent = True + if _retry is not None and _retry < self._send_retries: + self.logger.debug(f'Re-sending {command}, retry {_retry}.') + _sent = self.send_command(command, self._sending[command].get("returnvalue"), return_result=True, retry=_retry + 1) + elif _retry is not None and _retry >= self._send_retries: + _sent = False + if _sent is False: + _remove_commands.append(command) + self.logger.info(f"Giving up re-sending {command} after {_retry} retries.") + for command in _remove_commands: + self._sending.pop(command) + if self._sending_lock.locked(): + self._sending_lock.release() def _transform_send_data(self, data=None, **kwargs): if isinstance(data, dict): @@ -89,6 +143,25 @@ def _transform_send_data(self, data=None, **kwargs): data['payload'] = f'{data.get("payload", "")}{data["limit_response"].decode("unicode-escape")}' return data + 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') + def on_data_received(self, by, data, command=None): commands = None @@ -132,7 +205,18 @@ def on_data_received(self, by, data, command=None): 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.logger.debug(f'received data "{data}" for command {command} converted to value {value}.') + if command in self._sending: + self._sending_lock.acquire(True, 2) + _retry = self._sending[command].get("retry") or 0 + _compare = self._sending[command].get('returnvalue') + if self._sending[command].get('returntype')(value) == _compare: + self._sending.pop(command) + self.logger.debug(f'Correct answer for {command}, removing from send. Sending {self._sending}') + elif _retry is not None and _retry <= self._send_retries: + self.logger.debug(f'Should send again {self._sending}...') + if self._sending_lock.locked(): + self._sending_lock.release() self._dispatch_callback(command, value, by) self._process_additional_data(base_command, data, value, custom, by) @@ -145,4 +229,4 @@ def _check_for_custominputs(self, command, data): 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..d256af4ac 100755 --- a/denon/commands.py +++ b/denon/commands.py @@ -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/plugin.yaml b/denon/plugin.yaml index 3ab797598..dd8670950 100755 --- a/denon/plugin.yaml +++ b/denon/plugin.yaml @@ -163,6 +163,53 @@ 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 + connect_cycle: type: num default: 3 @@ -195,7 +242,6 @@ parameters: de: Item-Pfad für das Standby-Item en: item path for standby switch item - item_attributes: denon_command: @@ -226,6 +272,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 +318,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 +550,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 +645,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 +732,214 @@ 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: + denon_command@instance: zone1.control.volumemax + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - zone1 - zone1.control - denon_read_initial: true 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 +947,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 +958,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 +969,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 +980,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 +991,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 +1002,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 +1013,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 +1024,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 +1035,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 +1046,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 +1057,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 +1068,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 +1082,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 +1097,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 +1108,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 +1131,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 +1161,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 +1172,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 +1183,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 +1194,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 +1205,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 +1216,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 +1227,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 +1238,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 +1249,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 +1272,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 +1283,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 +1294,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 +1317,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 +1340,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 +1354,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 +1431,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 +1492,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 +1517,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 +1546,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 +1560,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 +1575,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 +1598,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 +1642,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 +1721,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 +1757,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 +1771,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 +1786,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 +1809,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 +1842,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 +1872,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 +1958,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 +2028,147 @@ 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: + denon_command@instance: zone1.control.volumemax + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - ALL - ALL.zone1 - ALL.zone1.control - denon_read_initial: true 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 +2177,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 +2189,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 +2201,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 +2213,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 +2225,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 +2237,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 +2249,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 +2261,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 +2273,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 +2285,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 +2297,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 +2312,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 +2328,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 +2340,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 +2364,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 +2395,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 +2407,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 +2419,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 +2431,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 +2443,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 +2467,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 +2494,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 +2559,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 +2586,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 +2619,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 +2884,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 +2970,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 +3040,226 @@ 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: + denon_command@instance: zone1.control.volumemax + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X6300H - AVR-X6300H.zone1 - AVR-X6300H.zone1.control - denon_read_initial: true 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 +3268,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 +3280,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 +3292,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 +3304,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 +3316,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 +3328,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 +3340,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 +3352,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 +3364,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 +3376,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 +3388,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 +3400,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 +3415,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 +3431,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 +3443,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 +3467,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 +3498,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 +3510,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 +3522,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 +3534,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 +3546,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 +3558,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 +3570,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 +3594,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 +3621,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 +3636,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 +3647,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 +3658,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 +3669,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 +3680,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 +3691,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 +3705,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 +3770,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 +3797,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 +3827,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 +3842,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 +3858,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 +3882,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 +3928,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 +4013,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 +4050,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 +4065,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 +4081,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 +4105,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 +4139,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 +4169,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 +4255,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 +4325,147 @@ 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: + denon_command@instance: zone1.control.volumemax + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X4300H - AVR-X4300H.zone1 - AVR-X4300H.zone1.control - denon_read_initial: true 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 +4474,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 +4486,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 +4498,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 +4510,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 +4522,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 +4534,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 +4546,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 +4558,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 +4570,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 +4582,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 +4594,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 +4606,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 +4621,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 +4637,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 +4649,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 +4673,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 +4704,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 +4716,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 +4728,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 +4740,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 +4752,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 +4764,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 +4788,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 +4800,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 +4824,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 +4851,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 +4866,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 +4877,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 +4888,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 +4899,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 +4910,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 +4921,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 +4935,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 +5000,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 +5027,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 +5057,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 +5072,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 +5088,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 +5112,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 +5158,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 +5243,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 +5280,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 +5295,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 +5311,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 +5335,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 +5369,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 +5399,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 +5494,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 +5586,147 @@ 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: + denon_command@instance: zone1.control.volumemax + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X3300W - AVR-X3300W.zone1 - AVR-X3300W.zone1.control - denon_read_initial: true 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 +5735,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 +5747,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 +5759,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 +5771,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 +5783,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 +5795,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 +5807,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 +5819,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 +5831,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 +5843,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 +5855,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 +5867,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 +5882,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 +5898,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 +5910,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 +5934,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 +5965,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 +5977,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 +5989,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 +6001,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 +6013,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 +6037,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 +6049,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 +6073,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 +6100,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 +6115,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 +6126,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 +6137,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 +6148,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 +6159,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 +6173,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 +6238,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 +6265,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 +6295,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 +6310,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 +6326,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 +6350,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 +6396,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 +6426,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 +6521,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 +6613,147 @@ 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: + denon_command@instance: zone1.control.volumemax + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X2300W - AVR-X2300W.zone1 - AVR-X2300W.zone1.control - denon_read_initial: true 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 +6762,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 +6774,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 +6786,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 +6798,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 +6810,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 +6822,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 +6834,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 +6846,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 +6858,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 +6870,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 +6882,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 +6897,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 +6913,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 +6925,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 +6949,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 +6980,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 +6992,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 +7004,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 +7016,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 +7028,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 +7052,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 +7064,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 +7088,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 +7115,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 +7130,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 +7141,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 +7152,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 +7163,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 +7174,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 +7185,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 +7199,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 +7264,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 +7291,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 +7321,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 +7336,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 +7355,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 +7385,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 +7480,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 +7572,147 @@ 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: + denon_command@instance: zone1.control.volumemax + denon_read@instance: true + denon_write@instance: false + denon_read_group@instance: - AVR-X1300W - AVR-X1300W.zone1 - AVR-X1300W.zone1.control - denon_read_initial: true 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 +7721,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 +7733,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 +7745,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 +7757,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 +7769,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 +7781,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 +7793,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 +7805,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 +7817,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 +7829,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 +7841,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 +7856,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 +7872,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 +7884,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 +7908,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 +7939,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 +7951,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 +7963,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 +7975,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 +7987,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 +8011,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 +8023,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 +8047,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 +8074,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 +8139,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 +8166,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 diff --git a/stateengine/StateEngineCondition.py b/stateengine/StateEngineCondition.py index ce3dd0e75..a4f0551b2 100755 --- a/stateengine/StateEngineCondition.py +++ b/stateengine/StateEngineCondition.py @@ -850,7 +850,7 @@ def check_eval(eval_or_status_eval): if self.__status is not None: # noinspection PyUnusedLocal - self._log_debug("Trying to get {} of status item {}", eval_type, self.__status) + self._log_debug("Trying to get {} of status item {}", eval_type, self.__status.property.path) return self.__status.property.last_change_age if eval_type == 'age' else\ self.__status.property.last_change_by if eval_type == 'changedby' else\ self.__status.property.last_update_by if eval_type == 'updatedby' else\ @@ -858,7 +858,7 @@ def check_eval(eval_or_status_eval): self.__status.property.value elif self.__item is not None: # noinspection PyUnusedLocal - self._log_debug("Trying to get {} of item {}", eval_type, self.__item) + self._log_debug("Trying to get {} of item {}", eval_type, self.__item.property.path) return self.__item.property.last_change_age if eval_type == 'age' else\ self.__item.property.last_change_by if eval_type == 'changedby' else\ self.__item.property.last_update_by if eval_type == 'updatedby' else\