Giter VIP home page Giter VIP logo

ha-pioneer_async's Introduction

Pioneer AVR (asyncio)

Home Assistant media_player custom integration for Pioneer AVRs. Inspired by the original Pioneer integration. Connects to a network capable AVR that supports the Pioneer API, typically used in pre-2016 Pioneer AVR models. Developed and tested on a VSX-930 (with Main Zone and HDZone outputs), and on other models by the community.

This integration supports the following features (not all features are supported by all AVR models):

  • Control power, volume and mute for zones available on the AVR
  • Select the active input source for each available zone, which are detected from the AVR
  • Set the tuner band and frequency, and select tuner presets
  • Set audio parameters such as listening modes, tone and channel levels
  • Set amp, DSP and video parameters

Installation

This integration can be installed via HACS by adding this repository as a custom repository. See the HACS documentation for the procedure.

Adding an instance

Warning

As of 0.9.0, support for YAML configuration via configuration.yaml is no longer supported. The configuration is ignored and an error is logged if YAML configuration is detected.

This integration is configured via the UI. Once installed, add an instance for the AVR in Home Assistant by navigating to Settings > Devices & Services > Integrations > Add Integration and searching for Pioneer AVR. (Note that the Pioneer integration is the original integration built into Home Assistant)

The following options that configure the connection to the AVR are available from the initial setup page:

Option Default Function
Device name Pioneer AVR Default base name for the AVR
Host avr DNS name/IP address for AVR to be added
Port 8102 Port to be used to communicate with the AVR API. Use port 23 if your AVR doesn't respond on the default port
Query sources from AVR on Query the list of available sources from the AVR when Next is clicked. See AVR sources
Maximum source ID 60 The highest source ID that will be queried when querying available sources from the AVR. See AVR sources
Don't check volume when querying AVR source AVR default Don't query zone volume when determining whether a zone is present on the AVR. Enable if zones on your AVR are not all detected

Once the integration is successfully added, devices representing the AVR and each supported zone are created, along with entities that are registered to the devices. The main entities are the media_player entities corresponding to each discovered zone that are used to control the basic functions for the zone: power, volume and mute.

Some AVRs have a maximum simultaneous connection limit, and will refuse to accept further connection requests once this limit is reached. Each instance of this integration uses one connection to the AVR, and each instance of the Pioneer iControlAV5 application will use another connection. For example, if iControlAV5 is open on two phones, then two connections will be in use.

NOTE: Some AVR device attributes (such as firmware version) are only available after the AVR main zone is powered on for the first time after the integration is added.

Instance options

After an instance is added, options that modify how the integration operates can be changed by clicking Configure on the appropriate instance on the integration's Hubs page. The available options are described in the subsections below.

Basic options

Option Default Function
Query sources from AVR off Query the list of available sources from the AVR when Next is clicked. See AVR sources
Maximum source ID 60 Highest source ID that will be queried when querying available sources from the AVR. See AVR sources
Manually configured sources List of all input sources available on the AVR. See AVR sources
Scan interval 60s Idle period between full polls of the AVR. Any response from the AVR (eg. to signal a power, volume or source change) will reset the idle timer. Some AVRs also send empty responses every 30 seconds, and these also reset the idle timer and prevent a full poll from being performed. Set this to 0 to disable polling
Timeout 5s Number of seconds to wait for the initial connection and for responses to commands sent to the AVR. Also used to set the TCP connection idle timeout
Command delay 0.1s Delay between commands sent to the AVR. Increase the delay if you are experiencing errors with basic commands that are sent to the AVR

Zone options

Option Default Function
Available sources for zone all List of sources available for selection as input for each zone. Use this option to limit the sources available for a zone in accordance with your AVR's capabilities. If no sources are specified, then all available sources as configured in Basic options are made available
Don't create entities for zone off Disable the creation of entities for a specific zone. Used when the integration detects a zone that does not exist for your AVR

Advanced options

These options enable functionality and workarounds that are required for some AVR models. Some of these are enabled by default for specific AVR models when these are detected by the integration.

The Advanced options page is shown only if Advanced Mode is enabled in the user's Home Assistant profile.

Option Default Function
Query basic AVR parameters only Disable AVR queries for additional parameters (audio, video, amp, DSP, tuner, channel levels) which may not be supported on some AVR models
Workaround for Zone 1 initial volume reporting Enable this workaround on AVRs that do not report the correct volume when the main zone is turned on and an initial volume is configured
Don't check volume when querying AVR source Don't query zone volume when determining whether a zone is present on the AVR. Enable if zones on your AVR are not all detected
Step volume up/down to set volume level Emulate volume level set by stepping volume up/down on AVR models that cannot set the volume level to a specific level
Maximum volume units for Zone 1 185 The highest volume unit for Zone 1
Maximum volume units for other zones 81 The highest volume unit for other zones
Extra aiopioneer parameters Additional config parameters to pass to the aiopioneer package. See Extra aiopioneer params

Debug options

These options enable additional debugging to be output to the Home Assistant log. Debug level logging must also be enabled in Home Assistant for the integration to generate debug.

The Debug options page is shown only if Advanced Mode is enabled in the user's Home Assistant profile.

Option Function
Enable listener task debug logging (debug_responder parameter) Enables additional debug messages in the listener task
Enable responder task debug logging (debug_responder parameter) Enables additional debug messages in the responder task
Enable updater task debug logging (debug_responder parameter) Enables additional debug messages in the updater task
Enable command debug logging (debug_responder parameter) Enables additional debug messages in the AVR command sending and command queue methods
Integration debug Enables additional per-module debug messages in this integration

Enabling debugging

If the integration is not functioning as expected, then you will need to include the debug logging when logging an issue. See the Debug logs and diagnostics section in the Home Assistant Troubleshooting page for instructions for enabling debug logging for the integration and downloading the log.

Further module level debug logging for the integration can be enabled by adding entries in Integration debug configuration on the Debug options configuration page. The entries are in the format: _module_:_debug_level_. For example, config_flow:9 will enable full debugging output for the config_flow module. To enable full debugging for all modules, use *:9.

AVR sources

The integration saves a master list of available sources on the AVR, and a subset of these sources can be made available for selection as the zone's input source. On some models of AVR, some zones do not support the use of certain sources for input, and also some sources may only be selected on one zone.

The master list of sources can be queried from the AVR when adding an integration instance by enabling Query sources from AVR. They can also be re-queried when reconfiguring the integration instance from the Basic options page. To do this, enable the Query sources from AVR option then click Next. Note that the current list of sources will be replaced by the list returned by the AVR.

Source mappings in the master source list can be edited in the Basic options screen by removing unwanted mappings and adding extra mappings via the Manually configured sources option. Additional mappings can be added if your AVR does not automatically detect them. Each source mapping is in the form id:name, where id is a 2 digit identifier for the source (including a leading zero for single digit source IDs), and name is the friendly name for the source. You can rename a source mapping by removing the mapping and adding a new mapping with the same id.

Source IDs can be found in the aiopioneer documentation

On the Zone options page, the available sources for each zone can be selected. If no sources are selected for a zone, then all sources are made available for selection.

Extra aiopioneer parameters

Additional parameters can be configured in the Home Assistant integration and are passed to the aiopioneer packaged used by this integration for communication with the Pioneer AVR via its API. The parameters modify the package functionality to account for the operational differences between the various Pioneer AVR models. See aiopioneer documentation for a list of parameters that can be set.

Most configuration parameters are configurable via UI settings. Other parameters can be added through entries in the Extra aiopioneer parameters. Each entry is in the format parameter_name: value with value expressed in JSON format. For example, the am_frequency_step parameter can be set to 9 kHz by adding the entry am_frequency_step: 9.

Tuner entities

The entities below show the current tuner settings, and can also be used to change the tuner settings. These entities are available only when the tuner is selected as the input for a powered on zone.

Name Type Description
Tuner Band select Current tuner band (AM, FM)
Tuner AM Frequency number Current AM frequency (in kHz)
Tuner FM Frequency number Current FM frequency (in MHz)
Tuner Preset select Currently selected tuner preset, or unknown if no preset is. The preset is also reset to unknown when the frequency is changed

