limych / media_player.linkplay Goto Github PK
View Code? Open in Web Editor NEWDeprecated. Please, use https://github.com/nagyrobi/home-assistant-custom-components-linkplay
License: MIT License
Deprecated. Please, use https://github.com/nagyrobi/home-assistant-custom-components-linkplay
License: MIT License
We need to make services to save the current state of playing music and restore it. Same as media_player_sonos_snapshot and media_player_sonos_restore.
Source: https://community.home-assistant.io/t/linkplay-integration/33878/128?u=limych
I tried connecting to my Linkplay wireless ceiling speakers with this plugin and getting the following error on the logs:
Update for media_player.kitchen_speakers fails
Traceback (most recent call last):
File “/usr/local/lib/python3.7/site-packages/urllib3/connection.py”, line 157, in _new_conn
(self._dns_host, self.port), self.timeout, **extra_kw
File “/usr/local/lib/python3.7/site-packages/urllib3/util/connection.py”, line 84, in create_connection
raise err
File “/usr/local/lib/python3.7/site-packages/urllib3/util/connection.py”, line 74, in create_connection
sock.connect(sa)
ConnectionRefusedError: [Errno 111] Connection refused
I can connect to the speakers fine and get a json response:
http://my-ip/httpapi.asp?command=getStatus
{ “language”: “en_us”, “ssid”: “Wifi Speaker_5F10”, “hideSSID”: “0”, “firmware”: “3.6.4122”, “build”: “release”, “project”: “Lumi_WSP-6_A31”, “priv_prj”: “Lumi_WSP-6_A31”, “Release”: “20170222”, “group”: “0”, “expired”: “0”, “internet”: “1”, “uuid”: “FF31F01281534F88B617C394”, “MAC”: “removed”, “date”: “2020:01:21”, “time”: “16:38:16”, “netstat”: “2”, “essid”: “486F6D655F57696669”, “apcli0”: “ip-removed”, “eth2”: “0.0.0.0”, “hardware”: “A31”, “VersionUpdate”: “0”, “NewVer”: “0”, “mcu_ver”: “1611”, “mcu_ver_new”: “0”, “ra0”: “ip-removed”, “temp_uuid”: “CE407CCBF3E01539”, “cap1”: “0x0”, “capability”: “0x20680200”, “languages”: “0x6”, “dsp_ver”: “”, “streams_all”: “0xfffffff”, “streams”: “0xfffffff”, “region”: “unknown”, “external”: “0x0”, “preset_key”: “6”, “plm_support”: “0x2”, “WifiChannel”: “11”, “RSSI”: “-70”, “battery”: “0”, “battery_percent”: “0”, “securemode”: “1”, “auth”: “WPAPSKWPA2PSK”, “encry”: “AES”, “psk”: “removed”, “upnp_version”: “1004”, “upnp_uuid”: “uuid:FF31F012-8153-4F88-B617-C394FF31F012”, “uart_pass_port”: “8899”, “communication_port”: “8819”, “web_firmware_update_hide”: “0”, “privacy_mode”: “0”, “user1”: “278:524”, “user2”: “5959:6291”, “DeviceName”: “Kitchen Speakers”, “GroupName”: “Kitchen Speakers” }
The speakers work with any commands I’ve tried from here:
GitHub
AndersFluur/IEastMediaRoom
The specification of the Sonoe IEast protocol translated from French and PDF. The protocol is also valid for receivers branded 'Roxcore' - AndersFluur/IEastMediaRoom
Any ideas where to go from here?
Thanks
Also seeing this in the logs if it helps:
Traceback (most recent call last):
File “/usr/src/homeassistant/homeassistant/helpers/entity.py”, line 279, in async_update_ha_state
await self.async_device_update()
File “/usr/src/homeassistant/homeassistant/helpers/entity.py”, line 461, in async_device_update
await self.hass.async_add_executor_job(self.update)
File “/usr/local/lib/python3.7/concurrent/futures/thread.py”, line 57, in run
result = self.fn(*self.args, **self.kwargs)
File “/config/custom_components/linkplay/media_player.py”, line 705, in update
lxml.etree.XMLSyntaxError):
NameError: name ‘lxml’ is not defined
2019-12-29 19:28:53 ERROR (MainThread) [homeassistant.helpers.entity] Update for media_player.kitchen fails
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 281, in async_update_ha_state
await self.async_device_update()
File "/usr/src/homeassistant/homeassistant/helpers/entity.py", line 461, in async_device_update
await self.hass.async_add_executor_job(self.update)
File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/linkplay/media_player.py", line 764, in update
self._update_from_id3()
File "/config/custom_components/linkplay/media_player.py", line 656, in _update_from_id3
import eyed3
File "/usr/local/lib/python3.7/site-packages/eyed3/init.py", line 32, in
from .utils.log import log # noqa: E402
File "/usr/local/lib/python3.7/site-packages/eyed3/utils/init.py", line 27, in
import magic
File "/usr/local/lib/python3.7/site-packages/magic.py", line 181, in
raise ImportError('failed to find libmagic. Check your installation')
ImportError: failed to find libmagic. Check your installation
Not an issue as such but not quite a feature request either.
If I play media from Tunein on the linkplay speakers via the SmartSonix app on my phone then the correct media metadata is interpreted and homeassistant shows the current radio station name/details and logo.
If I play the same radio station directly from the audio stream link URL from Tunein using mediaplayer.play_media via a script then no media info is shown.
Is there a way to get this component to read the metadata from the stream URL or what is the source of the metadata?
Hi, me and my friend named @pnbruckner have fixed this component to work with audio pro speakers or atleast the c5. I dont really want to make a PR as the code is modified to work just with audio pro and the other ones have not been taken into consideration.
But if youre using a audio pro speaker, feel free to contact me on discord or email and i'll try to help you with it.
Discord: Svemat#8259
E-mail: [email protected]
Credit for it should go to pnbruckner as he was the one who told me how to do the stuff, so thanks again :)
VERSOIN = '1.1.6' plus #25 patch
media_player:
- platform: linkplay
host: 192.168.2.12
device_name: livingroom
- platform: linkplay
host: 192.168.2.13
device_name: office
tts:
- plattform: google_translate
language: de
With Version 0.110.0 when the enaming of the MediaPlayerDevice entitiy is started. That the playback of tts is failing on my linkplay speakers. I tested it with my other setup and it works with other speakers still well. Anyone else having the problem or may knows a fix? Yes I patched the component as decribed in #25.
Steps to reprouce:
open speaker in the HA ui
type in text for tts
play press
you will hear nothing (ui grays out the speaker for a moment)
nohing to see in the logs :(
![Bildschirmfoto 2020-09-05 um 14 11 40](https://user-images.githubusercontent.com/879178/92304849-15dfd900-ef82-11ea-8dce-52942a3d1c7d.png)
Hi,
I have 3 IEAST M5 media player and have some issues.
I can control them but cannot get proper status.
From the start the state is "Unknown" as soon as I change the volume I get some status like audio source, volume level, but no audio title or others. I can plays/pause but the button icon does not change and get a banner in HA telling "Failed to call service media-player/media_play_pause. 'NoneType' oblect is not iterable"
I'm running HA 0.94.3
How to go further debugging ?
automation:
- alias: "[Media] Play Radio on Wake"
initial_state: on
trigger:
- platform: state
entity_id: group.motion
to: 'on'
condition:
condition: and
conditions:
- condition: state
entity_id: input_boolean.play_radio
state: 'off'
for:
hours: 5
- condition: state
entity_id: input_select.day_mode
state: 'Утро'
- condition: state
entity_id: input_boolean.guest_mode
state: 'off'
action:
- service: media_player.volume_set
data:
entity_id: all
volume_level: 0.35
- service: input_boolean.turn_on
entity_id: input_boolean.play_radio
- service: notify.all
data:
message: 'С добрым утром!'
Error while calling service
2019-08-24 11:17:00 ERROR (MainThread) [homeassistant.components.automation] Error while executing automation automation.media_play_radio_on_wake. Unknown error for call_service at pos 1:
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/components/automation/__init__.py", line 427, in action
await script_obj.async_run(variables, context)
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 151, in async_run
await self._handle_action(action, variables, context)
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 235, in _handle_action
await self._actions[_determine_action(action)](action, variables, context)
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 318, in _async_call_service
context=context,
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 97, in async_call_from_config
domain, service_name, service_data, blocking=blocking, context=context
File "/usr/src/homeassistant/homeassistant/core.py", line 1235, in async_call
await asyncio.shield(self._execute_service(handler, service_call))
File "/usr/src/homeassistant/homeassistant/core.py", line 1260, in _execute_service
await handler.func(service_call)
File "/usr/src/homeassistant/homeassistant/helpers/entity_component.py", line 210, in handle_service
self._platforms.values(), func, call, service_name, required_features
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 334, in entity_service_call
future.result() # pop exception if have
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 349, in _handle_service_platform_call
entity.supported_features & feature_set for feature_set in required_features
File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 349, in
entity.supported_features & feature_set for feature_set in required_features
TypeError: unsupported operand type(s) for &: 'NoneType' and 'int'
Hi,
the component seems not working well with HA 0.96.
Any suggestions?
Thanks,
Manuel
HA Beta: 0.110.0b5
Supervisor Beta channel: 222
HassOS 4.6
Deployment | staging
Hello I’m on HA Beta version: 0.110.0b5
The have changed somting so now I get a error, so I’m wondering if you are working on a updated to your add-on?
Log Details (WARNING)
Logger: homeassistant.components.media_player
Source: components/media_player/init.py:938
Integration: Media player (documentation, issues)
First occurred: 3:27:54 PM (1 occurrences)
Last logged: 3:27:54 PM
MediaPlayerDevice is deprecated, modify LinkPlayDevice to extend MediaPlayerEntity
When you change the volume for one speaker, it changes immediately on all connected devices - both on the master and on the slave.
1.1.2 commit: 2db347b
media_player:
Update for media_player.audiopro_c3 fails
Log Details (ERROR)
Fri Aug 23 2019 13:19:17 GMT+0200 (CEST)
Update for media_player.audiopro_c3 fails
Traceback (most recent call last):
File "/usr/src/app/homeassistant/helpers/entity.py", line 249, in async_update_ha_state
await self.async_device_update()
File "/usr/src/app/homeassistant/helpers/entity.py", line 419, in async_device_update
await self.hass.async_add_executor_job(self.update)
File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/linkplay/media_player.py", line 701, in update
if upnpclient.Device(entry.location).friendly_name ==
File "/usr/local/lib/python3.7/site-packages/upnpclient/upnp.py", line 131, in init
self._read_services()
File "/usr/local/lib/python3.7/site-packages/upnpclient/upnp.py", line 180, in _read_services
findtext('eventSubURL')
File "/usr/local/lib/python3.7/site-packages/upnpclient/upnp.py", line 235, in init
self.scpd_xml = etree.fromstring(resp.content)
File "src/lxml/etree.pyx", line 3234, in lxml.etree.fromstring
File "src/lxml/parser.pxi", line 1876, in lxml.etree._parseMemoryDocument
File "src/lxml/parser.pxi", line 1764, in lxml.etree._parseDoc
File "src/lxml/parser.pxi", line 1127, in lxml.etree._BaseParser._parseDoc
File "src/lxml/parser.pxi", line 601, in lxml.etree._ParserContext._handleParseResultDoc
File "src/lxml/parser.pxi", line 711, in lxml.etree._handleParseResult
File "src/lxml/parser.pxi", line 640, in lxml.etree._raiseParseError
File "", line 1
lxml.etree.XMLSyntaxError: Document is empty, line 1, column 1
Hi, I managed to add my Audio Pro C10 speakers to hass. Unfortunately inputs are not alligned between hass and speakers:
Line-in within hass sets speakers to Aux mode (jack at the top of the speaker)
There is no option to set speakers in hass to Line-in mode (RCA input at the back of the speaker)
I'm not a programmer and hass beginner, but after having a look at media_player.py I assume it's a matter of mapping them in SOURCES_MAP. It also seems the mapping should be dynamic depending on brand of speakers being used.
Happy to add more details or contribute more, but please mind my limited skillset.
Hello, i cannot get this to work with my home assistant setup
copied the three files to the custom_components-linkplay folder but configuration wont reboot??
Hey,
I have an Acrylic media player and it should be a Linkplay chip inside.
But I tried the plugin but it does not work properly. Some things work others don't.
The API commands look like they should work with your plugin. I used the API with node red
and this works fine.
Arylic have some very cool devices for budget multi room audio.
https://www.arylic.com
I'm not capable of doing this myself :-/
2019-04-29 13:41:12 ERROR (MainThread) [homeassistant.helpers.entity] Update for media_player.kitchen fails
Traceback (most recent call last):
File "/usr/local/lib/python3.7/site-packages/homeassistant/helpers/entity.py", line 220, in async_update_ha_state
await self.async_device_update()
File "/usr/local/lib/python3.7/site-packages/homeassistant/helpers/entity.py", line 377, in async_device_update
await self.hass.async_add_executor_job(self.update)
File "/usr/local/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/config/custom_components/linkplay/media_player.py", line 710, in update
self._update_via_upnp()
File "/config/custom_components/linkplay/media_player.py", line 591, in _update_via_upnp
xml_tree = ET.fromstring(media_info)
File "/usr/local/lib/python3.7/xml/etree/ElementTree.py", line 1315, in XML
parser.feed(text)
File "/usr/local/lib/python3.7/xml/etree/ElementTree.py", line 1630, in feed
self.parser.Parse(data, 0)
TypeError: a bytes-like object is required, not 'NoneType'
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.