Getting soundField on soundbar that doesn't support it crash raise an exception, so it make the whole components unavailable. As there is no simple way to know if soundField is supported, I just get all sound settings, and then pick soundField one if present. If not present, then return None to make it continue, it will just have to effect to display no sound mode and not able to select one (Exactly what we want).
* Swallow error 40000 for songpal power on/off
* Move ERROR_REQUEST_RETRY to consts
* Add tests for the swallow exception behavior
* Update tests/components/songpal/test_media_player.py
---------
Co-authored-by: Paulus Schoutsen <balloob@gmail.com>
Co-authored-by: Paulus Schoutsen <paulus@home-assistant.io>
As shown in #64868, a number of newer models don't come wiht a macAddr
attributes, so for those fall back to the wireless address.
This could be hidden by the python-songpal library but for now this will
make it possible to have multiple modern songpal devices on the same
network.
* Make async_get_device connections Optional, default None
* Remove unnecessary async_get_device connections arg usages
Some of these were using an incorrect collection type, which didn't
cause issues mostly just due to luck.
* Use tests.async_mock instead of asynctest
* Remove unnecessary existence check
* Improve songpal service registering
* Add tests
* Seperate device api from entity api
* Improve disconnect log messages
* Improve tests
* Rename SongpalDevice to SongpalEntity
* Improve reconnecting
* Remove logging and sleep patch from tests
* Test unavailable state when disconnected
* Rename SongpalEntity.dev to _dev
* Add quality scale to manifest