Entity attributes

media_player entity attributes

In addition to the standard media_player entity attributes, this integration exposes additional attributes for the Pioneer AVR:

Entity attribute Type Description
sources_json JSON JSON mapping of zone source names to source IDs
device_volume_db float Current volume of zone (in dB)
device_volume int Current volume of zone (in device units)
device_max_volume int Maximum supported volume of zone (in device units)

tuner_am_frequency entity attributes

The tuner_am_frequency number entity exposes the following additional attributes:

Entity attribute Type Description
am_frequency_step int The kHz step between valid AM frequencies. This value differs across regions. If not specified as a parameter, then this is calculated by stepping up and down the frequency when the band is first changed to AM

AVR properties (>= 0.9)

The following AVR properties are available as entities where supported and reported by your AVR model.

Caution

Property group entities are beta and may change in future releases as additional entities are created for individual properties.

Global AVR properties

Sensor entities for global AVR properties and property groups are registered to the parent device created for the AVR.

Property Type Description
Display sensor Current value shown on AVR front panel display
Speaker System sensor AVR speaker system currently in use
Amp sensor Amp property group, main sensor property: speakers
DSP sensor DSP property group, main sensor property: signal_select
Video Parameters sensor Video parameters property group, main sensor property: signal_output_resolution
Audio Parameters sensor Audio parameters property group, main sensor property: input_signal
Input Multichannel binary_sensor on if current input audio source is a multi-channel source

Zone AVR properties

Zone entities are registered to the zone device.

Property Type Description
channel_levels sensor Surround channel levels
tone sensor Tone setting, and bass and treble levels
Video sensor Zone video parameters property group
Audio sensor Zone audio parameters property group

Services (>= 0.7.3)

Service calls are used to invoke actions and change parameters on the AVR. They can be called from scripts, automations and UI elements, and can also be triggered via Developer Tools > Services.

Service set_tone_settings

Set AVR tone settings for zone.

Service data attribute Type Default Description
entity_id entity ID Entity for AVR zone to modify (required)
tone string Tone mode. See services.yaml for valid values (required)
treble int None Tone treble value (-6dB -- 6dB)
bass int None Tone bass value (-6dB -- 6dB)

Service set_tuner_band

Set AVR tuner band.

Service data attribute Type Default Description
entity_id entity ID Entity for AVR zone to modify (required)
band string Tuner band: AM or FM (required)

Service set_fm_tuner_frequency

Set AVR FM tuner frequency.

Service data attribute Type Default Description
entity_id entity ID Entity for AVR zone to modify (required)
frequency float Tuner frequency (87.5 MHz -- 108.0 MHz) (required)

Service set_am_tuner_frequency

Set AVR AM tuner frequency.

Service data attribute Type Default Description
entity_id entity ID Entity for AVR zone to modify (required)
frequency float Tuner frequency (530 -- 1700KHz) (required)

Service set_tuner_preset

Set AVR tuner preset.

Service data attribute Type Default Description
entity_id entity ID Entity for AVR zone to modify (required)
class str Tuner preset class (A -- G) (required)
preset int Tuner preset ID (1 -- 9) (required)

Service set_channel_levels

Set AVR level (gain) for an amplifier channel.

Service data attribute Type Default Description
entity_id entity ID Entity for AVR zone to modify (required)
channel str Tuner amp channel to modify. See services.yaml for valid values (required)

Service set_panel_lock

Set AVR panel lock.

Service data attribute Type Default Description
entity_id entity ID Entity for AVR zone to modify (required)
panel_lock bool Panel lock setting (required)

Service set_remote_lock

Set AVR remote lock.

Service data attribute Type Default Description
entity_id entity ID Entity for AVR zone to modify (required)
remote_lock bool Enable remote lock (required)

Service set_dimmer

Set AVR display dimmer.

Service data attribute Type Default Description
entity_id entity ID Entity for AVR zone to modify (required)
dimmer string Dimmer mode. See services.yaml for valid values (required)

Service set_video_settings

To be implemented.

Service set_dsp_settings

To be implemented.

Service media_control

To be implemented.

Service send_command (>= 0.9.1)

Send a command to the AVR.

Service data attribute Type Default Description
entity_id entity ID Entity for AVR zone for command (required)
command string Name of command to send. See list of available commands and the Pioneer documentation linked from the aiopioneer references for the arguments accepted by each command
prefix string Prefix argument for command
suffix string Suffix argument for command

Breaking changes

0.9

  • Integration configuration via configuration.yaml is no longer supported. ADR10 outlines that integrations that communicate with devices, such as this one, must be configured via the UI. Also, several more recently added features, such as support for the HA device registry and dynamic integration loading/unloading, already do not work unless configured via the UI.

0.8

  • The zone_h_sources and zone_z_sources params have been renamed to hdzone_sources, to be more consistent with the rest of the integration.

0.7

  • The device_class for the zone entities has been updated to receiver. If any zone entities are exported to Google Assistant, this change currently (2023-01-08) removes the Google Home UI that was previously shown for this entity when using the default device_class of tv. You can restore the old behaviour by overriding device_class for the entity to tv, see Customising Entities for details on how to do this.
  • The volume_step_delta config property has been deprecated upstream in crowbarz/aiopioneer and is no longer configurable from this integration.

0.6

  • Zone entity unique IDs have changed to conform to unique ID requirements. Due to a bug with integration removal in previous versions, the entity IDs of your zones will probably change after upgrading to this version if you added the integration via the UI. To restore your entity IDs, perform the following steps:
    1. remove the integration via the UI (saving configuration settings).
    2. restart Home Assistant.
    3. in Home Assistant, navigate to Configuration > Entities and search for your Pioneer AVR zone entities. They should show a red exclamation mark in the Status column.
    4. select all the entities and click Remove Entity.
    5. reinstall the integration via the UI and restore configuration settings.

0.5

  • volume_step_only logic has been rewritten to step the volume until the actual volume reaches (or exceeds) the desired volume. It will stop stepping and log a warning if after the step command the volume does not change or changes in the wrong direction.

0.4

  • The AVR source query no longer skips source names that have not been renamed. This will result in additional sources being selectable. Specify sources manually to only allow certain sources to be selected.

0.3

  • command_delay, volume_workaround and volume_steps have been moved into the params object. Additionally, volume_steps has been renamed volume_step_only and volume_workaround has been renamed to power_on_volume_bounce. You will need to update your configuration.yaml accordingly.

Implementation details

Under the hood, this integration uses crowbarz/aiopioneer to communicate with the Pioneer AVR via its API. Briefly, the features of this package are:

  • Implemented in asyncio
  • Maintain single continuous command connection with the AVR, with automatic reconnect
  • Eliminate polling where AVR sends keepalive responses (on port 8102)

NOTE: On the VSX-930, the telnet API can become quite unstable when telnet connections are made to it repeatedly. The original integration established a new telnet connection for each command sent to the AVR, including the commands used to poll status. This integration establishes a single telnet connection when loaded, and re-connects automatically if it disconnects. The connection is used for sending commands, receiving responses, and receiving status updates which are reflected in Home Assistant in real time.

ha-pioneer_async's People

Contributors

2t0m avatar crowbarz avatar mikey0000 avatar pantherale0 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ha-pioneer_async's Issues

0.8.6 stopped working, unable to update to 0.9.0

Version 0.8.6 stopped working completely unexpectedly today. Couldn't get it to work anymore.
Checked HACS and found out there was an update. But installation keeps goiing on forever...
Probably the error is somewhere on my site, but can't find out what it is.
No remaining references in configuration.yaml, removed them month's ago.

UPDATE: got a little further. Finally it installed. After reboot I could add the integration. But after filling out the detail in te configuration panel I get this error:
Pioneer AVR
Translation Error: The intl string context variable "exception" was not provided to the string "Unexpected exception: {exception}"

Any suggestions?

AttributeError: 'NoneType' object has no attribute 'unique_id'

