nagyrobi / home-assistant-custom-components-linkplay

LinkPlay based media devices integration for Home Assistant.
168 stars 32 forks source link

2024.8 Linkplay in core #150

Open pergolafabio opened 1 month ago

pergolafabio commented 1 month ago

Seems LinkPlay will be an official core integration soon So this HACS is not necessary anymore?

https://rc.home-assistant.io/integrations/linkplay/

nagyrobi commented 1 month ago

Oh wow, finally! I can deprecate this as soon as it will be released.

Thrasher2020 commented 1 month ago

I tried using it - there's nowhere to actually configure it like the yaml version.

nagyrobi commented 1 month ago

It's autodetected. No need for YAMLs. It's also pretty generic, eg. can't change the input source names.

pergolafabio commented 1 month ago

Yeah, probably more PR are coming to make it better...

Thrasher2020 commented 1 month ago

Exactly. Mine is pretty heavily configured via yaml for icecast, LastFM and lots of sources etc. This new one doesn't allow for any of that so I think I'll stick with the HACS version :)

pergolafabio commented 1 month ago

Yeah, probably more PR are coming to make it better...

pergolafabio commented 1 month ago

maybe @nagyrobi can give a help to the core team about improving it? :-)

nagyrobi commented 1 month ago

From now, the linkplay custom component for Home Assistant is deprecated, and unsupported! Starting with Home Assistant 2024.08 release, Linkplay chipset based media players are officially supported without the need of any custom component.

To switch to the official LinkPlay integration starting from 2024.08, follow these steps:

For any bugs and feature requests, please use the official Home Assistant channels.

pergolafabio commented 1 month ago

that was quick :-)

pergolafabio commented 1 month ago

anyway, thnx a lot for this custom, i really enjoyed it!!

nagyrobi commented 1 month ago

When I took this over from @limych, in 2020, Home Assitant codebase was much more simpler and easier to understand. Over time, it grew to be so overcomplicated and abstracted that I simply couldn't keep up as an amateur programmer. Tried to watch the way other built-in media players codebase evolves, but from a point on I had to give up.

My personal opinion is that certain aspects of the development are not going the best way but then again, what do I know.

Additionally, I got a bit frustrated about the way certain Linkplays call home to third party servers, so I really like the news shared in https://github.com/nagyrobi/home-assistant-custom-components-linkplay/issues/142, which would require a completely new integration/component anyway.

nagyrobi commented 1 month ago

maybe @nagyrobi can give a help to the core team about improving it? :-)

Already found a bug, reported it, and they fixed it.

pergolafabio commented 1 month ago

glad you are helping already, good job! lets hope it gets merged in the beta, before it gets out :-)

nagyrobi commented 1 month ago

Meanwhile everybody who wants to see their devices autodetected by brand and model in HA, please make a PR, based on the project field seen in /httpapi.asp?command=getStatusEx, by adding to the file homeassistant/components/linkplay/utils.py.

For example I added some Arylics I know in https://github.com/home-assistant/core/pull/123056

pergolafabio commented 1 month ago

hey @nagyrobi , just tested the new core, but with yours custom, i used this service:

                  action: call-service
                  service: linkplay.preset
                  service_data:
                    entity_id: media_player.luidspreker_buiten
                    preset: 1

any idea if thats possible too to play presets?

nagyrobi commented 1 month ago

Don't think so. Make a Feature Request in HA core.

pergolafabio commented 1 month ago

seems also this one doesnt work?

                  action: call-service
                  service: media_player.play_media
                  service_data:
                    entity_id: media_player.luidspreker_buiten
                    media_content_id: 'http://opml.radiotime.com/Tune.ashx?id=s10861'
                    media_content_type: url

any idea how the new format will be?

thnx!

pergolafabio commented 1 month ago

done

https://github.com/home-assistant/core/issues/123372

nagyrobi commented 1 month ago

any idea how the new format will be?

It will be the way the developer who makes it, wants to...

pergolafabio commented 1 month ago

yeah, tried to play some basic mp3 , didnt work either... not sure what does work?

Tried some basic commands now, this works on my google hub:

action: media_player.play_media
target:
  entity_id: media_player.google_hub
data:
  media_content_type: playlist
  media_content_id: 'https://icecast.vrtcdn.be/mnm-high.mp3'

and the same on my linkplay device:

action: media_player.play_media
target:
  entity_id: media_player.luidspreker_buiten
data:
  media_content_type: playlist
  media_content_id: 'https://icecast.vrtcdn.be/mnm-high.mp3'

gives me:

Failed to perform the action media_player.play_media. Invalid media source URI

also tried like content_type : music ...

reverted back yo your custom for now :-)

nagyrobi commented 1 month ago

Please don't spam with the same message in multiple places.

saschaludwig commented 1 month ago

Sad to see something so useful being discontinued.

I made excessive use of multi-room audio and

  sources: {}
  common_sources: !include linkplay-common-sources.yaml

with over 150 items in it. The new integration isn't close to anything you created with the HACS version. I'll guess I have to stick some more months/years with your version. Thanks for all your effort!

nagyrobi commented 1 month ago

I don't see the good principle behind this kind of software development. Release unfinished products...

saschaludwig commented 1 month ago

Someone started a feature-request thread over here: https://community.home-assistant.io/t/core-linkplay-integration/757985 Please feel free to comment and upvote :-)

pergolafabio commented 2 weeks ago

hey @nagyrobi , since linkplay is now in core, i have setup it once, but since its limited, i deleted the integration and start using your custom again... But now the log file is flooded with messages like below, i think the custom is conflicting with the core, is there a way to solve it? maybe by renaming something?

2024-08-26 17:33:19.443 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved (None)
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 2869, in _load_integration
    await integration.async_get_platform("config_flow")
  File "/usr/src/homeassistant/homeassistant/loader.py", line 1100, in async_get_platform
    platforms = await self.async_get_platforms((platform_name,))
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/loader.py", line 1116, in async_get_platforms
    if platform := self._get_platform_cached_or_raise(platform_name):
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/loader.py", line 1207, in _get_platform_cached_or_raise
    raise ModuleNotFoundError(
ModuleNotFoundError: Platform linkplay.config_flow not found

The above exception was the direct cause of the following exception:

Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/helpers/discovery_flow.py", line 108, in _async_start
    await gather_with_limited_concurrency(FLOW_INIT_LIMIT, *init_coros)
  File "/usr/src/homeassistant/homeassistant/util/async_.py", line 106, in gather_with_limited_concurrency
    return await gather(
           ^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/util/async_.py", line 104, in sem_task
    return await task
           ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 1293, in async_init
    flow, result = await self._async_init(flow_id, handler, context, data)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 1313, in _async_init
    flow = await self.async_create_flow(handler, context=context, data=data)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 1449, in async_create_flow
    handler = await _async_get_flow_handler(
              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 2890, in _async_get_flow_handler
    await _load_integration(hass, domain, hass_config)
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 2876, in _load_integration
    raise data_entry_flow.UnknownHandler from err
homeassistant.data_entry_flow.UnknownHandler
pergolafabio commented 2 weeks ago

if i delete the yaml, and restart HA, i see below error:

2024-08-26 20:34:46.575 ERROR (MainThread) [homeassistant] Error doing job: Task exception was never retrieved (None)
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/config_entries.py", line 2869, in _load_integration
    await integration.async_get_platform("config_flow")
  File "/usr/src/homeassistant/homeassistant/loader.py", line 1100, in async_get_platform
    platforms = await self.async_get_platforms((platform_name,))
                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/loader.py", line 1177, in async_get_platforms
    import_future.result()
  File "/usr/src/homeassistant/homeassistant/loader.py", line 1147, in async_get_platforms
    await self.hass.async_add_import_executor_job(
  File "/usr/local/lib/python3.12/concurrent/futures/thread.py", line 58, in run
    result = self.fn(*self.args, **self.kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/loader.py", line 1090, in _load_platforms
    platform_name: self._load_platform(platform_name)
                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/loader.py", line 1264, in _load_platform
    cache[full_name] = self._import_platform(platform_name)
                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/loader.py", line 1296, in _import_platform
    return importlib.import_module(f"{self.pkg_path}.{platform_name}")
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/util/loop.py", line 200, in protected_loop_func
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.12/importlib/__init__.py", line 90, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "<frozen importlib._bootstrap>", line 1387, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1360, in _find_and_load
  File "<frozen importlib._bootstrap>", line 1324, in _find_and_load_unlocked
ModuleNotFoundError: No module named 'custom_components.linkplay.config_flow'
nagyrobi commented 2 weeks ago

No clue sorry. I use the integration in core. You should complain in HA support channels.

pergolafabio commented 2 weeks ago

Can you use the media_play service to send online m3u files for example to it? I never succeed doing that...

nagyrobi commented 2 weeks ago

I only use linkplay integration to control volume nowdays...that works....

ireun commented 1 week ago

Official integration for Wiim Pro Plus shows me "Failed to conntect"

nagyrobi commented 1 week ago

Not here to report...