postlund / pyatv

A client library for Apple TV and AirPlay devices
https://pyatv.dev
MIT License
841 stars 91 forks source link

Apple TV Integration standby state error #2111

Open CBCDesign opened 11 months ago

CBCDesign commented 11 months ago

Describe the bug

When my Apple TV (2nd Generation 4K version Model Number MXGY2B/A) is in standby mode, the state indicated in HASS is unstable. It frequently switches between Standby, Unavailable or Off, seemingly not knowing what state the device is actually in.

This makes it imposible for me to produce reliable automations triggered by state or display the mini media card on my dashboard using a conditional card so that its invisible when in standby.

I am running core version 2023.7.2, I am not running the beta version of the integration, I am running the version within HA. I have never used or installed the beta version.

My apple TV is on the same network as HA and has a fixed IP address. The integration has no issues finding my apple TV and the integration works reliably and well in Idle, Pause or Play mode.

Error log

2023-07-20 10:11:41.655 ERROR (MainThread) [pyatv.protocols.airplay] Failed to set up remote control channel
Traceback (most recent call last):
File “/usr/local/lib/python3.11/site-packages/pyatv/protocols/airplay/init.py”, line 289, in _connect_rc
await session.connect()
File “/usr/local/lib/python3.11/site-packages/pyatv/protocols/airplay/ap2_session.py”, line 63, in connect
self.connection = await http_connect(self._address, self._control_port)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/site-packages/pyatv/support/http.py”, line 631, in http_connect
_, connection = await loop.create_connection(HttpConnection, address, port)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/asyncio/base_events.py”, line 1085, in create_connection
raise exceptions[0]
File “/usr/local/lib/python3.11/asyncio/base_events.py”, line 1069, in create_connection
sock = await self._connect_sock(
^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/asyncio/base_events.py”, line 973, in _connect_sock
await self.sock_connect(sock, address)
File “/usr/local/lib/python3.11/asyncio/selector_events.py”, line 634, in sock_connect
return await fut
^^^^^^^^^
File “/usr/local/lib/python3.11/asyncio/selector_events.py”, line 674, in _sock_connect_cb
raise OSError(err, f’Connect call failed {address}’)
OSError: [Errno 113] Connect call failed (‘192.168.1.147’, 7000)
2023-07-20 10:11:44.727 ERROR (MainThread) [homeassistant.components.apple_tv] Failed to connect
Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/components/apple_tv/init.py”, line 222, in connect_once
await self._connect(conf, raise_missing_credentials)
File “/usr/src/homeassistant/homeassistant/components/apple_tv/init.py”, line 324, in _connect
self.atv = await connect(conf, self.hass.loop, session=session)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/site-packages/pyatv/init.py”, line 135, in connect
await atv.connect()
File “/usr/local/lib/python3.11/site-packages/pyatv/core/facade.py”, line 681, in connect
if await setup_data.connect():
^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/site-packages/pyatv/protocols/companion/init.py”, line 573, in _connect
await api.connect()
File “/usr/local/lib/python3.11/site-packages/pyatv/protocols/companion/api.py”, line 143, in connect
await self._protocol.start()
File “/usr/local/lib/python3.11/site-packages/pyatv/protocols/companion/protocol.py”, line 101, in start
await self.connection.connect()
File “/usr/local/lib/python3.11/site-packages/pyatv/protocols/companion/connection.py”, line 80, in connect
await self.loop.create_connection(lambda: self, self.host, self.port)
File “/usr/local/lib/python3.11/asyncio/base_events.py”, line 1085, in create_connection
raise exceptions[0]
File “/usr/local/lib/python3.11/asyncio/base_events.py”, line 1069, in create_connection
sock = await self._connect_sock(
^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/asyncio/base_events.py”, line 973, in _connect_sock
await self.sock_connect(sock, address)
File “/usr/local/lib/python3.11/asyncio/selector_events.py”, line 634, in sock_connect
return await fut
^^^^^^^^^
File “/usr/local/lib/python3.11/asyncio/selector_events.py”, line 674, in _sock_connect_cb
raise OSError(err, f’Connect call failed {address}’)
OSError: [Errno 113] Connect call failed (‘192.168.1.147’, 49153)
2023-07-20 10:11:44.732 WARNING (MainThread) [homeassistant.config_entries] Config entry ‘Main Bedroom’ for apple_tv integration not ready yet: Not found at 192.168.1.147, waiting for discovery; Retrying in background
2023-07-20 10:11:47.799 ERROR (MainThread) [pyatv.protocols.airplay] Failed to set up remote control channel
Traceback (most recent call last):
File “/usr/local/lib/python3.11/site-packages/pyatv/protocols/airplay/init.py”, line 289, in _connect_rc
await session.connect()
File “/usr/local/lib/python3.11/site-packages/pyatv/protocols/airplay/ap2_session.py”, line 63, in connect
self.connection = await http_connect(self._address, self._control_port)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/site-packages/pyatv/support/http.py”, line 631, in http_connect
_, connection = await loop.create_connection(HttpConnection, address, port)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/asyncio/base_events.py”, line 1085, in create_connection
raise exceptions[0]
File “/usr/local/lib/python3.11/asyncio/base_events.py”, line 1069, in create_connection
sock = await self._connect_sock(
^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/asyncio/base_events.py”, line 973, in _connect_sock
await self.sock_connect(sock, address)
File “/usr/local/lib/python3.11/asyncio/selector_events.py”, line 634, in sock_connect
return await fut
^^^^^^^^^
File “/usr/local/lib/python3.11/asyncio/selector_events.py”, line 674, in _sock_connect_cb
raise OSError(err, f’Connect call failed {address}’)
OSError: [Errno 113] Connect call failed (‘192.168.1.147’, 7000)
2023-07-20 10:11:50.872 ERROR (MainThread) [homeassistant.components.apple_tv] Failed to connect
Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/components/apple_tv/init.py”, line 222, in connect_once
await self._connect(conf, raise_missing_credentials)
File “/usr/src/homeassistant/homeassistant/components/apple_tv/init.py”, line 324, in _connect
self.atv = await connect(conf, self.hass.loop, session=session)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/site-packages/pyatv/init.py”, line 135, in connect
await atv.connect()
File “/usr/local/lib/python3.11/site-packages/pyatv/core/facade.py”, line 681, in connect
if await setup_data.connect():
^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/site-packages/pyatv/protocols/companion/init.py”, line 573, in _connect
await api.connect()
File “/usr/local/lib/python3.11/site-packages/pyatv/protocols/companion/api.py”, line 143, in connect
await self._protocol.start()
File “/usr/local/lib/python3.11/site-packages/pyatv/protocols/companion/protocol.py”, line 101, in start
await self.connection.connect()
File “/usr/local/lib/python3.11/site-packages/pyatv/protocols/companion/connection.py”, line 80, in connect
await self.loop.create_connection(lambda: self, self.host, self.port)
File “/usr/local/lib/python3.11/asyncio/base_events.py”, line 1085, in create_connection
raise exceptions[0]
File “/usr/local/lib/python3.11/asyncio/base_events.py”, line 1069, in create_connection
sock = await self._connect_sock(
^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/asyncio/base_events.py”, line 973, in _connect_sock
await self.sock_connect(sock, address)
File “/usr/local/lib/python3.11/asyncio/selector_events.py”, line 634, in sock_connect
return await fut
^^^^^^^^^
File “/usr/local/lib/python3.11/asyncio/selector_events.py”, line 674, in _sock_connect_cb
raise OSError(err, f’Connect call failed {address}’)
OSError: [Errno 113] Connect call failed (‘192.168.1.147’, 49153)
2023-07-20 10:12:04.311 ERROR (MainThread) [pyatv.protocols.airplay] Failed to set up remote control channel
Traceback (most recent call last):
File “/usr/local/lib/python3.11/site-packages/pyatv/protocols/airplay/init.py”, line 289, in _connect_rc
await session.connect()
File “/usr/local/lib/python3.11/site-packages/pyatv/protocols/airplay/ap2_session.py”, line 63, in connect
self.connection = await http_connect(self._address, self._control_port)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/site-packages/pyatv/support/http.py”, line 631, in http_connect
_, connection = await loop.create_connection(HttpConnection, address, port)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/asyncio/base_events.py”, line 1085, in create_connection
raise exceptions[0]
File “/usr/local/lib/python3.11/asyncio/base_events.py”, line 1069, in create_connection
sock = await self._connect_sock(
^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/asyncio/base_events.py”, line 973, in _connect_sock
await self.sock_connect(sock, address)
File “/usr/local/lib/python3.11/asyncio/selector_events.py”, line 634, in sock_connect
return await fut
^^^^^^^^^
File “/usr/local/lib/python3.11/asyncio/selector_events.py”, line 674, in _sock_connect_cb
raise OSError(err, f’Connect call failed {address}’)
OSError: [Errno 113] Connect call failed (‘192.168.1.147’, 7000)
2023-07-20 10:12:07.384 ERROR (MainThread) [homeassistant.components.apple_tv] Failed to connect
Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/components/apple_tv/init.py”, line 222, in connect_once
await self._connect(conf, raise_missing_credentials)
File “/usr/src/homeassistant/homeassistant/components/apple_tv/init.py”, line 324, in _connect
self.atv = await connect(conf, self.hass.loop, session=session)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/site-packages/pyatv/init.py”, line 135, in connect
await atv.connect()
File “/usr/local/lib/python3.11/site-packages/pyatv/core/facade.py”, line 681, in connect
if await setup_data.connect():
^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/site-packages/pyatv/protocols/companion/init.py”, line 573, in _connect
await api.connect()
File “/usr/local/lib/python3.11/site-packages/pyatv/protocols/companion/api.py”, line 143, in connect
await self._protocol.start()
File “/usr/local/lib/python3.11/site-packages/pyatv/protocols/companion/protocol.py”, line 101, in start
await self.connection.connect()
File “/usr/local/lib/python3.11/site-packages/pyatv/protocols/companion/connection.py”, line 80, in connect
await self.loop.create_connection(lambda: self, self.host, self.port)
File “/usr/local/lib/python3.11/asyncio/base_events.py”, line 1085, in create_connection
raise exceptions[0]
File “/usr/local/lib/python3.11/asyncio/base_events.py”, line 1069, in create_connection
sock = await self._connect_sock(
^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/asyncio/base_events.py”, line 973, in _connect_sock
await self.sock_connect(sock, address)
File “/usr/local/lib/python3.11/asyncio/selector_events.py”, line 634, in sock_connect
return await fut
^^^^^^^^^
File “/usr/local/lib/python3.11/asyncio/selector_events.py”, line 674, in _sock_connect_cb
raise OSError(err, f’Connect call failed {address}’)
OSError: [Errno 113] Connect call failed (‘192.168.1.147’, 49153)
2023-07-20 10:12:30.680 ERROR (MainThread) [pyatv.protocols.airplay] Failed to set up remote control channel
Traceback (most recent call last):
File “/usr/local/lib/python3.11/site-packages/pyatv/protocols/airplay/init.py”, line 289, in _connect_rc
await session.connect()
File “/usr/local/lib/python3.11/site-packages/pyatv/protocols/airplay/ap2_session.py”, line 63, in connect
self.connection = await http_connect(self._address, self._control_port)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/site-packages/pyatv/support/http.py”, line 631, in http_connect
_, connection = await loop.create_connection(HttpConnection, address, port)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/asyncio/base_events.py”, line 1085, in create_connection
raise exceptions[0]
File “/usr/local/lib/python3.11/asyncio/base_events.py”, line 1069, in create_connection
sock = await self._connect_sock(
^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/asyncio/base_events.py”, line 973, in _connect_sock
await self.sock_connect(sock, address)
File “/usr/local/lib/python3.11/asyncio/selector_events.py”, line 634, in sock_connect
return await fut
^^^^^^^^^
File “/usr/local/lib/python3.11/asyncio/selector_events.py”, line 674, in _sock_connect_cb
raise OSError(err, f’Connect call failed {address}’)
OSError: [Errno 113] Connect call failed (‘192.168.1.147’, 7000)
2023-07-20 10:12:33.751 ERROR (MainThread) [homeassistant.components.apple_tv] Failed to connect
Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/components/apple_tv/init.py”, line 222, in connect_once
await self._connect(conf, raise_missing_credentials)
File “/usr/src/homeassistant/homeassistant/components/apple_tv/init.py”, line 324, in _connect
self.atv = await connect(conf, self.hass.loop, session=session)
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/site-packages/pyatv/init.py”, line 135, in connect
await atv.connect()
File “/usr/local/lib/python3.11/site-packages/pyatv/core/facade.py”, line 681, in connect
if await setup_data.connect():
^^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/site-packages/pyatv/protocols/companion/init.py”, line 573, in _connect
await api.connect()
File “/usr/local/lib/python3.11/site-packages/pyatv/protocols/companion/api.py”, line 143, in connect
await self._protocol.start()
File “/usr/local/lib/python3.11/site-packages/pyatv/protocols/companion/protocol.py”, line 101, in start
await self.connection.connect()
File “/usr/local/lib/python3.11/site-packages/pyatv/protocols/companion/connection.py”, line 80, in connect
await self.loop.create_connection(lambda: self, self.host, self.port)
File “/usr/local/lib/python3.11/asyncio/base_events.py”, line 1085, in create_connection
raise exceptions[0]
File “/usr/local/lib/python3.11/asyncio/base_events.py”, line 1069, in create_connection
sock = await self._connect_sock(
^^^^^^^^^^^^^^^^^^^^^^^^^
File “/usr/local/lib/python3.11/asyncio/base_events.py”, line 973, in _connect_sock
await self.sock_connect(sock, address)
File “/usr/local/lib/python3.11/asyncio/selector_events.py”, line 634, in sock_connect
return await fut
^^^^^^^^^
File “/usr/local/lib/python3.11/asyncio/selector_events.py”, line 674, in _sock_connect_cb
raise OSError(err, f’Connect call failed {address}’)
OSError: [Errno 113] Connect call failed (‘192.168.1.147’, 49153)

How to reproduce the bug?

I dont know what is causing the state errors so cannot explain how to reproduce it.

What is expected behavior?

I would expect the integration to remain in standby state when the device is in standby mode, not oscillate between states and throw log errors and exceptions when doing so but this is what is happening.

Operating System

Windows 11

Python

Other

pyatv

Unknown

Device

Apple TV 4K version

Additional context

I think its running python version 3.11, I am not sure