Hi @crowbarz and thanks for your work.

I have a VSX-S510 and I got an error after updating to 0.1 via HACS.

My configuration.yaml

media_player:
  - platform: pioneer_async
    host: 192.168.1.123
    sources: { TV: '06', GCast: '15' }

Error Log

Error while setting up pioneer_async platform for media_player
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 201, in _async_setup_platform
    await asyncio.gather(*pending)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 310, in async_add_entities
    await asyncio.gather(*tasks)
  File "/usr/src/homeassistant/homeassistant/helpers/entity_platform.py", line 356, in _async_add_entity
    if entity.unique_id is not None:
  File "/config/custom_components/pioneer_async/media_player.py", line 217, in unique_id
    return self._entry.unique_id + "/" + self._zone
AttributeError: 'NoneType' object has no attribute 'unique_id'

Debug

2020-11-03   16:18:50 DEBUG (MainThread) [custom_components.pioneer_async.pioneer_avr]   Opening AVR connection
2020-11-03 16:18:50 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr]   PioneerAVR.__init__(host="192.168.1.123", port=8102, timeout=2.0,   command_delay=0.1, volume_workaround=False)
2020-11-03 16:18:51 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] >>   PioneerAVR.connection_listener() started
2020-11-03 16:18:51 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] Sending AVR command: ?P
2020-11-03 16:18:51 INFO (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR connection established
2020-11-03 16:18:51 INFO (MainThread)   [custom_components.pioneer_async.pioneer_avr] Querying available zones on AVR
2020-11-03 16:18:52 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR command ?P returned   response: PWR2
2020-11-03 16:18:52 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   PWR2
2020-11-03 16:18:52 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] Sending AVR command: ?AP
2020-11-03 16:18:52 INFO (MainThread)   [custom_components.pioneer_async.pioneer_avr] Zone 1 discovered
2020-11-03 16:18:52 INFO (MainThread)   [custom_components.pioneer_async.pioneer_avr] Zone 1: Power: False
2020-11-03 16:18:54 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR command ?AP returned   response: APR1
2020-11-03 16:18:54 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   APR1
2020-11-03 16:18:54 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] Sending AVR command: ?BP
2020-11-03 16:18:54 INFO (MainThread)   [custom_components.pioneer_async.pioneer_avr] Zone 2 discovered
2020-11-03 16:18:54 INFO (MainThread)   [custom_components.pioneer_async.pioneer_avr] Zone 2: Power: False
2020-11-03 16:18:55 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   R
2020-11-03 16:18:57 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR command ?BP timed out
2020-11-03 16:18:57 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   R
2020-11-03 16:18:57 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] Sending AVR command: ?ZEP
2020-11-03 16:19:01 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR command ?ZEP timed out
2020-11-03 16:19:02 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR command ?M returned   response: MUT1
2020-11-03 16:19:02 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR command ?P returned   response: PWR2
2020-11-03 16:19:02 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR command ?V returned   response: VOL101
2020-11-03 16:19:02 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   MUT1
2020-11-03 16:19:02 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   PWR2
2020-11-03 16:19:02 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   VOL101
2020-11-03 16:19:02 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] Delaying command for 0.015s
2020-11-03 16:19:02 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] Delaying command for 0.093s
2020-11-03 16:19:02 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] Sending AVR command: ?F
2020-11-03 16:19:02 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] Sending AVR command: ?M
2020-11-03 16:19:02 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] Sending AVR command: ?P
2020-11-03 16:19:02 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] Sending AVR command: ?V
2020-11-03 16:19:02 INFO (MainThread)   [custom_components.pioneer_async.pioneer_avr] Updating AVR status (full=True,   last updated 4.710s ago)
2020-11-03 16:19:02 INFO (MainThread)   [custom_components.pioneer_async.pioneer_avr] Zone 1: Mute: False
2020-11-03 16:19:02 INFO (MainThread)   [custom_components.pioneer_async.pioneer_avr] Zone 1: Volume: 101
2020-11-03 16:19:05 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR command ?F returned   response: FN06
2020-11-03 16:19:05 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   FN06
2020-11-03 16:19:05 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] Sending AVR command: ?AP
2020-11-03 16:19:05 INFO (MainThread)   [custom_components.pioneer_async.pioneer_avr] Zone 1: Source: TV
2020-11-03 16:19:06 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR command ?AP returned   response: APR1
2020-11-03 16:19:06 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   APR1
2020-11-03 16:19:06 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] Sending AVR command: ?ZV
2020-11-03 16:19:07 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR command ?ZV returned   response: ZV00
2020-11-03 16:19:07 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   ZV00
2020-11-03 16:19:07 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] Sending AVR command: ?Z2M
2020-11-03 16:19:07 INFO (MainThread)   [custom_components.pioneer_async.pioneer_avr] Zone 2: Volume: 0
2020-11-03 16:19:08 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR command ?Z2M returned   response: Z2MUT1
2020-11-03 16:19:08 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   Z2MUT1
2020-11-03 16:19:08 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] Sending AVR command: ?ZS
2020-11-03 16:19:08 INFO (MainThread)   [custom_components.pioneer_async.pioneer_avr] Zone 2: Mute: False
2020-11-03 16:19:09 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR command ?ZS returned   response: Z2F04
2020-11-03 16:19:09 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   Z2F04
2020-11-03 16:19:09 INFO (MainThread)   [custom_components.pioneer_async.pioneer_avr] Zone 2: Source: 04
2020-11-03 16:19:10 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] Skipping update: last updated   0.003s ago
2020-11-03 16:19:10 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] Skipping update: last updated   0.004s ago
2020-11-03 16:19:39 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   R
2020-11-03 16:19:52 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] Skipping update: last updated   12.083s ago
2020-11-03 16:20:09 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   R
2020-11-03 16:20:39 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   R
2020-11-03 16:20:52 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] Skipping update: last updated   12.083s ago
2020-11-03 16:21:09 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   R
2020-11-03 16:21:40 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   R
2020-11-03 16:21:52 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] Skipping update: last updated   12.084s ago
2020-11-03 16:22:10 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   R
2020-11-03 16:22:40 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   R
2020-11-03 16:22:52 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] Skipping update: last updated   12.085s ago
2020-11-03 16:23:10 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   R
2020-11-03 16:23:40 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   R
2020-11-03 16:23:52 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] Skipping update: last updated   12.086s ago
2020-11-03 16:24:10 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   R
2020-11-03 16:24:40 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   R
2020-11-03 16:24:52 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] Skipping update: last updated   12.085s ago
2020-11-03 16:25:10 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   R
2020-11-03 16:25:40 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   R
2020-11-03 16:25:52 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] Skipping update: last updated   12.086s ago
2020-11-03 16:26:10 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   R
2020-11-03 16:26:40 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   R
2020-11-03 16:26:52 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] Skipping update: last updated   12.088s ago
2020-11-03 16:27:10 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   R
2020-11-03 16:27:40 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   R
2020-11-03 16:27:52 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] Skipping update: last updated   12.084s ago
2020-11-03 16:28:10 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   R
2020-11-03 16:28:40 DEBUG (MainThread)   [custom_components.pioneer_async.pioneer_avr] AVR listener received response:   R

Can you do something to solve this issue ?
Let me know if I can send you more information.

Implements device_state_attributes

I get these errors:

Entity media_player.vsx_528_2 (<class 'custom_components.pioneer_async.media_player.PioneerZone'>) implements device_state_attributes. Please report it to the custom component author.
Entity media_player.vsx_528_zone_2_2 (<class 'custom_components.pioneer_async.media_player.PioneerZone'>) implements device_state_attributes. Please report it to the custom component author.

Support for models which do not have a network standby mode

I have a Pioneer VSX-925 (2010) and it does not have a lower power standby mode for the network module. Therefor when the Pioneer is turn off, the entity is marked as unknown. Can we add a parameter (or model configuration) to indicate that power off vs standby mode. This is the best Pioneer integration out there!

Also, to know it does not support ?RGD, ?SVB or ?SSI commands.

