From 642581a0986c4774dce379435034e530674b9e09 Mon Sep 17 00:00:00 2001 From: albaintor <118518828+albaintor@users.noreply.github.com> Date: Sat, 16 Mar 2024 11:54:40 +0100 Subject: [PATCH 1/8] Added additional commands --- denonavr/const.py | 33 +++++++++++++++++++++++++++++++++ denonavr/foundation.py | 40 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 73 insertions(+) diff --git a/denonavr/const.py b/denonavr/const.py index 5af69b9..5d7932e 100644 --- a/denonavr/const.py +++ b/denonavr/const.py @@ -43,6 +43,17 @@ "command_set_all_zone_stereo", "command_pause", "command_play", + "command_cusor_up", + "command_cusor_down", + "command_cusor_left", + "command_cusor_right", + "command_cusor_enter", + "command_back", + "command_info", + "command_options", + "command_setup_open", + "command_setup_close", + "command_setup_query", ], ) TelnetCommands = namedtuple( @@ -327,6 +338,17 @@ COMMAND_MUTE_OFF_URL = "/goform/formiPhoneAppMute.xml?1+MuteOff" COMMAND_SEL_SM_URL = "/goform/formiPhoneAppDirect.xml?MS" COMMAND_SET_ZST_URL = "/goform/formiPhoneAppDirect.xml?MN" +COMMAND_CURSOR_UP = "/goform/formiPhoneAppDirect.xml?MNCUP" +COMMAND_CURSOR_DOWN = "/goform/formiPhoneAppDirect.xml?MNCDN" +COMMAND_CURSOR_LEFT = "/goform/formiPhoneAppDirect.xml?MNCLT" +COMMAND_CURSOR_RIGHT = "/goform/formiPhoneAppDirect.xml?MNCRT" +COMMAND_CURSOR_ENTER = "/goform/formiPhoneAppDirect.xml?MNENT" +COMMAND_BACK = "/goform/formiPhoneAppDirect.xml?MNRTN" +COMMAND_INFO = "/goform/formiPhoneAppDirect.xml?MNINF" +COMMAND_OPTIONS = "/goform/formiPhoneAppDirect.xml?MNOPT" +COMMAND_SETUP_OPEN = "/goform/formiPhoneAppDirect.xml?MNMEN%20ON" +COMMAND_SETUP_CLOSE = "/goform/formiPhoneAppDirect.xml?MNMEN%20OFF" +COMMAND_SETUP_QUERY = "/goform/formiPhoneAppDirect.xml?MNMEN?" # Zone 2 URLs STATUS_Z2_URL = "/goform/formZone2_Zone2XmlStatus.xml" @@ -375,6 +397,17 @@ command_set_all_zone_stereo=COMMAND_SET_ZST_URL, command_pause=COMMAND_PAUSE, command_play=COMMAND_PLAY, + command_cusor_up=COMMAND_CURSOR_UP, + command_cusor_down=COMMAND_CURSOR_DOWN, + command_cusor_left=COMMAND_CURSOR_LEFT, + command_cusor_right=COMMAND_CURSOR_RIGHT, + command_cusor_enter=COMMAND_CURSOR_ENTER, + command_back=COMMAND_BACK, + command_info=COMMAND_INFO, + command_options=COMMAND_OPTIONS, + command_setup_open=COMMAND_SETUP_OPEN, + command_setup_close=COMMAND_SETUP_CLOSE, + command_setup_query=COMMAND_SETUP_QUERY ) ZONE2_URLS = ReceiverURLs( diff --git a/denonavr/foundation.py b/denonavr/foundation.py index 319c386..3138b0f 100644 --- a/denonavr/foundation.py +++ b/denonavr/foundation.py @@ -535,6 +535,46 @@ async def async_power_off(self) -> None: else: await self.api.async_get_command(self.urls.command_power_standby) + async def async_cursor_up(self) -> None: + """Cursor Up on receiver via HTTP get command.""" + await self.api.async_get_command(self.urls.command_cusor_up) + + async def async_cursor_down(self) -> None: + """Cursor Down on receiver via HTTP get command.""" + await self.api.async_get_command(self.urls.command_cusor_down) + + async def async_cursor_left(self) -> None: + """Cursor Left on receiver via HTTP get command.""" + await self.api.async_get_command(self.urls.command_cusor_left) + + async def async_cursor_right(self) -> None: + """Cursor Right on receiver via HTTP get command.""" + await self.api.async_get_command(self.urls.command_cusor_right) + + async def async_cursor_enter(self) -> None: + """Cursor Enter on receiver via HTTP get command.""" + await self.api.async_get_command(self.urls.command_cusor_enter) + + async def async_back(self) -> None: + """Back command on receiver via HTTP get command.""" + await self.api.async_get_command(self.urls.command_back) + + async def async_info(self) -> None: + """Info OSD on receiver via HTTP get command.""" + await self.api.async_get_command(self.urls.command_info) + + async def async_options(self) -> None: + """Options menu on receiver via HTTP get command.""" + await self.api.async_get_command(self.urls.command_options) + + async def async_settings_menu(self) -> None: + """Options menu on receiver via HTTP get command.""" + res = await self.api.async_get_command(self.urls.command_setup_query) + if res is not None and res == "MNMEN ON": + await self.api.async_get_command(self.urls.command_setup_close) + else: + await self.api.async_get_command(self.urls.command_setup_open) + @attr.s(auto_attribs=True, on_setattr=DENON_ATTR_SETATTR) class DenonAVRFoundation: From f55ff037cb0232abcd60b46ae6d7649cc3dd1190 Mon Sep 17 00:00:00 2001 From: albaintor <118518828+albaintor@users.noreply.github.com> Date: Sat, 16 Mar 2024 15:32:26 +0100 Subject: [PATCH 2/8] Added corresponding telnet commands for additional commands (HTTP GET or TELNET) --- denonavr/const.py | 24 +++++++++++++++++++++- denonavr/foundation.py | 45 ++++++++++++++++++++++++++++++++---------- 2 files changed, 58 insertions(+), 11 deletions(-) diff --git a/denonavr/const.py b/denonavr/const.py index 5d7932e..008b8da 100644 --- a/denonavr/const.py +++ b/denonavr/const.py @@ -79,7 +79,18 @@ "command_tonecontrol", "command_bass", "command_treble", - ], + "command_cusor_up", + "command_cusor_down", + "command_cusor_left", + "command_cusor_right", + "command_cusor_enter", + "command_back", + "command_info", + "command_options", + "command_setup_open", + "command_setup_close", + "command_setup_query" + ] ) # AVR-X search patterns @@ -536,6 +547,17 @@ command_tonecontrol="PSTONE CTRL ", command_bass="PSBAS ", command_treble="PSTRE ", + command_cusor_up="MNCUP", + command_cusor_down="MNCDN", + command_cusor_left="MNCLT", + command_cusor_right="MNCRT", + command_cusor_enter="MNENT", + command_back="MNRTN", + command_info="MNINF", + command_options="MNOPT", + command_setup_open="MNMEN ON", + command_setup_close="MNMEN OFF", + command_setup_query="MNMEN?" ) ZONE2_TELNET_COMMANDS = TelnetCommands( diff --git a/denonavr/foundation.py b/denonavr/foundation.py index 3138b0f..80362b4 100644 --- a/denonavr/foundation.py +++ b/denonavr/foundation.py @@ -537,15 +537,24 @@ async def async_power_off(self) -> None: async def async_cursor_up(self) -> None: """Cursor Up on receiver via HTTP get command.""" - await self.api.async_get_command(self.urls.command_cusor_up) + if self.telnet_available: + await self.telnet_api.async_send_commands(self.telnet_commands.command_cusor_up) + else: + await self.api.async_get_command(self.urls.command_cusor_up) async def async_cursor_down(self) -> None: """Cursor Down on receiver via HTTP get command.""" - await self.api.async_get_command(self.urls.command_cusor_down) + if self.telnet_available: + await self.telnet_api.async_send_commands(self.telnet_commands.command_cusor_down) + else: + await self.api.async_get_command(self.urls.command_cusor_down) async def async_cursor_left(self) -> None: """Cursor Left on receiver via HTTP get command.""" - await self.api.async_get_command(self.urls.command_cusor_left) + if self.telnet_available: + await self.telnet_api.async_send_commands(self.telnet_commands.command_cusor_left) + else: + await self.api.async_get_command(self.urls.command_cusor_left) async def async_cursor_right(self) -> None: """Cursor Right on receiver via HTTP get command.""" @@ -553,15 +562,24 @@ async def async_cursor_right(self) -> None: async def async_cursor_enter(self) -> None: """Cursor Enter on receiver via HTTP get command.""" - await self.api.async_get_command(self.urls.command_cusor_enter) + if self.telnet_available: + await self.telnet_api.async_send_commands(self.telnet_commands.command_cusor_enter) + else: + await self.api.async_get_command(self.urls.command_cusor_enter) async def async_back(self) -> None: """Back command on receiver via HTTP get command.""" - await self.api.async_get_command(self.urls.command_back) + if self.telnet_available: + await self.telnet_api.async_send_commands(self.telnet_commands.command_back) + else: + await self.api.async_get_command(self.urls.command_back) async def async_info(self) -> None: """Info OSD on receiver via HTTP get command.""" - await self.api.async_get_command(self.urls.command_info) + if self.telnet_available: + await self.telnet_api.async_send_commands(self.telnet_commands.command_info) + else: + await self.api.async_get_command(self.urls.command_info) async def async_options(self) -> None: """Options menu on receiver via HTTP get command.""" @@ -569,11 +587,18 @@ async def async_options(self) -> None: async def async_settings_menu(self) -> None: """Options menu on receiver via HTTP get command.""" - res = await self.api.async_get_command(self.urls.command_setup_query) - if res is not None and res == "MNMEN ON": - await self.api.async_get_command(self.urls.command_setup_close) + if self.telnet_available: + res = await self.telnet_api.async_send_commands(self.telnet_commands.command_setup_query) + if res is not None and res == "MNMEN ON": + await self.telnet_api.async_send_commands(self.telnet_commands.command_setup_close) + else: + await self.telnet_api.async_send_commands(self.telnet_commands.command_setup_open) else: - await self.api.async_get_command(self.urls.command_setup_open) + res = await self.api.async_get_command(self.urls.command_setup_query) + if res is not None and res == "MNMEN ON": + await self.api.async_get_command(self.urls.command_setup_close) + else: + await self.api.async_get_command(self.urls.command_setup_open) @attr.s(auto_attribs=True, on_setattr=DENON_ATTR_SETATTR) From 1868d1359c27c38b63bb53930582e97b055432d5 Mon Sep 17 00:00:00 2001 From: albaintor <118518828+albaintor@users.noreply.github.com> Date: Sun, 17 Mar 2024 08:58:26 +0100 Subject: [PATCH 3/8] Fix --- denonavr/foundation.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/denonavr/foundation.py b/denonavr/foundation.py index 80362b4..6130d8b 100644 --- a/denonavr/foundation.py +++ b/denonavr/foundation.py @@ -558,7 +558,10 @@ async def async_cursor_left(self) -> None: async def async_cursor_right(self) -> None: """Cursor Right on receiver via HTTP get command.""" - await self.api.async_get_command(self.urls.command_cusor_right) + if self.telnet_available: + await self.telnet_api.async_send_commands(self.telnet_commands.command_cusor_right) + else: + await self.api.async_get_command(self.urls.command_cusor_right) async def async_cursor_enter(self) -> None: """Cursor Enter on receiver via HTTP get command.""" From 987cd3bfce83eb5f2fef5e17fb05825a0eb3e0b6 Mon Sep 17 00:00:00 2001 From: albaintor <118518828+albaintor@users.noreply.github.com> Date: Wed, 20 Mar 2024 10:36:40 +0100 Subject: [PATCH 4/8] Menu open : replaced telnet by http command to get menu status --- denonavr/foundation.py | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/denonavr/foundation.py b/denonavr/foundation.py index 6130d8b..2caf001 100644 --- a/denonavr/foundation.py +++ b/denonavr/foundation.py @@ -590,14 +590,13 @@ async def async_options(self) -> None: async def async_settings_menu(self) -> None: """Options menu on receiver via HTTP get command.""" + res = await self.api.async_get_command(self.urls.command_setup_query) if self.telnet_available: - res = await self.telnet_api.async_send_commands(self.telnet_commands.command_setup_query) if res is not None and res == "MNMEN ON": await self.telnet_api.async_send_commands(self.telnet_commands.command_setup_close) else: await self.telnet_api.async_send_commands(self.telnet_commands.command_setup_open) else: - res = await self.api.async_get_command(self.urls.command_setup_query) if res is not None and res == "MNMEN ON": await self.api.async_get_command(self.urls.command_setup_close) else: From b17edc8fe6c06b2f2c30c4b48fe70d798da11593 Mon Sep 17 00:00:00 2001 From: albaintor <118518828+albaintor@users.noreply.github.com> Date: Fri, 5 Apr 2024 10:52:22 +0200 Subject: [PATCH 5/8] Fix formatting --- denonavr/foundation.py | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/denonavr/foundation.py b/denonavr/foundation.py index 2caf001..4d3bfc4 100644 --- a/denonavr/foundation.py +++ b/denonavr/foundation.py @@ -538,35 +538,45 @@ async def async_power_off(self) -> None: async def async_cursor_up(self) -> None: """Cursor Up on receiver via HTTP get command.""" if self.telnet_available: - await self.telnet_api.async_send_commands(self.telnet_commands.command_cusor_up) + await self.telnet_api.async_send_commands( + self.telnet_commands.command_cusor_up + ) else: await self.api.async_get_command(self.urls.command_cusor_up) async def async_cursor_down(self) -> None: """Cursor Down on receiver via HTTP get command.""" if self.telnet_available: - await self.telnet_api.async_send_commands(self.telnet_commands.command_cusor_down) + await self.telnet_api.async_send_commands( + self.telnet_commands.command_cusor_down + ) else: await self.api.async_get_command(self.urls.command_cusor_down) async def async_cursor_left(self) -> None: """Cursor Left on receiver via HTTP get command.""" if self.telnet_available: - await self.telnet_api.async_send_commands(self.telnet_commands.command_cusor_left) + await self.telnet_api.async_send_commands( + self.telnet_commands.command_cusor_left + ) else: await self.api.async_get_command(self.urls.command_cusor_left) async def async_cursor_right(self) -> None: """Cursor Right on receiver via HTTP get command.""" if self.telnet_available: - await self.telnet_api.async_send_commands(self.telnet_commands.command_cusor_right) + await self.telnet_api.async_send_commands( + self.telnet_commands.command_cusor_right + ) else: await self.api.async_get_command(self.urls.command_cusor_right) async def async_cursor_enter(self) -> None: """Cursor Enter on receiver via HTTP get command.""" if self.telnet_available: - await self.telnet_api.async_send_commands(self.telnet_commands.command_cusor_enter) + await self.telnet_api.async_send_commands( + self.telnet_commands.command_cusor_enter + ) else: await self.api.async_get_command(self.urls.command_cusor_enter) @@ -593,9 +603,13 @@ async def async_settings_menu(self) -> None: res = await self.api.async_get_command(self.urls.command_setup_query) if self.telnet_available: if res is not None and res == "MNMEN ON": - await self.telnet_api.async_send_commands(self.telnet_commands.command_setup_close) + await self.telnet_api.async_send_commands( + self.telnet_commands.command_setup_close + ) else: - await self.telnet_api.async_send_commands(self.telnet_commands.command_setup_open) + await self.telnet_api.async_send_commands( + self.telnet_commands.command_setup_open + ) else: if res is not None and res == "MNMEN ON": await self.api.async_get_command(self.urls.command_setup_close) From ffe58fa191a4cb9db6ebe25d3904b24905cb17c2 Mon Sep 17 00:00:00 2001 From: albaintor <118518828+albaintor@users.noreply.github.com> Date: Fri, 19 Apr 2024 09:23:55 +0200 Subject: [PATCH 6/8] Fixed testings with missing commands and added public methods --- denonavr/const.py | 46 +++++++++++++++++++++++++++- denonavr/denonavr.py | 72 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 117 insertions(+), 1 deletion(-) diff --git a/denonavr/const.py b/denonavr/const.py index 008b8da..3aa9602 100644 --- a/denonavr/const.py +++ b/denonavr/const.py @@ -444,6 +444,17 @@ command_set_all_zone_stereo=COMMAND_SET_ZST_URL, command_pause=COMMAND_PAUSE, command_play=COMMAND_PLAY, + command_cusor_up=COMMAND_CURSOR_UP, + command_cusor_down=COMMAND_CURSOR_DOWN, + command_cusor_left=COMMAND_CURSOR_LEFT, + command_cusor_right=COMMAND_CURSOR_RIGHT, + command_cusor_enter=COMMAND_CURSOR_ENTER, + command_back=COMMAND_BACK, + command_info=COMMAND_INFO, + command_options=COMMAND_OPTIONS, + command_setup_open=COMMAND_SETUP_OPEN, + command_setup_close=COMMAND_SETUP_CLOSE, + command_setup_query=COMMAND_SETUP_QUERY, ) ZONE3_URLS = ReceiverURLs( @@ -469,6 +480,17 @@ command_set_all_zone_stereo=COMMAND_SET_ZST_URL, command_pause=COMMAND_PAUSE, command_play=COMMAND_PLAY, + command_cusor_up=COMMAND_CURSOR_UP, + command_cusor_down=COMMAND_CURSOR_DOWN, + command_cusor_left=COMMAND_CURSOR_LEFT, + command_cusor_right=COMMAND_CURSOR_RIGHT, + command_cusor_enter=COMMAND_CURSOR_ENTER, + command_back=COMMAND_BACK, + command_info=COMMAND_INFO, + command_options=COMMAND_OPTIONS, + command_setup_open=COMMAND_SETUP_OPEN, + command_setup_close=COMMAND_SETUP_CLOSE, + command_setup_query=COMMAND_SETUP_QUERY, ) # Telnet Events @@ -557,7 +579,7 @@ command_options="MNOPT", command_setup_open="MNMEN ON", command_setup_close="MNMEN OFF", - command_setup_query="MNMEN?" + command_setup_query="MNMEN?", ) ZONE2_TELNET_COMMANDS = TelnetCommands( @@ -581,6 +603,17 @@ command_tonecontrol="PSTONE CTRL ", command_bass="PSBAS ", command_treble="PSTRE ", + command_cusor_up="MNCUP", + command_cusor_down="MNCDN", + command_cusor_left="MNCLT", + command_cusor_right="MNCRT", + command_cusor_enter="MNENT", + command_back="MNRTN", + command_info="MNINF", + command_options="MNOPT", + command_setup_open="MNMEN ON", + command_setup_close="MNMEN OFF", + command_setup_query="MNMEN?", ) ZONE3_TELNET_COMMANDS = TelnetCommands( @@ -604,6 +637,17 @@ command_tonecontrol="PSTONE CTRL ", command_bass="PSBAS ", command_treble="PSTRE ", + command_cusor_up="MNCUP", + command_cusor_down="MNCDN", + command_cusor_left="MNCLT", + command_cusor_right="MNCRT", + command_cusor_enter="MNENT", + command_back="MNRTN", + command_info="MNINF", + command_options="MNOPT", + command_setup_open="MNMEN ON", + command_setup_close="MNMEN OFF", + command_setup_query="MNMEN?", ) # States diff --git a/denonavr/denonavr.py b/denonavr/denonavr.py index ff2fa60..18a18ba 100644 --- a/denonavr/denonavr.py +++ b/denonavr/denonavr.py @@ -853,3 +853,75 @@ def treble_down(self) -> None: Note: Doesn't work, if Dynamic Equalizer is active """ + + async def async_cursor_up(self) -> None: + """Sends cursor up to receiver via HTTP get command.""" + await self._device.async_cursor_up() + + @run_async_synchronously(async_func=async_cursor_up) + def cursor_up(self) -> None: + """Sends cursor up to receiver via HTTP get command.""" + + async def async_cursor_down(self) -> None: + """Sends cursor down to receiver via HTTP get command.""" + await self._device.async_cursor_down() + + @run_async_synchronously(async_func=async_cursor_down) + def cursor_down(self) -> None: + """Sends cursor down to receiver via HTTP get command.""" + + async def async_cursor_left(self) -> None: + """Sends cursor left to receiver via HTTP get command.""" + await self._device.async_cursor_left() + + @run_async_synchronously(async_func=async_cursor_left) + def cursor_left(self) -> None: + """Sends cursor left to receiver via HTTP get command.""" + + async def async_cursor_right(self) -> None: + """Sends cursor right to receiver via HTTP get command.""" + await self._device.async_cursor_right() + + @run_async_synchronously(async_func=async_cursor_right) + def cursor_right(self) -> None: + """Sends cursor right to receiver via HTTP get command.""" + + async def async_cursor_enter(self) -> None: + """Sends cursor enter to receiver via HTTP get command.""" + await self._device.async_cursor_enter() + + @run_async_synchronously(async_func=async_cursor_enter) + def cursor_enter(self) -> None: + """Sends cursor enter to receiver via HTTP get command.""" + + async def async_back(self) -> None: + """Sends back to receiver via HTTP get command.""" + await self._device.async_back() + + @run_async_synchronously(async_func=async_back) + def back(self) -> None: + """Sends back to receiver via HTTP get command.""" + + async def async_info(self) -> None: + """Sends info to receiver via HTTP get command.""" + await self._device.async_info() + + @run_async_synchronously(async_func=async_info) + def info(self) -> None: + """Sends info to receiver via HTTP get command.""" + + async def async_options(self) -> None: + """Raise options menu to receiver via HTTP get command.""" + await self._device.async_options() + + @run_async_synchronously(async_func=async_options) + def options(self) -> None: + """Raise options menu to receiver via HTTP get command.""" + + async def async_settings_menu(self) -> None: + """Raise settings menu to receiver via HTTP get command.""" + await self._device.async_settings_menu() + + @run_async_synchronously(async_func=async_settings_menu) + def settings_menu(self) -> None: + """Raise settings menu to receiver via HTTP get command.""" From 67d4f1148c8f064884fe5a1eb0acabce6a138d15 Mon Sep 17 00:00:00 2001 From: albaintor <118518828+albaintor@users.noreply.github.com> Date: Thu, 2 May 2024 19:00:45 +0200 Subject: [PATCH 7/8] Fixed formating --- denonavr/denonavr.py | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/denonavr/denonavr.py b/denonavr/denonavr.py index c275f54..0a3d2df 100644 --- a/denonavr/denonavr.py +++ b/denonavr/denonavr.py @@ -669,31 +669,31 @@ async def async_treble_down(self) -> None: await self.tonecontrol.async_treble_down() async def async_cursor_up(self) -> None: - """Sends cursor up to receiver via HTTP get command.""" + """Send cursor up to receiver via HTTP get command.""" await self._device.async_cursor_up() async def async_cursor_down(self) -> None: - """Sends cursor down to receiver via HTTP get command.""" + """Send cursor down to receiver via HTTP get command.""" await self._device.async_cursor_down() async def async_cursor_left(self) -> None: - """Sends cursor left to receiver via HTTP get command.""" + """Send cursor left to receiver via HTTP get command.""" await self._device.async_cursor_left() async def async_cursor_right(self) -> None: - """Sends cursor right to receiver via HTTP get command.""" + """Send cursor right to receiver via HTTP get command.""" await self._device.async_cursor_right() async def async_cursor_enter(self) -> None: - """Sends cursor enter to receiver via HTTP get command.""" + """Send cursor enter to receiver via HTTP get command.""" await self._device.async_cursor_enter() async def async_back(self) -> None: - """Sends back to receiver via HTTP get command.""" + """Send back to receiver via HTTP get command.""" await self._device.async_back() async def async_info(self) -> None: - """Sends info to receiver via HTTP get command.""" + """Send info to receiver via HTTP get command.""" await self._device.async_info() async def async_options(self) -> None: From f3dcf0cfd30bc6c7b0cfdae91df818ca7b64d08e Mon Sep 17 00:00:00 2001 From: ol-iver Date: Sat, 4 May 2024 21:02:02 +0200 Subject: [PATCH 8/8] Format with `black` --- denonavr/const.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/denonavr/const.py b/denonavr/const.py index 06f64c6..b5a3aed 100644 --- a/denonavr/const.py +++ b/denonavr/const.py @@ -89,8 +89,8 @@ "command_options", "command_setup_open", "command_setup_close", - "command_setup_query" - ] + "command_setup_query", + ], ) # AVR-X search patterns @@ -419,7 +419,7 @@ command_options=COMMAND_OPTIONS, command_setup_open=COMMAND_SETUP_OPEN, command_setup_close=COMMAND_SETUP_CLOSE, - command_setup_query=COMMAND_SETUP_QUERY + command_setup_query=COMMAND_SETUP_QUERY, ) ZONE2_URLS = ReceiverURLs(