denonavr 1.1.2__py3-none-any.whl → 1.3.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- denonavr/__init__.py +1 -1
- denonavr/api.py +150 -115
- denonavr/appcommand.py +48 -12
- denonavr/audyssey.py +28 -29
- denonavr/const.py +520 -126
- denonavr/decorators.py +2 -3
- denonavr/denonavr.py +198 -100
- denonavr/dirac.py +7 -11
- denonavr/foundation.py +587 -363
- denonavr/input.py +110 -71
- denonavr/soundmode.py +164 -66
- denonavr/ssdp.py +12 -11
- denonavr/tonecontrol.py +2 -6
- denonavr/volume.py +47 -66
- {denonavr-1.1.2.dist-info → denonavr-1.3.0.dist-info}/METADATA +2 -1
- denonavr-1.3.0.dist-info/RECORD +20 -0
- {denonavr-1.1.2.dist-info → denonavr-1.3.0.dist-info}/WHEEL +1 -1
- denonavr-1.1.2.dist-info/RECORD +0 -20
- {denonavr-1.1.2.dist-info → denonavr-1.3.0.dist-info}/licenses/LICENSE +0 -0
- {denonavr-1.1.2.dist-info → denonavr-1.3.0.dist-info}/top_level.txt +0 -0
denonavr/denonavr.py
CHANGED
|
@@ -10,13 +10,14 @@ This module implements the interface to Denon AVR receivers.
|
|
|
10
10
|
import asyncio
|
|
11
11
|
import logging
|
|
12
12
|
import time
|
|
13
|
-
from typing import
|
|
13
|
+
from typing import Callable, Dict, List, Literal, Optional, Union
|
|
14
14
|
|
|
15
15
|
import attr
|
|
16
16
|
import httpx
|
|
17
17
|
|
|
18
18
|
from .audyssey import DenonAVRAudyssey, audyssey_factory
|
|
19
19
|
from .const import (
|
|
20
|
+
AVR_X,
|
|
20
21
|
DENON_ATTR_SETATTR,
|
|
21
22
|
MAIN_ZONE,
|
|
22
23
|
VALID_ZONES,
|
|
@@ -24,16 +25,21 @@ from .const import (
|
|
|
24
25
|
AutoStandbys,
|
|
25
26
|
BluetoothOutputModes,
|
|
26
27
|
DimmerModes,
|
|
28
|
+
DynamicVolumeSettings,
|
|
27
29
|
EcoModes,
|
|
28
30
|
HDMIAudioDecodes,
|
|
29
31
|
HDMIOutputs,
|
|
32
|
+
Illuminations,
|
|
33
|
+
InputModes,
|
|
34
|
+
MultiEQModes,
|
|
30
35
|
PanelLocks,
|
|
36
|
+
ReferenceLevelOffsets,
|
|
31
37
|
RoomSizes,
|
|
32
38
|
TransducerLPFs,
|
|
33
39
|
VideoProcessingModes,
|
|
34
40
|
)
|
|
35
41
|
from .dirac import DenonAVRDirac, dirac_factory
|
|
36
|
-
from .exceptions import AvrCommandError
|
|
42
|
+
from .exceptions import AvrCommandError, AvrForbiddenError, AvrIncompleteResponseError
|
|
37
43
|
from .foundation import DenonAVRFoundation, set_api_host, set_api_timeout
|
|
38
44
|
from .input import DenonAVRInput, input_factory
|
|
39
45
|
from .soundmode import DenonAVRSoundMode, sound_mode_factory
|
|
@@ -84,7 +90,7 @@ class DenonAVR(DenonAVRFoundation):
|
|
|
84
90
|
_timeout: float = attr.ib(
|
|
85
91
|
converter=float, on_setattr=[*DENON_ATTR_SETATTR, set_api_timeout], default=2.0
|
|
86
92
|
)
|
|
87
|
-
_zones: Dict[str,
|
|
93
|
+
_zones: Dict[str, "DenonAVR"] = attr.ib(
|
|
88
94
|
validator=attr.validators.deep_mapping(
|
|
89
95
|
attr.validators.in_(VALID_ZONES),
|
|
90
96
|
attr.validators.instance_of(DenonAVRFoundation),
|
|
@@ -94,6 +100,7 @@ class DenonAVR(DenonAVRFoundation):
|
|
|
94
100
|
init=False,
|
|
95
101
|
)
|
|
96
102
|
_setup_lock: asyncio.Lock = attr.ib(default=attr.Factory(asyncio.Lock))
|
|
103
|
+
_allow_recovery: bool = attr.ib(converter=bool, default=True, init=True)
|
|
97
104
|
audyssey: DenonAVRAudyssey = attr.ib(
|
|
98
105
|
validator=attr.validators.instance_of(DenonAVRAudyssey),
|
|
99
106
|
default=attr.Factory(audyssey_factory, takes_self=True),
|
|
@@ -193,23 +200,46 @@ class DenonAVR(DenonAVRFoundation):
|
|
|
193
200
|
# Create a cache id for this global update
|
|
194
201
|
cache_id = time.time()
|
|
195
202
|
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
203
|
+
try:
|
|
204
|
+
# Update device
|
|
205
|
+
await self._device.async_update(global_update=True, cache_id=cache_id)
|
|
206
|
+
|
|
207
|
+
# Update other functions
|
|
208
|
+
await self.input.async_update(global_update=True, cache_id=cache_id)
|
|
209
|
+
await self.soundmode.async_update(global_update=True, cache_id=cache_id)
|
|
210
|
+
await self.tonecontrol.async_update(global_update=True, cache_id=cache_id)
|
|
211
|
+
await self.vol.async_update(global_update=True, cache_id=cache_id)
|
|
212
|
+
except AvrForbiddenError:
|
|
213
|
+
# Recovery in case receiver changes port from 80 to 8080 which
|
|
214
|
+
# might happen at Denon AVR-X 2016 receivers
|
|
215
|
+
if self._device.use_avr_2016_update and self._allow_recovery:
|
|
216
|
+
self._allow_recovery = False
|
|
217
|
+
_LOGGER.warning(
|
|
218
|
+
"AppCommand.xml returns HTTP status 403. Running setup"
|
|
219
|
+
" again once to check if receiver interface switched "
|
|
220
|
+
"ports"
|
|
221
|
+
)
|
|
222
|
+
self._is_setup = False
|
|
223
|
+
await self.async_update()
|
|
224
|
+
else:
|
|
225
|
+
raise
|
|
226
|
+
except AvrIncompleteResponseError:
|
|
227
|
+
# Use status XML interface if Appcommand.xml returns an incomplete result
|
|
228
|
+
# Only AVR_X devices support both interfaces
|
|
229
|
+
if self._device.use_avr_2016_update and self._device.receiver == AVR_X:
|
|
230
|
+
_LOGGER.warning(
|
|
231
|
+
"Error verifying Appcommand.xml update method, it returns "
|
|
232
|
+
"an incomplete result set. Deactivating the interface"
|
|
233
|
+
)
|
|
234
|
+
self._device.use_avr_2016_update = False
|
|
235
|
+
await self.async_update()
|
|
236
|
+
else:
|
|
237
|
+
raise
|
|
238
|
+
else:
|
|
239
|
+
if not self._allow_recovery:
|
|
240
|
+
self._allow_recovery = True
|
|
241
|
+
_LOGGER.info("AppCommand.xml recovered from HTTP status 403 error")
|
|
199
242
|
|
|
200
|
-
# Update device
|
|
201
|
-
await self._device.async_update(global_update=True, cache_id=cache_id)
|
|
202
|
-
|
|
203
|
-
# Update other functions
|
|
204
|
-
await self.input.async_update(global_update=True, cache_id=cache_id)
|
|
205
|
-
await self.soundmode.async_update(global_update=True, cache_id=cache_id)
|
|
206
|
-
await self.tonecontrol.async_update(global_update=True, cache_id=cache_id)
|
|
207
|
-
await self.vol.async_update(global_update=True, cache_id=cache_id)
|
|
208
|
-
|
|
209
|
-
# AppCommand0300.xml interface is very slow, thus it is not included
|
|
210
|
-
# into main update
|
|
211
|
-
# await self.audyssey.async_update(
|
|
212
|
-
# global_update=True, cache_id=cache_id)
|
|
213
243
|
_LOGGER.debug("Finished denonavr update")
|
|
214
244
|
|
|
215
245
|
async def async_update_tonecontrol(self):
|
|
@@ -232,14 +262,12 @@ class DenonAVR(DenonAVRFoundation):
|
|
|
232
262
|
"""Send telnet commands to the receiver."""
|
|
233
263
|
self._device.telnet_api.send_commands(*commands)
|
|
234
264
|
|
|
235
|
-
def register_callback(
|
|
236
|
-
self, event: str, callback: Callable[[str, str, str], Awaitable[None]]
|
|
237
|
-
):
|
|
265
|
+
def register_callback(self, event: str, callback: Callable[[str, str, str], None]):
|
|
238
266
|
"""Register a callback for telnet events."""
|
|
239
267
|
self._device.telnet_api.register_callback(event, callback=callback)
|
|
240
268
|
|
|
241
269
|
def unregister_callback(
|
|
242
|
-
self, event: str, callback: Callable[[str, str, str],
|
|
270
|
+
self, event: str, callback: Callable[[str, str, str], None]
|
|
243
271
|
):
|
|
244
272
|
"""Unregister a callback for telnet events."""
|
|
245
273
|
self._device.telnet_api.unregister_callback(event, callback=callback)
|
|
@@ -321,7 +349,7 @@ class DenonAVR(DenonAVRFoundation):
|
|
|
321
349
|
return self.input.state
|
|
322
350
|
|
|
323
351
|
@property
|
|
324
|
-
def muted(self) -> bool:
|
|
352
|
+
def muted(self) -> Optional[bool]:
|
|
325
353
|
"""
|
|
326
354
|
Boolean if volume is currently muted.
|
|
327
355
|
|
|
@@ -330,7 +358,7 @@ class DenonAVR(DenonAVRFoundation):
|
|
|
330
358
|
return self.vol.muted
|
|
331
359
|
|
|
332
360
|
@property
|
|
333
|
-
def volume(self) -> float:
|
|
361
|
+
def volume(self) -> Optional[float]:
|
|
334
362
|
"""
|
|
335
363
|
Return volume of Denon AVR as float.
|
|
336
364
|
|
|
@@ -433,7 +461,7 @@ class DenonAVR(DenonAVRFoundation):
|
|
|
433
461
|
return self.input.playing_func_list
|
|
434
462
|
|
|
435
463
|
@property
|
|
436
|
-
def receiver_port(self) -> int:
|
|
464
|
+
def receiver_port(self) -> Optional[int]:
|
|
437
465
|
"""Return the receiver's port."""
|
|
438
466
|
if self._device.receiver is None:
|
|
439
467
|
return None
|
|
@@ -541,8 +569,6 @@ class DenonAVR(DenonAVRFoundation):
|
|
|
541
569
|
"""
|
|
542
570
|
Returns the dimmer state of the device.
|
|
543
571
|
|
|
544
|
-
Only available if using Telnet.
|
|
545
|
-
|
|
546
572
|
Possible values are: "Off", "Dark", "Dim" and "Bright"
|
|
547
573
|
"""
|
|
548
574
|
return self._device.dimmer
|
|
@@ -552,9 +578,7 @@ class DenonAVR(DenonAVRFoundation):
|
|
|
552
578
|
"""
|
|
553
579
|
Return the auto-standby state of the device.
|
|
554
580
|
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
Possible values are: "OFF", "15M", "30M", "60M"
|
|
581
|
+
Possible values are: "OFF", "15M", "30M", "60M", "2H", "4H", "8H"
|
|
558
582
|
"""
|
|
559
583
|
return self._device.auto_standby
|
|
560
584
|
|
|
@@ -583,8 +607,6 @@ class DenonAVR(DenonAVRFoundation):
|
|
|
583
607
|
"""
|
|
584
608
|
Returns the eco-mode for the device.
|
|
585
609
|
|
|
586
|
-
Only available if using Telnet.
|
|
587
|
-
|
|
588
610
|
Possible values are: "Off", "On", "Auto"
|
|
589
611
|
"""
|
|
590
612
|
return self._device.eco_mode
|
|
@@ -623,7 +645,7 @@ class DenonAVR(DenonAVRFoundation):
|
|
|
623
645
|
return self._device.video_processing_mode
|
|
624
646
|
|
|
625
647
|
@property
|
|
626
|
-
def tactile_transducer(self) -> Optional[
|
|
648
|
+
def tactile_transducer(self) -> Optional[str]:
|
|
627
649
|
"""
|
|
628
650
|
Return the tactile transducer state of the device.
|
|
629
651
|
|
|
@@ -661,7 +683,7 @@ class DenonAVR(DenonAVRFoundation):
|
|
|
661
683
|
return self._device.room_size
|
|
662
684
|
|
|
663
685
|
@property
|
|
664
|
-
def triggers(self) -> Dict[int, str]:
|
|
686
|
+
def triggers(self) -> Optional[Dict[int, str]]:
|
|
665
687
|
"""
|
|
666
688
|
Return the triggers and their statuses for the device.
|
|
667
689
|
|
|
@@ -738,6 +760,26 @@ class DenonAVR(DenonAVRFoundation):
|
|
|
738
760
|
"""
|
|
739
761
|
return self._device.headphone_eq
|
|
740
762
|
|
|
763
|
+
@property
|
|
764
|
+
def illumination(self) -> Optional[str]:
|
|
765
|
+
"""
|
|
766
|
+
Return the illumination status for the device.
|
|
767
|
+
|
|
768
|
+
Only available on Marantz devices and when using Telnet.
|
|
769
|
+
|
|
770
|
+
Possible values are: "Auto", "Bright", "Dim", "Dark", "Off"
|
|
771
|
+
"""
|
|
772
|
+
return self.illumination
|
|
773
|
+
|
|
774
|
+
@property
|
|
775
|
+
def auto_lip_sync(self) -> Optional[bool]:
|
|
776
|
+
"""
|
|
777
|
+
Return the auto lip sync status for the device.
|
|
778
|
+
|
|
779
|
+
Only available on Marantz devices and when using Telnet.
|
|
780
|
+
"""
|
|
781
|
+
return self.auto_lip_sync
|
|
782
|
+
|
|
741
783
|
##########
|
|
742
784
|
# Getter #
|
|
743
785
|
##########
|
|
@@ -780,15 +822,15 @@ class DenonAVR(DenonAVRFoundation):
|
|
|
780
822
|
"""Toggle DynamicEQ."""
|
|
781
823
|
await self.audyssey.async_toggle_dynamic_eq()
|
|
782
824
|
|
|
783
|
-
async def async_set_multieq(self, value:
|
|
825
|
+
async def async_set_multieq(self, value: MultiEQModes) -> None:
|
|
784
826
|
"""Set MultiEQ mode."""
|
|
785
827
|
await self.audyssey.async_set_multieq(value)
|
|
786
828
|
|
|
787
|
-
async def async_set_reflevoffset(self, value:
|
|
829
|
+
async def async_set_reflevoffset(self, value: ReferenceLevelOffsets) -> None:
|
|
788
830
|
"""Set Reference Level Offset."""
|
|
789
831
|
await self.audyssey.async_set_reflevoffset(value)
|
|
790
832
|
|
|
791
|
-
async def async_set_dynamicvol(self, value:
|
|
833
|
+
async def async_set_dynamicvol(self, value: DynamicVolumeSettings) -> None:
|
|
792
834
|
"""Set Dynamic Volume."""
|
|
793
835
|
await self.audyssey.async_set_dynamicvol(value)
|
|
794
836
|
|
|
@@ -815,40 +857,44 @@ class DenonAVR(DenonAVRFoundation):
|
|
|
815
857
|
await self.input.async_toggle_play_pause()
|
|
816
858
|
|
|
817
859
|
async def async_play(self) -> None:
|
|
818
|
-
"""Send play command to receiver command
|
|
860
|
+
"""Send play command to receiver command."""
|
|
819
861
|
await self.input.async_play()
|
|
820
862
|
|
|
821
863
|
async def async_pause(self) -> None:
|
|
822
|
-
"""Send pause command to receiver command
|
|
864
|
+
"""Send pause command to receiver command."""
|
|
823
865
|
await self.input.async_pause()
|
|
824
866
|
|
|
867
|
+
async def async_stop(self) -> None:
|
|
868
|
+
"""Send stop command to receiver command."""
|
|
869
|
+
await self.input.async_stop()
|
|
870
|
+
|
|
825
871
|
async def async_previous_track(self) -> None:
|
|
826
|
-
"""Send previous track command to receiver command
|
|
872
|
+
"""Send previous track command to receiver command."""
|
|
827
873
|
await self.input.async_previous_track()
|
|
828
874
|
|
|
829
875
|
async def async_next_track(self) -> None:
|
|
830
|
-
"""Send next track command to receiver command
|
|
876
|
+
"""Send next track command to receiver command."""
|
|
831
877
|
await self.input.async_next_track()
|
|
832
878
|
|
|
833
879
|
async def async_power_on(self) -> None:
|
|
834
|
-
"""Turn on receiver
|
|
880
|
+
"""Turn on receiver."""
|
|
835
881
|
await self._device.async_power_on()
|
|
836
882
|
|
|
837
883
|
async def async_power_off(self) -> None:
|
|
838
|
-
"""Turn off receiver
|
|
884
|
+
"""Turn off receiver."""
|
|
839
885
|
await self._device.async_power_off()
|
|
840
886
|
|
|
841
887
|
async def async_volume_up(self) -> None:
|
|
842
|
-
"""Volume up receiver
|
|
888
|
+
"""Volume up receiver."""
|
|
843
889
|
await self.vol.async_volume_up()
|
|
844
890
|
|
|
845
891
|
async def async_volume_down(self) -> None:
|
|
846
|
-
"""Volume down receiver
|
|
892
|
+
"""Volume down receiver."""
|
|
847
893
|
await self.vol.async_volume_down()
|
|
848
894
|
|
|
849
895
|
async def async_set_volume(self, volume: float) -> None:
|
|
850
896
|
"""
|
|
851
|
-
Set receiver volume
|
|
897
|
+
Set receiver volume.
|
|
852
898
|
|
|
853
899
|
Volume is send in a format like -50.0.
|
|
854
900
|
Minimum is -80.0, maximum at 18.0
|
|
@@ -856,7 +902,7 @@ class DenonAVR(DenonAVRFoundation):
|
|
|
856
902
|
await self.vol.async_set_volume(volume)
|
|
857
903
|
|
|
858
904
|
async def async_mute(self, mute: bool) -> None:
|
|
859
|
-
"""Mute receiver
|
|
905
|
+
"""Mute receiver."""
|
|
860
906
|
await self.vol.async_mute(mute)
|
|
861
907
|
|
|
862
908
|
async def async_enable_tone_control(self) -> None:
|
|
@@ -926,60 +972,60 @@ class DenonAVR(DenonAVRFoundation):
|
|
|
926
972
|
await self.tonecontrol.async_treble_down()
|
|
927
973
|
|
|
928
974
|
async def async_cursor_up(self) -> None:
|
|
929
|
-
"""Send cursor up to receiver
|
|
975
|
+
"""Send cursor up to receiver."""
|
|
930
976
|
await self._device.async_cursor_up()
|
|
931
977
|
|
|
932
978
|
async def async_cursor_down(self) -> None:
|
|
933
|
-
"""Send cursor down to receiver
|
|
979
|
+
"""Send cursor down to receiver."""
|
|
934
980
|
await self._device.async_cursor_down()
|
|
935
981
|
|
|
936
982
|
async def async_cursor_left(self) -> None:
|
|
937
|
-
"""Send cursor left to receiver
|
|
983
|
+
"""Send cursor left to receiver."""
|
|
938
984
|
await self._device.async_cursor_left()
|
|
939
985
|
|
|
940
986
|
async def async_cursor_right(self) -> None:
|
|
941
|
-
"""Send cursor right to receiver
|
|
987
|
+
"""Send cursor right to receiver."""
|
|
942
988
|
await self._device.async_cursor_right()
|
|
943
989
|
|
|
944
990
|
async def async_cursor_enter(self) -> None:
|
|
945
|
-
"""Send cursor enter to receiver
|
|
991
|
+
"""Send cursor enter to receiver."""
|
|
946
992
|
await self._device.async_cursor_enter()
|
|
947
993
|
|
|
948
994
|
async def async_back(self) -> None:
|
|
949
|
-
"""Send back to receiver
|
|
995
|
+
"""Send back to receiver."""
|
|
950
996
|
await self._device.async_back()
|
|
951
997
|
|
|
952
998
|
async def async_info(self) -> None:
|
|
953
|
-
"""Send info to receiver
|
|
999
|
+
"""Send info to receiver."""
|
|
954
1000
|
await self._device.async_info()
|
|
955
1001
|
|
|
956
1002
|
async def async_options(self) -> None:
|
|
957
|
-
"""Raise options menu to receiver
|
|
1003
|
+
"""Raise options menu to receiver."""
|
|
958
1004
|
await self._device.async_options()
|
|
959
1005
|
|
|
960
1006
|
async def async_settings_menu(self) -> None:
|
|
961
|
-
"""Raise settings menu to receiver
|
|
1007
|
+
"""Raise settings menu to receiver."""
|
|
962
1008
|
await self._device.async_settings_menu()
|
|
963
1009
|
|
|
964
1010
|
async def async_channel_level_adjust(self) -> None:
|
|
965
|
-
"""Toggle the channel level adjust menu on receiver
|
|
1011
|
+
"""Toggle the channel level adjust menu on receiver."""
|
|
966
1012
|
await self._device.async_channel_level_adjust()
|
|
967
1013
|
|
|
968
1014
|
async def async_dimmer_toggle(self) -> None:
|
|
969
|
-
"""Toggle dimmer on receiver
|
|
1015
|
+
"""Toggle dimmer on receiver."""
|
|
970
1016
|
await self._device.async_dimmer_toggle()
|
|
971
1017
|
|
|
972
1018
|
async def async_dimmer(self, mode: DimmerModes) -> None:
|
|
973
|
-
"""Set dimmer mode on receiver
|
|
1019
|
+
"""Set dimmer mode on receiver."""
|
|
974
1020
|
await self._device.async_dimmer(mode)
|
|
975
1021
|
|
|
976
1022
|
async def async_auto_standby(self, auto_standby: AutoStandbys) -> None:
|
|
977
|
-
"""Set auto standby on receiver
|
|
1023
|
+
"""Set auto standby on receiver."""
|
|
978
1024
|
await self._device.async_auto_standby(auto_standby)
|
|
979
1025
|
|
|
980
1026
|
async def async_sleep(self, sleep: Union[Literal["OFF"], int]) -> None:
|
|
981
1027
|
"""
|
|
982
|
-
Set auto standby on receiver
|
|
1028
|
+
Set auto standby on receiver.
|
|
983
1029
|
|
|
984
1030
|
Valid sleep values are "OFF" and 1-120 (in minutes)
|
|
985
1031
|
"""
|
|
@@ -1002,14 +1048,14 @@ class DenonAVR(DenonAVRFoundation):
|
|
|
1002
1048
|
await self._device.async_hdmi_output(output)
|
|
1003
1049
|
|
|
1004
1050
|
async def async_hdmi_audio_decode(self, mode: HDMIAudioDecodes) -> None:
|
|
1005
|
-
"""Set HDMI Audio Decode mode on receiver
|
|
1051
|
+
"""Set HDMI Audio Decode mode on receiver."""
|
|
1006
1052
|
await self._device.async_hdmi_audio_decode(mode)
|
|
1007
1053
|
|
|
1008
1054
|
async def async_video_processing_mode(self, mode: VideoProcessingModes) -> None:
|
|
1009
|
-
"""Set video processing mode on receiver
|
|
1055
|
+
"""Set video processing mode on receiver."""
|
|
1010
1056
|
await self._device.async_video_processing_mode(mode)
|
|
1011
1057
|
|
|
1012
|
-
async def async_status(self) ->
|
|
1058
|
+
async def async_status(self) -> None:
|
|
1013
1059
|
"""
|
|
1014
1060
|
Toggles the display of status on the device.
|
|
1015
1061
|
|
|
@@ -1018,16 +1064,16 @@ class DenonAVR(DenonAVRFoundation):
|
|
|
1018
1064
|
return await self._device.async_status()
|
|
1019
1065
|
|
|
1020
1066
|
async def async_system_reset(self) -> None:
|
|
1021
|
-
"""DANGER! Reset the receiver
|
|
1067
|
+
"""DANGER! Reset the receiver."""
|
|
1022
1068
|
await self._device.async_system_reset()
|
|
1023
1069
|
|
|
1024
1070
|
async def async_network_restart(self) -> None:
|
|
1025
|
-
"""Restart the network on the receiver
|
|
1071
|
+
"""Restart the network on the receiver."""
|
|
1026
1072
|
await self._device.async_network_restart()
|
|
1027
1073
|
|
|
1028
1074
|
async def async_speaker_preset(self, preset: int) -> None:
|
|
1029
1075
|
"""
|
|
1030
|
-
Set speaker preset on receiver
|
|
1076
|
+
Set speaker preset on receiver.
|
|
1031
1077
|
|
|
1032
1078
|
Valid preset values are 1-2.
|
|
1033
1079
|
"""
|
|
@@ -1035,143 +1081,143 @@ class DenonAVR(DenonAVRFoundation):
|
|
|
1035
1081
|
|
|
1036
1082
|
async def async_speaker_preset_toggle(self) -> None:
|
|
1037
1083
|
"""
|
|
1038
|
-
Toggle speaker preset on receiver
|
|
1084
|
+
Toggle speaker preset on receiver.
|
|
1039
1085
|
|
|
1040
1086
|
Only available if using Telnet.
|
|
1041
1087
|
"""
|
|
1042
1088
|
await self._device.async_speaker_preset_toggle()
|
|
1043
1089
|
|
|
1044
1090
|
async def async_bt_transmitter_on(self) -> None:
|
|
1045
|
-
"""Turn on Bluetooth transmitter on receiver
|
|
1091
|
+
"""Turn on Bluetooth transmitter on receiver."""
|
|
1046
1092
|
await self._device.async_bt_transmitter_on()
|
|
1047
1093
|
|
|
1048
1094
|
async def async_bt_transmitter_off(self) -> None:
|
|
1049
|
-
"""Turn off Bluetooth transmitter on receiver
|
|
1095
|
+
"""Turn off Bluetooth transmitter on receiver."""
|
|
1050
1096
|
await self._device.async_bt_transmitter_off()
|
|
1051
1097
|
|
|
1052
1098
|
async def async_bt_transmitter_toggle(self) -> None:
|
|
1053
1099
|
"""
|
|
1054
|
-
Toggle Bluetooth transmitter mode on receiver
|
|
1100
|
+
Toggle Bluetooth transmitter mode on receiver.
|
|
1055
1101
|
|
|
1056
1102
|
Only available if using Telnet.
|
|
1057
1103
|
"""
|
|
1058
1104
|
await self._device.async_bt_transmitter_toggle()
|
|
1059
1105
|
|
|
1060
1106
|
async def async_bt_output_mode(self, mode: BluetoothOutputModes) -> None:
|
|
1061
|
-
"""Set Bluetooth transmitter mode on receiver
|
|
1107
|
+
"""Set Bluetooth transmitter mode on receiver."""
|
|
1062
1108
|
await self._device.async_bt_output_mode(mode)
|
|
1063
1109
|
|
|
1064
1110
|
async def async_bt_output_mode_toggle(self) -> None:
|
|
1065
1111
|
"""
|
|
1066
|
-
Toggle Bluetooth output mode on receiver
|
|
1112
|
+
Toggle Bluetooth output mode on receiver.
|
|
1067
1113
|
|
|
1068
1114
|
Only available if using Telnet.
|
|
1069
1115
|
"""
|
|
1070
1116
|
await self._device.async_bt_output_mode_toggle()
|
|
1071
1117
|
|
|
1072
1118
|
async def async_delay_time_up(self) -> None:
|
|
1073
|
-
"""Delay time up on receiver
|
|
1119
|
+
"""Delay time up on receiver."""
|
|
1074
1120
|
await self._device.async_delay_time_up()
|
|
1075
1121
|
|
|
1076
1122
|
async def async_delay_time_down(self) -> None:
|
|
1077
|
-
"""Delay time up on receiver
|
|
1123
|
+
"""Delay time up on receiver."""
|
|
1078
1124
|
await self._device.async_delay_time_down()
|
|
1079
1125
|
|
|
1080
1126
|
async def async_delay_time(self, delay_time: int) -> None:
|
|
1081
1127
|
"""
|
|
1082
|
-
Set delay time on receiver
|
|
1128
|
+
Set delay time on receiver.
|
|
1083
1129
|
|
|
1084
1130
|
:param delay_time: Delay time in ms. Valid values are 0-999.
|
|
1085
1131
|
"""
|
|
1086
1132
|
await self._device.async_delay_time(delay_time)
|
|
1087
1133
|
|
|
1088
1134
|
async def async_audio_restorer(self, mode: AudioRestorers):
|
|
1089
|
-
"""Set audio restorer on receiver
|
|
1135
|
+
"""Set audio restorer on receiver."""
|
|
1090
1136
|
await self._device.async_audio_restorer(mode)
|
|
1091
1137
|
|
|
1092
1138
|
async def async_remote_control_lock(self):
|
|
1093
|
-
"""Set remote control lock on receiver
|
|
1139
|
+
"""Set remote control lock on receiver."""
|
|
1094
1140
|
await self._device.async_remote_control_lock()
|
|
1095
1141
|
|
|
1096
1142
|
async def async_remote_control_unlock(self):
|
|
1097
|
-
"""Set remote control unlock on receiver
|
|
1143
|
+
"""Set remote control unlock on receiver."""
|
|
1098
1144
|
await self._device.async_remote_control_unlock()
|
|
1099
1145
|
|
|
1100
1146
|
async def async_panel_lock(self, panel_lock_mode: PanelLocks):
|
|
1101
|
-
"""Set panel lock on receiver
|
|
1147
|
+
"""Set panel lock on receiver."""
|
|
1102
1148
|
await self._device.async_panel_lock(panel_lock_mode)
|
|
1103
1149
|
|
|
1104
1150
|
async def async_panel_unlock(self):
|
|
1105
|
-
"""Set panel unlock on receiver
|
|
1151
|
+
"""Set panel unlock on receiver."""
|
|
1106
1152
|
await self._device.async_panel_unlock()
|
|
1107
1153
|
|
|
1108
1154
|
async def async_graphic_eq_on(self) -> None:
|
|
1109
|
-
"""Turn on Graphic EQ on receiver
|
|
1155
|
+
"""Turn on Graphic EQ on receiver."""
|
|
1110
1156
|
await self._device.async_graphic_eq_on()
|
|
1111
1157
|
|
|
1112
1158
|
async def async_graphic_eq_off(self) -> None:
|
|
1113
|
-
"""Turn off Graphic EQ on receiver
|
|
1159
|
+
"""Turn off Graphic EQ on receiver."""
|
|
1114
1160
|
await self._device.async_graphic_eq_off()
|
|
1115
1161
|
|
|
1116
1162
|
async def async_graphic_eq_toggle(self) -> None:
|
|
1117
1163
|
"""
|
|
1118
|
-
Toggle Graphic EQ on receiver
|
|
1164
|
+
Toggle Graphic EQ on receiver.
|
|
1119
1165
|
|
|
1120
1166
|
Only available if using Telnet.
|
|
1121
1167
|
"""
|
|
1122
1168
|
await self._device.async_graphic_eq_toggle()
|
|
1123
1169
|
|
|
1124
1170
|
async def async_headphone_eq_on(self) -> None:
|
|
1125
|
-
"""Turn on Headphone EQ on receiver
|
|
1171
|
+
"""Turn on Headphone EQ on receiver."""
|
|
1126
1172
|
await self._device.async_headphone_eq_on()
|
|
1127
1173
|
|
|
1128
1174
|
async def async_headphone_eq_off(self) -> None:
|
|
1129
|
-
"""Turn off Headphone EQ on receiver
|
|
1175
|
+
"""Turn off Headphone EQ on receiver."""
|
|
1130
1176
|
await self._device.async_headphone_eq_off()
|
|
1131
1177
|
|
|
1132
1178
|
async def async_headphone_eq_toggle(self) -> None:
|
|
1133
1179
|
"""
|
|
1134
|
-
Toggle Headphone EQ on receiver
|
|
1180
|
+
Toggle Headphone EQ on receiver.
|
|
1135
1181
|
|
|
1136
1182
|
Only available if using Telnet.
|
|
1137
1183
|
"""
|
|
1138
1184
|
await self._device.async_headphone_eq_toggle()
|
|
1139
1185
|
|
|
1140
1186
|
async def async_tactile_transducer_on(self) -> None:
|
|
1141
|
-
"""Turn on tactile transducer on receiver
|
|
1187
|
+
"""Turn on tactile transducer on receiver."""
|
|
1142
1188
|
await self._device.async_tactile_transducer_on()
|
|
1143
1189
|
|
|
1144
1190
|
async def async_tactile_transducer_off(self) -> None:
|
|
1145
|
-
"""Turn on tactile transducer on receiver
|
|
1191
|
+
"""Turn on tactile transducer on receiver."""
|
|
1146
1192
|
await self._device.async_tactile_transducer_off()
|
|
1147
1193
|
|
|
1148
1194
|
async def async_tactile_transducer_toggle(self) -> None:
|
|
1149
1195
|
"""
|
|
1150
|
-
Turn on tactile transducer on receiver
|
|
1196
|
+
Turn on tactile transducer on receiver.
|
|
1151
1197
|
|
|
1152
1198
|
Only available if using Telnet.
|
|
1153
1199
|
"""
|
|
1154
1200
|
await self._device.async_tactile_transducer_toggle()
|
|
1155
1201
|
|
|
1156
1202
|
async def async_tactile_transducer_level_up(self) -> None:
|
|
1157
|
-
"""Increase the transducer level on receiver
|
|
1203
|
+
"""Increase the transducer level on receiver."""
|
|
1158
1204
|
await self._device.async_tactile_transducer_level_up()
|
|
1159
1205
|
|
|
1160
1206
|
async def async_tactile_transducer_level_down(self) -> None:
|
|
1161
|
-
"""Decrease the transducer on receiver
|
|
1207
|
+
"""Decrease the transducer on receiver."""
|
|
1162
1208
|
await self._device.async_tactile_transducer_level_down()
|
|
1163
1209
|
|
|
1164
1210
|
async def async_transducer_lpf(self, lpf: TransducerLPFs) -> None:
|
|
1165
|
-
"""Set transducer low pass filter on receiver
|
|
1211
|
+
"""Set transducer low pass filter on receiver."""
|
|
1166
1212
|
await self._device.async_transducer_lpf(lpf)
|
|
1167
1213
|
|
|
1168
1214
|
async def async_room_size(self, room_size: RoomSizes) -> None:
|
|
1169
|
-
"""Set room size on receiver
|
|
1215
|
+
"""Set room size on receiver."""
|
|
1170
1216
|
await self._device.async_room_size(room_size)
|
|
1171
1217
|
|
|
1172
1218
|
async def async_trigger_on(self, trigger: int) -> None:
|
|
1173
1219
|
"""
|
|
1174
|
-
Set trigger to ON on receiver
|
|
1220
|
+
Set trigger to ON on receiver.
|
|
1175
1221
|
|
|
1176
1222
|
:param trigger: Trigger number to set to ON. Valid values are 1-3.
|
|
1177
1223
|
"""
|
|
@@ -1179,7 +1225,7 @@ class DenonAVR(DenonAVRFoundation):
|
|
|
1179
1225
|
|
|
1180
1226
|
async def async_trigger_off(self, trigger: int) -> None:
|
|
1181
1227
|
"""
|
|
1182
|
-
Set trigger to OFF on receiver
|
|
1228
|
+
Set trigger to OFF on receiver.
|
|
1183
1229
|
|
|
1184
1230
|
:param trigger: Trigger number to set to OFF. Valid values are 1-3.
|
|
1185
1231
|
"""
|
|
@@ -1187,7 +1233,7 @@ class DenonAVR(DenonAVRFoundation):
|
|
|
1187
1233
|
|
|
1188
1234
|
async def async_trigger_toggle(self, trigger: int) -> None:
|
|
1189
1235
|
"""
|
|
1190
|
-
Toggle trigger on receiver
|
|
1236
|
+
Toggle trigger on receiver.
|
|
1191
1237
|
|
|
1192
1238
|
Only available if using Telnet.
|
|
1193
1239
|
|
|
@@ -1197,7 +1243,7 @@ class DenonAVR(DenonAVRFoundation):
|
|
|
1197
1243
|
|
|
1198
1244
|
async def async_quick_select_mode(self, quick_select_number: int) -> None:
|
|
1199
1245
|
"""
|
|
1200
|
-
Set quick select mode on receiver
|
|
1246
|
+
Set quick select mode on receiver.
|
|
1201
1247
|
|
|
1202
1248
|
:param quick_select_number: Quick select number to set. Valid values are 1-5.
|
|
1203
1249
|
"""
|
|
@@ -1205,8 +1251,60 @@ class DenonAVR(DenonAVRFoundation):
|
|
|
1205
1251
|
|
|
1206
1252
|
async def async_quick_select_memory(self, quick_select_number: int) -> None:
|
|
1207
1253
|
"""
|
|
1208
|
-
Set quick select memory on receiver
|
|
1254
|
+
Set quick select memory on receiver.
|
|
1209
1255
|
|
|
1210
1256
|
:param quick_select_number: Quick select number to set. Valid values are 1-5.
|
|
1211
1257
|
"""
|
|
1212
1258
|
await self._device.async_quick_select_memory(quick_select_number)
|
|
1259
|
+
|
|
1260
|
+
async def async_hdmi_cec_on(self) -> None:
|
|
1261
|
+
"""Turn on HDMI CEC on receiver."""
|
|
1262
|
+
await self._device.async_hdmi_cec_on()
|
|
1263
|
+
|
|
1264
|
+
async def async_hdmi_cec_off(self) -> None:
|
|
1265
|
+
"""Turn off HDMI CEC on receiver."""
|
|
1266
|
+
await self._device.async_hdmi_cec_off()
|
|
1267
|
+
|
|
1268
|
+
async def async_illumination(self, mode: Illuminations):
|
|
1269
|
+
"""
|
|
1270
|
+
Set illumination mode on receiver.
|
|
1271
|
+
|
|
1272
|
+
Only available for Marantz devices.
|
|
1273
|
+
"""
|
|
1274
|
+
await self._device.async_illumination(mode)
|
|
1275
|
+
|
|
1276
|
+
async def async_auto_lip_sync_on(self) -> None:
|
|
1277
|
+
"""
|
|
1278
|
+
Turn on auto lip sync on receiver.
|
|
1279
|
+
|
|
1280
|
+
Only available on Marantz devices.
|
|
1281
|
+
"""
|
|
1282
|
+
await self._device.async_auto_lip_sync_on()
|
|
1283
|
+
|
|
1284
|
+
async def async_auto_lip_sync_off(self) -> None:
|
|
1285
|
+
"""
|
|
1286
|
+
Turn off auto lip sync on receiver.
|
|
1287
|
+
|
|
1288
|
+
Only available on Marantz devices.
|
|
1289
|
+
"""
|
|
1290
|
+
await self._device.async_auto_lip_sync_off()
|
|
1291
|
+
|
|
1292
|
+
async def async_auto_lip_sync_toggle(self) -> None:
|
|
1293
|
+
"""
|
|
1294
|
+
Toggle auto lip sync on receiver.
|
|
1295
|
+
|
|
1296
|
+
Only available on Marantz devices and when using Telnet.
|
|
1297
|
+
"""
|
|
1298
|
+
await self._device.async_auto_lip_sync_toggle()
|
|
1299
|
+
|
|
1300
|
+
async def async_page_up(self) -> None:
|
|
1301
|
+
"""Page Up on receiver."""
|
|
1302
|
+
await self._device.async_page_up()
|
|
1303
|
+
|
|
1304
|
+
async def async_page_down(self) -> None:
|
|
1305
|
+
"""Page Down on receiver."""
|
|
1306
|
+
await self._device.async_page_down()
|
|
1307
|
+
|
|
1308
|
+
async def async_input_mode(self, mode: InputModes):
|
|
1309
|
+
"""Set input mode on receiver."""
|
|
1310
|
+
await self._device.async_input_mode(mode)
|