History

Pioneer AVR turned on
8:48:24 AM - 2 hours ago
Pioneer AVR became unavailable triggered by automation Receiver off with TV triggered by state of Sony XR-65X90J
8:38:09 AM - 2 hours ago
Pioneer AVR turned on
8:37:58 AM - 2 hours ago

Debug

2023-02-23 21:11:15.270 DEBUG (MainThread) [custom_components.pioneer_async.media_player] Configuring AVR "192.168.4.44:8102"
2023-02-23 21:11:15.270 INFO (MainThread) [aiopioneer.pioneer_avr] Starting aiopioneer 0.1.8
2023-02-23 21:11:15.270 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR.init(host="192.168.4.44", port=8102, timeout=2, params={'ignored_zones': ['2']})
2023-02-23 21:11:15.271 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR.set_user_params({'ignored_zones': ['2']})
2023-02-23 21:11:15.271 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR.connect() started
2023-02-23 21:11:15.271 DEBUG (MainThread) [aiopioneer.pioneer_avr] opening AVR connection
2023-02-23 21:11:15.720 INFO (MainThread) [aiopioneer.pioneer_avr] AVR connection established
2023-02-23 21:11:15.720 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR._listener_schedule()
2023-02-23 21:11:15.721 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR._connection_listener() started
2023-02-23 21:11:15.721 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR._updater_schedule()
2023-02-23 21:11:15.733 INFO (MainThread) [aiopioneer.pioneer_avr] updating AVR status (full=True, last updated 1677211875.733 s ago)
2023-02-23 21:11:15.733 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR.connect() completed
2023-02-23 21:11:15.733 INFO (MainThread) [aiopioneer.pioneer_avr] querying device information from Pioneer AVR
2023-02-23 21:11:15.733 DEBUG (MainThread) [aiopioneer.pioneer_avr] sending AVR command: ?RGD
2023-02-23 21:11:15.788 DEBUG (MainThread) [aiopioneer.pioneer_avr] AVR command ?RGD returned error: E06
2023-02-23 21:11:15.788 DEBUG (MainThread) [aiopioneer.pioneer_avr] delaying command for 0.045 s
2023-02-23 21:11:17.383 DEBUG (MainThread) [aiopioneer.pioneer_avr] sending AVR command: ?SVB
2023-02-23 21:11:17.630 DEBUG (MainThread) [aiopioneer.pioneer_avr] AVR command ?SVB returned error: E04
2023-02-23 21:11:17.630 DEBUG (MainThread) [aiopioneer.pioneer_avr] sending AVR command: ?SSI
2023-02-23 21:11:17.856 DEBUG (MainThread) [aiopioneer.pioneer_avr] AVR command ?SSI returned error: E04
2023-02-23 21:11:17.856 INFO (MainThread) [aiopioneer.pioneer_avr] querying available zones on AVR
2023-02-23 21:11:17.856 DEBUG (MainThread) [aiopioneer.pioneer_avr] sending AVR command: ?P
2023-02-23 21:11:17.925 INFO (MainThread) [aiopioneer.pioneer_avr] Zone 1: Power: True

...

2023-02-23 21:11:21.566 DEBUG (MainThread) [aiopioneer.pioneer_avr] sending AVR command: ?RGB60
2023-02-23 21:11:21.571 DEBUG (MainThread) [aiopioneer.pioneer_avr] AVR command ?RGB60 returned error: E06
2023-02-23 21:11:21.571 DEBUG (MainThread) [aiopioneer.pioneer_avr] source name->id: {'PHONO': '00', 'CD': '01', 'TUNER': '02', 'CD-R/TAPE': '03', 'Wii': '04', 'TV/SAT': '05', 'VIDEO 1': '10', 'MULTI CH IN': '12', 'VIDEO 2': '14', 'DVR/BDR': '15', 'iPod/USB': '17', 'XM RADIO': '18', 'CabIe': '19', 'Computer': '20', 'Amazon FireTV': '21', 'HDMI 4': '22', 'HDMI 5': '23', 'Bluray': '25', 'INTERNET RADIO': '26', 'SIRIUS': '27', 'ADAPTER PORT': '33'}
2023-02-23 21:11:21.571 DEBUG (MainThread) [aiopioneer.pioneer_avr] source id->name: {'00': 'PHONO', '01': 'CD', '02': 'TUNER', '03': 'CD-R/TAPE', '04': 'Wii', '05': 'TV/SAT', '10': 'VIDEO 1', '12': 'MULTI CH IN', '14': 'VIDEO 2', '15': 'DVR/BDR', '17': 'iPod/USB', '18': 'XM RADIO', '19': 'CabIe', '20': 'Computer', '21': 'Amazon FireTV', '22': 'HDMI 4', '23': 'HDMI 5', '25': 'Bluray', '26': 'INTERNET RADIO', '27': 'SIRIUS', '33': 'ADAPTER PORT'}
2023-02-23 21:11:21.574 DEBUG (MainThread) [custom_components.pioneer_async.media_player] >> async_setup_entry(entry_id=f692b4d6060dbdc7b53b0d1d00d4c8bb, data={'name': 'Pioneer AVR', 'host': '192.168.4.44', 'port': 8102}, options={'ignore_zone_2': True, 'ignored_zones': ['2']})
2023-02-23 21:11:21.575 INFO (MainThread) [custom_components.pioneer_async.media_player] Adding entities for zones ['1']

2023-02-23 21:11:21.575 DEBUG (MainThread) [custom_components.pioneer_async.media_player] PioneerZone.init(1)
2023-02-23 21:11:21.575 DEBUG (MainThread) [custom_components.pioneer_async.media_player] Created entity Pioneer AVR for zone 1
2023-02-23 21:11:21.578 DEBUG (MainThread) [custom_components.pioneer_async.media_player] >> PioneerZone.async_update(1)
2023-02-23 21:11:21.579 DEBUG (MainThread) [custom_components.pioneer_async.media_player] >> PioneerZone.async_added_to_hass(1)

...

2023-02-23 21:11:15.270 DEBUG (MainThread) [custom_components.pioneer_async.media_player] Configuring AVR "192.168.4.44:8102"
2023-02-23 21:11:15.270 INFO (MainThread) [aiopioneer.pioneer_avr] Starting aiopioneer 0.1.8
2023-02-23 21:11:15.270 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR.init(host="192.168.4.44", port=8102, timeout=2, params={'ignored_zones': ['2']})
2023-02-23 21:11:15.271 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR.set_user_params({'ignored_zones': ['2']})
2023-02-23 21:11:15.271 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR.connect() started
2023-02-23 21:11:15.271 DEBUG (MainThread) [aiopioneer.pioneer_avr] opening AVR connection
2023-02-23 21:11:15.720 INFO (MainThread) [aiopioneer.pioneer_avr] AVR connection established
2023-02-23 21:11:15.720 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR._listener_schedule()
2023-02-23 21:11:15.721 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR._connection_listener() started
2023-02-23 21:11:15.721 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR._updater_schedule()
2023-02-23 21:11:15.733 INFO (MainThread) [aiopioneer.pioneer_avr] updating AVR status (full=True, last updated 1677211875.733 s ago)
2023-02-23 21:11:15.733 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR.connect() completed
2023-02-23 21:11:15.733 INFO (MainThread) [aiopioneer.pioneer_avr] querying device information from Pioneer AVR
2023-02-23 21:11:15.733 DEBUG (MainThread) [aiopioneer.pioneer_avr] sending AVR command: ?RGD
2023-02-23 21:11:15.788 DEBUG (MainThread) [aiopioneer.pioneer_avr] AVR command ?RGD returned error: E06
2023-02-23 21:11:15.788 DEBUG (MainThread) [aiopioneer.pioneer_avr] delaying command for 0.045 s
2023-02-23 21:11:17.383 DEBUG (MainThread) [aiopioneer.pioneer_avr] sending AVR command: ?SVB
2023-02-23 21:11:17.630 DEBUG (MainThread) [aiopioneer.pioneer_avr] AVR command ?SVB returned error: E04
2023-02-23 21:11:17.630 DEBUG (MainThread) [aiopioneer.pioneer_avr] sending AVR command: ?SSI
2023-02-23 21:11:17.856 DEBUG (MainThread) [aiopioneer.pioneer_avr] AVR command ?SSI returned error: E04
2023-02-23 21:11:17.856 INFO (MainThread) [aiopioneer.pioneer_avr] querying available zones on AVR
2023-02-23 21:11:17.856 DEBUG (MainThread) [aiopioneer.pioneer_avr] sending AVR command: ?P
2023-02-23 21:11:17.925 INFO (MainThread) [aiopioneer.pioneer_avr] Zone 1: Power: True

2023-02-25 08:45:03.577 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR.connect() started
2023-02-25 08:45:03.577 DEBUG (MainThread) [aiopioneer.pioneer_avr] opening AVR connection
2023-02-25 08:45:05.578 DEBUG (MainThread) [aiopioneer.pioneer_avr] could not reconnect to AVR: TimeoutError:
2023-02-25 08:45:05.578 DEBUG (MainThread) [aiopioneer.pioneer_avr] waiting 64s before retrying connection
2023-02-25 08:46:10.521 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR.connect() started
2023-02-25 08:46:10.522 DEBUG (MainThread) [aiopioneer.pioneer_avr] opening AVR connection
2023-02-25 08:46:12.523 DEBUG (MainThread) [aiopioneer.pioneer_avr] could not reconnect to AVR: TimeoutError:
2023-02-25 08:46:12.523 DEBUG (MainThread) [aiopioneer.pioneer_avr] waiting 64s before retrying connection
2023-02-25 08:47:17.257 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR.connect() started
2023-02-25 08:47:17.257 DEBUG (MainThread) [aiopioneer.pioneer_avr] opening AVR connection
2023-02-25 08:47:19.258 DEBUG (MainThread) [aiopioneer.pioneer_avr] could not reconnect to AVR: TimeoutError:
2023-02-25 08:47:19.258 DEBUG (MainThread) [aiopioneer.pioneer_avr] waiting 64s before retrying connection
2023-02-25 08:48:23.864 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR.connect() started
2023-02-25 08:48:23.864 DEBUG (MainThread) [aiopioneer.pioneer_avr] opening AVR connection
2023-02-25 08:48:23.978 INFO (MainThread) [aiopioneer.pioneer_avr] AVR connection established
2023-02-25 08:48:23.978 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR._listener_schedule()
2023-02-25 08:48:23.978 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR._connection_listener() started
2023-02-25 08:48:23.978 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR._updater_schedule()
2023-02-25 08:48:23.979 INFO (MainThread) [aiopioneer.pioneer_avr] updating AVR status (full=True, last updated 615.495 s ago)
2023-02-25 08:48:23.979 DEBUG (MainThread) [aiopioneer.pioneer_avr] sending AVR command: ?P
2023-02-25 08:48:23.979 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR.connect() completed
2023-02-25 08:48:23.979 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR.reconnect() completed
2023-02-25 08:48:23.988 DEBUG (MainThread) [aiopioneer.pioneer_avr] AVR command ?P returned response: PWR0
2023-02-25 08:48:23.988 DEBUG (MainThread) [aiopioneer.pioneer_avr] delaying command for 0.091 s
2023-02-25 08:48:24.079 DEBUG (MainThread) [aiopioneer.pioneer_avr] sending AVR command: ?V
2023-02-25 08:48:24.089 DEBUG (MainThread) [aiopioneer.pioneer_avr] AVR command ?V returned response: VOL102
2023-02-25 08:48:24.090 DEBUG (MainThread) [aiopioneer.pioneer_avr] delaying command for 0.090 s
2023-02-25 08:48:24.180 DEBUG (MainThread) [aiopioneer.pioneer_avr] sending AVR command: ?M
2023-02-25 08:48:24.190 INFO (MainThread) [aiopioneer.pioneer_avr] Zone 1: Mute: False
2023-02-25 08:48:24.190 DEBUG (MainThread) [aiopioneer.pioneer_avr] calling callback for zone 1
2023-02-25 08:48:24.191 DEBUG (MainThread) [aiopioneer.pioneer_avr] AVR command ?M returned response: MUT1
2023-02-25 08:48:24.191 DEBUG (MainThread) [aiopioneer.pioneer_avr] delaying command for 0.090 s
2023-02-25 08:48:24.282 DEBUG (MainThread) [aiopioneer.pioneer_avr] sending AVR command: ?F
2023-02-25 08:48:24.288 DEBUG (MainThread) [aiopioneer.pioneer_avr] AVR command ?F returned response: FN05
2023-02-25 08:48:24.288 DEBUG (MainThread) [aiopioneer.pioneer_avr] calling callback for zone 1
2023-02-25 10:27:28.805 INFO (MainThread) [aiopioneer.pioneer_avr] Zone 1: Mute: True
2023-02-25 10:27:28.805 DEBUG (MainThread) [aiopioneer.pioneer_avr] calling callback for zone 1
2023-02-25 10:27:34.148 DEBUG (MainThread) [aiopioneer.pioneer_avr] sending AVR command: PF
2023-02-25 10:27:34.896 DEBUG (MainThread) [aiopioneer.pioneer_avr] Task-1521671: connection closed
2023-02-25 10:27:34.896 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR.disconnect() started
2023-02-25 10:27:34.896 DEBUG (MainThread) [aiopioneer.pioneer_avr] disconnecting AVR connection

2023-02-25 10:27:34.896 DEBUG (MainThread) [aiopioneer.pioneer_avr] calling callback for zone 1
2023-02-25 10:27:34.896 DEBUG (MainThread) [aiopioneer.util] >> cancel_task(listener): requesting cancellation
2023-02-25 10:27:34.896 DEBUG (MainThread) [aiopioneer.util] >> cancel_task(listener): waiting for completion
2023-02-25 10:27:34.896 DEBUG (MainThread) [aiopioneer.util] >> cancel_task(listener): cancelled exception
2023-02-25 10:27:34.896 DEBUG (MainThread) [aiopioneer.util] >> cancel_task(responder): already completed
2023-02-25 10:27:34.896 DEBUG (MainThread) [aiopioneer.util] >> cancel_task(responder): returned exception: 0 bytes read on a total of undefined expected bytes
2023-02-25 10:27:34.896 DEBUG (MainThread) [aiopioneer.util] >> cancel_task(updater): requesting cancellation
2023-02-25 10:27:34.897 DEBUG (MainThread) [aiopioneer.util] >> cancel_task(updater): waiting for completion
2023-02-25 10:27:34.897 DEBUG (MainThread) [aiopioneer.pioneer_avr] Task-1587710: connection closed
2023-02-25 10:27:34.897 DEBUG (MainThread) [aiopioneer.pioneer_avr] AVR command PF timed out
2023-02-25 10:27:34.898 DEBUG (MainThread) [aiopioneer.util] >> cancel_task(updater): completed
2023-02-25 10:27:34.898 DEBUG (MainThread) [aiopioneer.pioneer_avr] closing AVR connection
2023-02-25 10:27:34.899 INFO (MainThread) [aiopioneer.pioneer_avr] AVR connection closed
2023-02-25 10:27:34.899 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR._reconnect_schedule()
2023-02-25 10:27:34.899 INFO (MainThread) [aiopioneer.pioneer_avr] reconnecting to AVR
2023-02-25 10:27:34.899 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR.disconnect() completed
2023-02-25 10:27:34.899 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR._connection_listener() completed
2023-02-25 10:27:34.899 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR.reconnect() started
2023-02-25 10:27:34.899 DEBUG (MainThread) [aiopioneer.pioneer_avr] waiting 4s before retrying connection
2023-02-25 10:27:39.258 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR.connect() started
2023-02-25 10:27:39.258 DEBUG (MainThread) [aiopioneer.pioneer_avr] opening AVR connection
2023-02-25 10:27:41.259 DEBUG (MainThread) [aiopioneer.pioneer_avr] could not reconnect to AVR: TimeoutError:
2023-02-25 10:27:41.259 DEBUG (MainThread) [aiopioneer.pioneer_avr] waiting 4s before retrying connection
2023-02-25 10:27:45.508 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR.connect() started
2023-02-25 10:27:45.508 DEBUG (MainThread) [aiopioneer.pioneer_avr] opening AVR connection
2023-02-25 10:27:47.510 DEBUG (MainThread) [aiopioneer.pioneer_avr] could not reconnect to AVR: TimeoutError:
2023-02-25 10:27:47.510 DEBUG (MainThread) [aiopioneer.pioneer_avr] waiting 4s before retrying connection
2023-02-25 10:27:51.702 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR.connect() started
2023-02-25 10:27:51.702 DEBUG (MainThread) [aiopioneer.pioneer_avr] opening AVR connection
2023-02-25 10:27:53.703 DEBUG (MainThread) [aiopioneer.pioneer_avr] could not reconnect to AVR: TimeoutError:
2023-02-25 10:27:53.704 DEBUG (MainThread) [aiopioneer.pioneer_avr] waiting 8s before retrying connection
2023-02-25 10:28:02.205 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR.connect() started
2023-02-25 10:28:02.205 DEBUG (MainThread) [aiopioneer.pioneer_avr] opening AVR connection
2023-02-25 10:28:04.206 DEBUG (MainThread) [aiopioneer.pioneer_avr] could not reconnect to AVR: TimeoutError:
2023-02-25 10:28:04.206 DEBUG (MainThread) [aiopioneer.pioneer_avr] waiting 16s before retrying connection
2023-02-25 10:28:20.715 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR.connect() started
2023-02-25 10:28:20.715 DEBUG (MainThread) [aiopioneer.pioneer_avr] opening AVR connection
2023-02-25 10:28:22.716 DEBUG (MainThread) [aiopioneer.pioneer_avr] could not reconnect to AVR: TimeoutError:
2023-02-25 10:28:22.716 DEBUG (MainThread) [aiopioneer.pioneer_avr] waiting 32s before retrying connection
2023-02-25 10:28:54.842 DEBUG (MainThread) [aiopioneer.pioneer_avr] >> PioneerAVR.connect() started
2023-02-25 10:28:54.843 DEBUG (MainThread) [aiopioneer.pioneer_avr] opening AVR connection
2023-02-25 10:28:56.843 DEBUG (MainThread) [aiopioneer.pioneer_avr] could not reconnect to AVR: TimeoutError:
2023-02-25 10:28:56.844 DEBUG (MainThread) [aiopioneer.pioneer_avr] waiting 64s before retrying connection

VSX-LX505 doesn't work

Hallo,

I hope you can help me. I am a "normal" user in HA.
I have add the HACS ha-pioneer_async integration and die install wizard starts

I add the ip-adress and test some ports 8102, 23 and try some other ports there are open on the pioneer.
But I can´t integrate the receiver VSX-LX505.

I got this Error Message:
Cannot connect to AVR: [Errno 111] Connect call failed ('192.168.xxx.xxx', 8102)

2024-03-29 20:24:45.430 ERROR (MainThread) [custom_components.pioneer_async.config_flow] unexpected exception: AVR connection not available
2024-03-29 20:28:06.771 ERROR (MainThread) [aiopioneer.pioneer_avr] cannot execute system_query_mac_addr command: AVR connection not available
2024-03-29 20:28:06.772 ERROR (MainThread) [aiopioneer.pioneer_avr] cannot execute system_query_software_version command: AVR connection not available
2024-03-29 20:28:06.774 ERROR (MainThread) [custom_components.pioneer_async.config_flow] unexpected exception: AVR connection not available

Have someone a idee?
Where I can get more Logs?

Error setting up entry for pioneer_async - VSX-2021

Hi, Cool stuff! Unfortunately I fail to properly configure my VSX-2021. I installed ha-pioneer async repo via HACS and was able to add and install via Integrations menu but at the end shows a "Failed to setup" integration tile.

I am able to successfully implement the original Pioneer integration (but would like to replace due to instability issues)

A telnet session to my AVR shows:
user@system ~]$ telnet 10.100.15.22 8102
Trying 10.100.15.22...
Connected to 10.100.15.22.
Escape character is '^]'.
PWR1
PWR1
PWR1

I wonder if there is some sort of incompatibility issue with this specific model.

Error setting up entry 10.100.15.22:8102 for pioneer_async

Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/config_entries.py", line 293, in async_setup
result = await component.async_setup_entry(hass, self) # type: ignore
File "/config/custom_components/pioneer_async/init.py", line 80, in async_setup_entry
await pioneer.connect()
File "/usr/local/lib/python3.8/site-packages/aiopioneer/pioneer_avr.py", line 253, in connect
reader, writer = await asyncio.wait_for( # pylint: disable=unused-variable
File "/usr/local/lib/python3.8/asyncio/tasks.py", line 494, in wait_for
return fut.result()
File "/usr/local/lib/python3.8/asyncio/streams.py", line 52, in open_connection
transport, _ = await loop.create_connection(
File "/usr/local/lib/python3.8/asyncio/base_events.py", line 1025, in create_connection
raise exceptions[0]
File "/usr/local/lib/python3.8/asyncio/base_events.py", line 1010, in create_connection
sock = await self._connect_sock(
File "/usr/local/lib/python3.8/asyncio/base_events.py", line 924, in _connect_sock
await self.sock_connect(sock, address)
File "/usr/local/lib/python3.8/asyncio/selector_events.py", line 496, in sock_connect
return await fut
File "/usr/local/lib/python3.8/asyncio/selector_events.py", line 528, in _sock_connect_cb
raise OSError(err, f'Connect call failed {address}')
ConnectionRefusedError: [Errno 111] Connect call failed ('10.100.15.22', 8102)

ConfigFlow does not work if Pioneer is Powered off at HA boot time for old pioneers

Clicking on Configure from Intergration Screen generates:

Error
Config flow could not be loaded: 500 Internal Server Error Server got itself in trouble

2023-03-01 21:52:02.061 ERROR (MainThread) [aiohttp.server] Error handling request
Traceback (most recent call last):
  File "/usr/local/lib/python3.10/site-packages/aiohttp/web_protocol.py", line 433, in _handle_request
    resp = await request_handler(request)
  File "/usr/local/lib/python3.10/site-packages/aiohttp/web_app.py", line 504, in _handle
    resp = await handler(request)
  File "/usr/local/lib/python3.10/site-packages/aiohttp/web_middlewares.py", line 117, in impl
    return await handler(request)
  File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 67, in security_filter_middleware
    return await handler(request)
  File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 100, in forwarded_middleware
    return await handler(request)
  File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 28, in request_context_middleware
    return await handler(request)
  File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 235, in auth_middleware
    return await handler(request)
  File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 146, in handle
    result = await result
  File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 218, in post
    return await super().post(request)
  File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 72, in wrapper
    result = await method(view, request, data, *args, **kwargs)
  File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 71, in post
    result = await self._flow_mgr.async_init(
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 243, in async_init
    result = await self._async_handle_step(flow, flow.init_step, data)
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 367, in _async_handle_step
    result: FlowResult = await getattr(flow, method)(user_input)
  File "/config/custom_components/pioneer_async/config_flow.py", line 126, in async_step_init
    pioneer = self.hass.data[DOMAIN][entry.entry_id]
KeyError: 'f692b4d6060dbdc7b53b0d1d00d4c8bb'

I do not have config or settings in configuration.yaml. All configuration was done via your UI. (Maybe that releated the 'other open issue'. So I assume it is pulling that from an internal database of HA.

And my Pioneer was not on, so it could not make a connection to it to get full init or a re-init. (I have not checked the code yet)

This occurs for Pioneer which is fully powered off (not standby) at the time of boot.

Invalid literal for int()

Since the update to the release 0.7.0 i am receiving the following errors from this integration:

Source: runner.py:128
First occurred: 27. Februar 2023 um 01:20:56 (53 occurrences)
Last logged: 28. Februar 2023 um 22:59:24

>> PioneerAVR._connection_listener() exception: invalid literal for int() with base 10: ''
>> PioneerAVR._connection_listener() exception: string index out of range

Despite these errors I did not find any problems with controlling my AVR.

I have installed the integration via HACS and configured my AVR in yaml, to increase the timeout (needed it for the previous release).

No input sources found on AVR

Hi @crowbarz and thanks for this great idea of maintaining a single continuous telnet session to AVR.

I would like to use your component with my VSX-S510 but I have a Runtime Error: No input sources found on AVR.

Error setting up entry 192.168.1.123:8102 for pioneer_async Traceback (most recent call last): File "/usr/src/homeassistant/homeassistant/config_entries.py", line 222, in async_setup result = await component.async_setup_entry( # type: ignore File "/config/custom_components/pioneer_async/__init__.py", line 73, in async_setup_entry await pioneer.build_source_dict() File "/config/custom_components/pioneer_async/pioneer_avr.py", line 533, in build_source_dict raise RuntimeError("No input sources found on AVR") RuntimeError: No input sources found on AVR

Can I manually add input sources ?

Thanks

Error in log since 0.8.1

Just updated to 0.8.1 from pre 0.8 and found this error in my log.

>> PioneerAVR._connection_listener() exception: string index out of range

Integration does stll seem to work though. So no clue what is wrong.
Using with a VSX-922.

Integration not working anymore

Hi,

my integration works well the last months. But after some days the status not changed. today i rebooted my home assistant. If if take a look under integration, i see that the entity will not be provided by pioneer_async anymore.
Home assistant is the actual version 2023.8.4.

i configured it manually through config file like this.

`media_player:

  • platform: pioneer_async
    name: Pioneer AVR
    host: 192.168.178.30
    port: 8102
    scan_interval: 60
    timeout: 5.0
    sources: { TV: '05', SAT: '06', GAME: '49' }`

Global AVR parameters not shown on zone 1

After we refactored the parser in the latest update, a number of responses no longer have an associated zone which stops HA from picking up a large number of global attributes unless a zone specific attribute is updated (such as volume).

Raising this issue more as a note. @crowbarz I'm tempted to just add a check into _parse_response for aiopioneer and add zone 1 to updated_zones if the parser response zone was null. What do you think?

Models Supported - Do you have a different model than this list?

These models I note either have custom configuration or people have noted that they are using that model and we can assume it works. Are there any other models that people have used this on?

Compatible and Supported

SC-xx SC-1xxx SC-2xxx SC-LX VSX-xx VSX-xxx VSX-1xxx VSX-2xxx
SC-71 SC-1223 SC-2023 SC-LX57 VSX-45 VSX-529 VSX-1025* VSX-2021
SC-75 SC-1228 SC-LX73 VSX-830 VSX-1028
SC-77 SC-1323 SC-LX77 VSX-838? VSX-1120
SC-1328 SC-LX78 VSX-922? VSX-1021
SC-1523 SC-LX87 VSX-923 VSX-1123
SC-1528 VSX-924 VSX-1128
VSX-925*
VSX-930

* does not support sleep mode
? currently testing

NOT Compatible

SC SC-LX VSX
VSX-921
VSX-LX50
VSX-LX503
VSX-LX505

Try using one of the Onkyo or onkyo-eiscp integrations instead.

Unable to connect to an SC-57

Not sure what’s wrong.
I installed through HACS and can see the integration in the flow. The setup queries for the name, address and port. Once provided, it fails after a while with a “fail to set up error”

Log try:

Logger: aiohttp.server
Source: custom_components/pioneer_async/config_flow.py:125
Integration: Pioneer AVR (documentation)
First occurred: June 4, 2022, 11:32:58 PM (1 occurrences)
Last logged: June 4, 2022, 11:32:58 PM

Error handling request
Traceback (most recent call last):
File "/usr/local/lib/python3.9/site-packages/aiohttp/web_protocol.py", line 435, in _handle_request
resp = await request_handler(request)
File "/usr/local/lib/python3.9/site-packages/aiohttp/web_app.py", line 504, in _handle
resp = await handler(request)
File "/usr/local/lib/python3.9/site-packages/aiohttp/web_middlewares.py", line 117, in impl
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 60, in security_filter_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 100, in forwarded_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 28, in request_context_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 79, in ban_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 220, in auth_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 137, in handle
result = await result
File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 243, in post
return await super().post(request)
File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 62, in wrapper
result = await method(view, request, *args, **kwargs)
File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 70, in post
result = await self._flow_mgr.async_init(
File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 205, in async_init
flow, result = await task
File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 232, in _async_init
result = await self._async_handle_step(flow, flow.init_step, data, init_done)
File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 335, in _async_handle_step
result: FlowResult = await getattr(flow, method)(user_input)
File "/config/custom_components/pioneer_async/config_flow.py", line 125, in async_step_init
pioneer = self.hass.data[DOMAIN][entry.entry_id]
KeyError: 'f12187e9456b5754c7ca934fe6737fcb'

Plugin attempts to set volume when AVR is off

Seem to be seeing a few of these errors in my HA logs at the moment:

Logger: aiopioneer.pioneer_avr
Source: custom_components/pioneer_async/media_player.py:412
Integration: Pioneer AVR ([documentation](https://github.com/crowbarz/ha-pioneer_async))
First occurred: 16 August 2022 at 22:32:33 (8 occurrences)
Last logged: 21 August 2022 at 20:37:53

AVR command 073VL returned error: E02

It appears that this happens when the AVR is switched off which according to the docs that I have:

E02<CR+LF> NOT AVAILABLE NOW Detected the Command line which could not work now.  

Perhaps a check needs to be added to ensure that the AVR is powered on?

'NoneType' object has no attribute 'get' - when changing Sound mode

When trying to set the Sound mode I get the following:
image

Running the current release 0.8

I can change the Source, but the error appears on Sound source. I think it worked in the previous release.

2023-04-08 20:34:03.165 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [140087147918432] 'NoneType' object has no attribute 'get'
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 199, in handle_call_service
    await hass.services.async_call(
  File "/usr/src/homeassistant/homeassistant/core.py", line 1820, in async_call
    task.result()
  File "/usr/src/homeassistant/homeassistant/core.py", line 1857, in _execute_service
    await cast(Callable[[ServiceCall], Awaitable[None]], handler.job.target)(
  File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 216, in handle_service
    await service.entity_service_call(
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 798, in entity_service_call
    future.result()  # pop exception if have
  File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 977, in async_request_call
    await coro
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 838, in _handle_entity_call
    await result
  File "/config/custom_components/pioneer_async/media_player.py", line 636, in async_select_sound_mode
    return await self._pioneer.set_listening_mode(sound_mode, self._zone)
  File "/usr/local/lib/python3.10/site-packages/aiopioneer/pioneer_avr.py", line 1370, in set_listening_mode
    if self.audio.get(zone).get("input_multichannel"):
AttributeError: 'NoneType' object has no attribute 'get'

Current Attribute state for the media player is:

sound_mode_list: STEREO, Front Stage Surround Advance, Front Stage Surround Advance Wide, AUTO SURR/STREAM DIRECT, AUTO SURROUND, DIRECT, PURE DIRECT, STEREO (direct), STANDARD, 2ch, PRO LOGIC, PRO LOGIC2 MOVIE, PRO LOGIC2 MUSIC, PRO LOGIC2 GAME, Neo:6 CINEMA, Neo:6 MUSIC, PRO LOGIC2x MOVIE, PRO LOGIC2x MUSIC, PRO LOGIC2x GAME, XM HD SURROUND, NEURAL SURROUND, PRO LOGIC2z HEIGHT, WIDE SURROUND MOVIE, WIDE SURROUND MUSIC, Neo:X CINEMA, Neo:X MUSIC, Neo:X GAME, NEURAL SURROUND+Neo:X CINEMA, NEURAL SURROUND+Neo:X MUSIC, NEURAL SURROUND+Neo:X GAME, PROLOGIC + THX CINEMA, PL2 MOVIE + THX CINEMA, Neo:6 CINEMA + THX CINEMA, PL2x MOVIE + THX CINEMA, THX SELECT2 GAMES, THX CINEMA, THX MUSIC, THX GAMES, PL2 MUSIC + THX MUSIC, PL2x MUSIC + THX MUSIC, Neo:6 MUSIC + THX MUSIC, PL2 GAME + THX GAMES, PL2x GAME + THX GAMES, THX ULTRA2 GAMES, PROLOGIC + THX MUSIC, PROLOGIC + THX GAMES, PL2z HEIGHT + THX CINEMA, PL2z HEIGHT + THX MUSIC, PL2z HEIGHT + THX GAMES, ACTION, SCI-FI, DRAMA, ENTERTAINMENT SHOW, MONO FILM, EXPANDED THEATER, CLASSICAL, UNPLUGGED, ROCK/POP, EXTENDED STEREO, PHONES SURROUND, TV SURROUND, SPORTS, ADVANCED GAME, Auto Level Control, OPTIMUM SURROUND, RETRIEVER AIR, ECO MODE, Neo:X CINEMA + THX CINEMA, Neo:X MUSIC + THX MUSIC, Neo:X GAME + THX GAMES, ECO MODE 1, ECO MODE 2
device_class: receiver
friendly_name: Pioneer AVR
supported_features: 69004
source_list: PHONO, CD, TUNER, CD-R/TAPE, Wii, TV/SAT, VIDEO 1, MULTI CH IN, VIDEO 2, DVR/BDR, iPod/USB, XM RADIO, CabIe, Computer, Amazon FireTV, HDMI 4, HDMI 5, Bluray, INTERNET RADIO, SIRIUS, ADAPTER PORT
volume_level: 0.4648648648648649
is_volume_muted: false
media_title: TV/SAT
source: TV/SAT
sound_mode: 
sources_json: {"PHONO": "00", "CD": "01", "TUNER": "02", "CD-R/TAPE": "03", "Wii": "04", "TV/SAT": "05", "VIDEO 1": "10", "MULTI CH IN": "12", "VIDEO 2": "14", "DVR/BDR": "15", "iPod/USB": "17", "XM RADIO": "18", "CabIe": "19", "Computer": "20", "Amazon FireTV": "21", "HDMI 4": "22", "HDMI 5": "23", "Bluray": "25", "INTERNET RADIO": "26", "SIRIUS": "27", "ADAPTER PORT": "33"}
device_volume: 86
device_max_volume: 185
device_volume_db: -37.5
amp: 
speakers: A
hdmi_audio: AMP
pqls: AUTO
panel_lock: 'OFF'
remote_lock: '0'
display: "\0              "

tuner: 
band: FM
frequency: 99.1
class: A
preset: 1

channel_levels: 
'1':
  C: 7
  L: 8.5
  R: 9
  SL: 9
  SR: 8.5
  SBL: 8.5
  SBR: 5.5
  SW: 1.5
  LH: 0
  RH: 0
  LW: 0
  RW: 0

dsp: 
mcacc_memory_set: 1
phase_control: 'off'
virtual_sb: true
virtual_height: true

video: 
signal_input_terminal: VIDEO
signal_input_resolution: '---'
signal_input_aspect: '---'
signal_input_color_format: '---'
signal_input_bit: '---'
signal_input_extended_colorspace: '---'
signal_output_resolution: '---'
signal_output_aspect: '---'
signal_output_color_format: '---'
signal_output_bit: '---'
signal_output_extended_colorspace: '---'
signal_hdmi1_recommended_resolution: '---'
signal_hdmi1_deepcolor: 36bit (12bit*3)
signal_hdmi2_recommended_resolution: '---'
signal_hdmi2_deepcolor: '---'

Typo in pioneer_avr.py

A minor issue, but while looking at pioneer_avr.py in line 1728, it reads:
"cannot calculate tuner AM frequency step: unable to step volume"
Instead of volume it should be either tuner or frequency.

never ending 'migration to version 2' in the logs

@11harveyj not sure if this is a side effect of my powered off Pioneer VSX-925.. everything works, just the endless logs

2023-05-28 13:28:12.559 INFO (MainThread) [custom_components.pioneer_async] config migration to version 2 successful
2023-05-28 13:28:12.560 INFO (MainThread) [aiopioneer.pioneer_avr] Starting aiopioneer 0.4.2
2023-05-28 13:28:55.798 INFO (MainThread) [custom_components.pioneer_async] config migration to version 2 successful
2023-05-28 13:28:55.798 INFO (MainThread) [aiopioneer.pioneer_avr] Starting aiopioneer 0.4.2
2023-05-28 13:30:19.358 INFO (MainThread) [custom_components.pioneer_async] config migration to version 2 successful
2023-05-28 13:30:19.359 INFO (MainThread) [aiopioneer.pioneer_avr] Starting aiopioneer 0.4.2
2023-05-28 13:31:42.835 INFO (MainThread) [custom_components.pioneer_async] config migration to version 2 successful
2023-05-28 13:31:42.836 INFO (MainThread) [aiopioneer.pioneer_avr] Starting aiopioneer 0.4.2
2023-05-28 13:33:06.226 INFO (MainThread) [custom_components.pioneer_async] config migration to version 2 successful
2023-05-28 13:33:06.226 INFO (MainThread) [aiopioneer.pioneer_avr] Starting aiopioneer 0.4.2

It stops one my Pioneer is powered on. And does not seem to repeat until the next reboot of HA

VSX1120, Main Zone not found

When adding a VSX1120, it adds the node to the devices list, during that process, it seems to detect the inputs correctly. Once added though, when its trying to "Initialize", it fails with the following error.

Logger: homeassistant.config_entries
Source: config_entries.py:1247
First occurred: June 8, 2023 at 6:44:12 PM (3 occurrences)
Last logged: 8:58:48 AM

Config entry '192.168.60.245:23' for pioneer_async integration not ready yet: Main Zone not found on AVR; Retrying in background

VSX 828 not working

Hi,
i have a VSX 828 and its not working. I start the configuration, after some time it stops with the following error
`Logger: homeassistant.config_entries
Source: custom_components/pioneer_async/init.py:160
Integration: Pioneer AVR (documentation)
First occurred: 13:36:19 (1 occurrences)
Last logged: 13:36:19

Error setting up entry 192.168.178.30:8102 for pioneer_async
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/config_entries.py", line 387, in async_setup
result = await component.async_setup_entry(hass, self)
File "/config/custom_components/pioneer_async/init.py", line 160, in async_setup_entry
await pioneer.build_source_dict()
File "/usr/local/lib/python3.10/site-packages/aiopioneer/pioneer_avr.py", line 766, in build_source_dict
response = await self.send_raw_request(
File "/usr/local/lib/python3.10/site-packages/aiopioneer/pioneer_avr.py", line 608, in send_raw_request
response = await self._read_response(timeout=self._timeout)
File "/usr/local/lib/python3.10/site-packages/aiopioneer/pioneer_avr.py", line 530, in _read_response
done, pending = await asyncio.wait( # pylint: disable=unused-variable
File "/usr/local/lib/python3.10/asyncio/tasks.py", line 384, in wait
return await _wait(fs, timeout, return_when, loop)
File "/usr/local/lib/python3.10/asyncio/tasks.py", line 491, in _wait
await waiter
asyncio.exceptions.CancelledError`

Can you try to fix it?

connecting via telnet to Port 8102 is working. Changing source and do other things are also workig. the avr is running at the moment of initialisation.

Not working with HA 2024.1.0

Integration does notwork anymore with Home Assistant 2024.01. For me it does not connect to the receiver anymore. There seems to be changes for media_player with the HA release. Many others like mopidy have also issues with the new release, e.g.:
state method in media_player changed from property to cached_property

Receiver is reachable via browser but integration says it cannot connect:
Cannot connect to AVR: [Errno 111] Connect call failed

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.