* add pjlink media player component
* retrieve pjlink device name from projector if name isn't specified in configuration
* update .coveragerc
* fix style
* add missing docstrings
* address PR comments from @MartinHjelmare
* fix code style
* use snake case string for source names
* add missing period at the end of comment string
* rewrite method as function
* revert to use source name provided by projector
* Add media_player.dlna_dmr component
* PEP 492
* Move DIDL-template up
* Remove max_volume-override option
* Remove picky_device support
* Use DEFAULT_NAME
* Make supported_features static
* Remove unneeded argument
* Proper module-docstring
* Add http dependency
* Remove additional_configuration options, no longer used
* Change default name to 'DLNA Digital Media Renderer'
* Use python-didl-lite for DIDL-Lite-xml construction/parsing
* Handle NOT_IMPLEMENTED for UPnP state variables RelativeTimePosition and CurrentMediaDuration
* Use UPnP-UDN for unique_id
* Proper handling of upnp events
* Keeping flake8 happy
* Update requirements_all.txt
* Make UDN optional
* Ensure NotifyView is started, before using it
* Only subscribe to services we're interested in
* Don't update state_variables if value has not been changed + minor refactoring
* Improve play_media, follow flow of DLNA more closely
* Hopefully fix ClientOSError problems
* Flake8 fixes
* Keep pylint happy
* Catch errors and report gracefully
* Update async_upnp_client to 0.11.0
* Don't be so noisy
* Define/use constants for HTTP status codes
* Add discovery entry for dlna_dmr
* More robustness with regard to state variable not being set (yet)
* Keep privates hidden
* Handle NOT_IMPLEMENTED for CurrentTrackMetaData state variable
* Fixes in async_upnp_client + renew UPnP subscriptions regularly
* Not too eager
* Refactor duplicate code to _current_transport_actions and improve parsing of actions
* Support RC:1 to RC:3 and AVT:1 to AVT:3
* Moved DLNA-specifics to async_upnp_client.dlna.DmrDevice
* Use our own HTTP server to listen for events.
* More clear and explicit log message for easier troubleshooting
* Follow changes by hass, fixes traceback
* Fix not being able to do next
* Changes after review by @MartinHjelmare
* Linting
* Use homeassistant.util.get_local_ip
* Moved upnp event handling to async_upnp_client
* Keeping pylint happy
* Changes after review by @MartinHjelmare
* kodi add unique id based on discovery
* initialize unique_id to None
* use netdisco-extracted mac_address
* use an uuid instead of mac for real uniqueness
* add missing docstring
* verify that there is no entity already for the given unique id
* whitespace fix
* Add a component for Sisyphus Kinetic Art Tables
The [Sisyphus Kinetic Art Table](https://sisyphus-industries.com/) uses a
steel ball to draw intricate patterns in sand, thrown into sharp relief by a
ring of LED lights around the outside.
This component enables basic control of these tables through Home Assistant.
* Fix lints
* Docstrings, other lints
* More lints
* Yet more.
* Feedback
* Lint
* Missed one piece of feedback
* - Use async_added_to_hass in media player
- async_schedule_update_ha_state in listeners
- constants for supported features
- subscripting for required keys
- asyncio.wait
- update to sisyphus-control with passed-in session
* Update requirements
* lint
* fix aiohttp InvalidURL exception when fetching media player image
The first call for the HA proxy (`/api/media_player_proxy/media_player.kodi?token=...&cache=...`)
is receiving relative urls that are failing, this is a simple fix to precede the base_url when hostname is None.
* fix import location and sort stdlib imports
## Description:
More fixes flagged by pylint 2 that don't hurt to have before the actual pylint 2 upgrade (which I'll submit soon).
## Checklist:
- [ ] The code change is tested and works locally.
- [x] Local tests pass with `tox`. **Your PR cannot be merged unless tests pass**
* Add sound mode support
* continuation line indent
* indentation
* indentation
* Remove option to configure sound_mode_dict
* Sound mode support
- removed the sound_mode_raw propertie because it was not used, (still available through self._sound_mode_raw (as device attribute for automations and diagnostics)
* Detect sound mode support from device
Removed the config option to indicate if sound mode is supported.
Added detection if sound mode is supported from the receiver itself.
Pushed denonavr library to V.0.7.4
* Pushed denonavr to v.0.7.4
* Add python 3.7 to travis and tox
* Use pyyaml from github
* Don't version constraints
* Fix version tag
* Change to new pyyaml release
* Python 3.7 requires xenial
* Fix namespace detection
* Use correct RegEx type
* Update pexpect to 4.6
* Use correct validation for dictionaries
* Disable Py37 incompatible packages
* Upgrade all pexpect to 4.6
* Add explicit None as default param
## Description:
Switch to own packaged version of pylgnetcast
Request to make a pypi package didn't get any response: https://github.com/wokar/pylgnetcast/issues/1
**Related issue (if applicable):** #7069
* Show running apps as sources for Fire TV
* Fix unnecessary 'else' after 'return' (no-else-return)
* Remove 'pylint: disable=unused-argument'
* cleanup
* Improve volume support for Vizio Smartcast
* Vizio: avoid an error when 'self._device.get_current_volume()' returns 'None'
* Improve volume support for Vizio Smartcast
* Vizio: avoid an error when 'self._device.get_current_volume()' returns 'None'
* First line should end with a period
* Epson projector support. Version based on external library
* Epson projector support. Version based on external library
* modified epson according to MartinHjelmare review.
Added description of cmode to services.yaml
* renamed EPSON_SCHEMA to epson_schema
* removed method of getting cmode property
* removed unnecessary checks
change name of cmode service
* renamed SERVICE_ATTR_CMODE to SERVICE_SELECT_CMODE
Current uuid is ok when using only 1 snapserver
New uuid is needed when using multiple snapserver
Because the client can connect to more snapservers and
then uuid based on client MAC is not enough
* added new platform for the Unitymedia Horizon HD Recorder
* improve connection handling of the horizon platform
* remove unneeded parameters and fix spelling in the horizon platform
* abort or raise exception if connection to the device could not be established
* remove channel/source list and SELECT_SOURCE feature
* remove useless type check after cast and use a try block instead
* abort or raise exception if reconnect to device fails
* remove protocol specific code and restructure sending logic accordingly
* fix indentation to be pep8 complaint
* remove unused methods/properties
* fix unnecessary pylint commands and use a return to abert outside of setup_platform
* directly access config values
Unique id for client is generated from prefix 'snapcast_client_'
and MAC address
Unique id for group is generated from prefix 'snapcast_group_'
and UUID provided by snapcast library
When Samsung TV is idle for a period of time after issued a command,
subsequent 'turn_off' command won't turn off the TV. The issue is seen
in Samsung models with websocket as discussed in #12302.
== Reproducible Steps
1. Turn on TV (either via HA or directly).
2. Issue some commands e.g. volume ups / downs.
3. Wait for ~1 minute.
4. Issue turn_off command via HA. TV won't turn off.
5. Issue subsequent turn off commands won't turn off TV still.
6. However, issue some other commands e.g. volume ups / downs multiple
times in a row and then turn_off will turn off the TV.
== Root Cause
The underlying websocket connection opened by samsungctl get closed
after some idle time. There was no retry mechanism so issued commands
would intermittently fail but the subsequent one would succeed when
`_remote` get recreated. With `turn_off()`, however, there is an
additional call to `self.get_remote().close()` which indirectly caused
new connection to be created and then closed immediately. This causes the
component to stuck in failure mode when turn_off command is repeatly
issued.
== The Fix
Recreate the connection and retry the command if connection is closed
to avoid silent failures due to connection closed. Also set `_remote`
to None after calling close() to put it in correct state.
This fix eliminates intermittent command failure and failure mode in
turn_off().
* Media player: general sound mode support
* General sound mode support
* White spaces
* Add sound mode support to demo media player
* white space
* remove unnessesary code
* Version Requirement bump
Bump required version to 0.5 to allow component to work with Genie Mini clients using the clientAddr variable.
* Ran script/gen_requirements_all.py as requested.
The Universal media player inherits the states of the first child player that is not in some sort of "Off" state (including idle.) It was not considering the "unavailable" state to be off. Now it does.
This commit bumps the pycmus version used by the cmus component. There
was a bug in the previous version used, 1.0.0, when running in local
mode. This was caused by a mtreinish/pycmus#1 and also was reported in
the home-assistant forums (but not as an issue):
https://community.home-assistant.io/t/cant-install-cmus-component/7961
Version 0.1.1 of pycmus fixes this issue so it should work properly for
users running cmus and home-assistant on the same machine.
* onkyo: add support for max volume range
* onkyo: make flake8 happy
* onkyo: fix PEP8 D205 on line 181
* onkyo: use range for max_volume configuration
* onkyo: fix line too long
* Cast Integration Cleanup
* Fix long line
* Fixes and logging
* Fix tests
* Lint
* Report unknown state with None
* Lint
* Switch to async_add_job
Gets rid of those pesky "Setup of platform cast is taking over 10 seconds." messages.
* Re-introduce PlatformNotReady
* Add tests
* Remove unnecessary checks
* Test PlatformNotReady
* Fix async in sync context
* Blocking update
It's not using async anyway
* Upgrade pychromecast to 2.1.0
* Make reviewing easier
I like "protected" access, but I like reviewing more :)
* Make reviewing even easier :)
* Comment tests
* Initial commit on new asyncio based version
* Async version
* Lint
* updated to lasted pymediaroom version
* bump version
* optimistic state updates
* bump version
* Moved class import to method import
* async schedule and name correction
* Addresses @balloob comments
* missed fixes
* no unique_id for configuration based STB
* hound
* handle 2 mediaroom platforms
* Added timestamp for when device was marked unavailable
* protect time 1st marked
* client removal, no errors
* Optional removal interval added
* Linting error fix
* Implemented guard to prevent indentation
Removed vars in favour of inline calcs
* Using hass.add_job() for cleanup
* Lint
* Revert removal interval to 600sec
* Changed datetime to hass implementation
* Forgot to include one of the references to dt
* already in the default schema
* these are already globally disabled
* require a single entity id
* remove unused import
* w h i t e s p a c e
* actually keep it
* it is a string
* use a generator expression
* 💄
* Revert "💄"
This reverts commit 81c08bb732.
* Revert "actually keep it"
This reverts commit 0d92d3afb2.
* Revert "remove unused import"
This reverts commit 8a166208e4.
* Revert "already in the default schema"
This reverts commit 9173de4fd3.
* we're already ensuring defaults with the platform schema
* Marks Devices unavailable if they 'vanish' and clears media
* Fixed PEP8 complaint
* Fixed Linting
* Lint Fix
* Fix redine of id
* More lint fixes
* Removed redundant loop for setting availability of client
Renamed '_is_device_available' to '_available'
Renamed 'available_ids' to 'available_client_ids'
* removed whitespace per houndCI
* Refactor Google Assistant
* Fix cloud test
* Fix supported features media player demo
* Fix query
* Fix execute
* Fix demo media player tests
* Add tests for traits
* Lint
* Lint
* Add integration tests
* Add more tests
* update logging
* Catch out of range temp errrors
* Fix cloud error
* Lint
* add Channels media player
* add Channels' services
* style 💄
* more 💄
* make up your mind robot
* 💄💄💄
* dump client and pull it in via a package
* ChannelsApp -> ChannelsPlayer
* load the lib
* add pychannels in requirements
* not using requests anymore
* extra line 💄
* move this here
* move this up
* 🔥
* use constants for these
* add a platform schema
* force update here
* get defaults to None
* break out after finding it
* use None for state if offline or errored
* pull in CONF_NAME
* fix syntax
* update requirements_all.txt
* 💄💄💄
* 💄
* docs
* like this? ¯\(°_o)/¯
* Unique IDs for Clients
* HoundCI cleanup
* debug output removal
* Updates from feedback
* More Updates from feedback
* More Updates from feedback
* Lint Fixes
* Add Songpal ("Sony Audio Control API") platform
This adds support for a variety of Sony soundbars and potentially
many more devices using the same API.
See http://vssupport.sony.net/en_ww/device.html for list of
supported devices.
* add songpal requirement
* update coveragerc
* fix linting
* add service description to yaml
* add entity_id
* make pylint also happy.
* raise PlatformNotReady when initialization fails, bump requirement for better exception handling
* use noqa instead of pylint's disable, fix newline error
* use async defs and awaits
* Make linter happy
* Changes based on code review, fix set_sound_setting.
* define set_sound_setting schema on top of the file
* Move initialization back to async_setup_platform
* Fix linting
* Fixes based on code review
* Fix coveragerc ordering
* Do not print out the whole exception trace when failing to update
* Do not bail out when receiving more than one volume control
* Set to unavailable when no volume controls are available
* Added support for join and unjoin
* Added support for sleep functionality
* Fixed supported features
* Removed long lines and fixed documentation strings
* Fixed D401, imperative mood
* Added shuffle support
* Removed unnecessary log row
* Removed model, modelname and brand
* Removed descriptions
* Removed polling command on method run. This change is not needed
* Fixed merge errors
* Removed unused usings
* Pylint fixes
* Hound fixes
* Remove attr Sleep and removed white space in services.xml
* Rework Sonos media player platform for push
* Ignore play_mode from events where it is missing
* Remove unused preload helper
* Freeze SoCo version
* Updates for entity registry
* Add codeowner
* Use real soco release
* Added the Xiaomi TV platform.
* Implemented a more efficient default name.
* Fixed a few style errors that slipped past the eye.
* Indicate that state is assumed.
The yamaha component previously used a property named unique_id to
ensure that exactly 1 media_player was discovered per zone per
control_url. This was introduced so that hard coded devices wouldn't
be duplicated by automatically discovered devices.
In HA 0.63 unique_id became a reserved concept as part of the new
device registry, and the property was removed from the component. But
the default returns None, which had the side effect of only ever
registering a single unit + zone, the first one discovered. This was
typically the Main_Zone of the unit, but there is actually no
guaruntee of that.
This fix brings back the logic under a different property called
zone_id. This is not guarunteed to be globally stable like unique_id
is supposed to be, but it is suitable for the deduplication for yamaha
media players.
* Upgrade pylint to 1.8.1
* Fix no-else-return
* Fix bad-whitespace
* Fix too-many-nested-blocks
* Fix raising-format-tuple
See https://github.com/PyCQA/pylint/blob/master/doc/whatsnew/1.8.rst
* Fix len-as-condition
* Fix logging-not-lazy
Not sure about that TEMP_CELSIUS though, but internally it's probably just like if you concatenated any other (variable) string
* Fix stop-iteration-return
* Fix useless-super-delegation
* Fix trailing-comma-tuple
Both of these seem to simply be bugs:
* Nest: The value of self._humidity never seems to be used anywhere
* Dovado: The called API method seems to expect a "normal" number
* Fix redefined-argument-from-local
* Fix consider-using-enumerate
* Fix wrong-import-order
* Fix arguments-differ
* Fix missed no-else-return
* Fix no-member and related
* Fix signatures-differ
* Revert "Upgrade pylint to 1.8.1"
This reverts commit af78aa00f125a7d34add97b9d50c14db48412211.
* Fix arguments-differ
* except for device_tracker
* Cleanup
* Fix test using positional argument
* Fix line too long
I forgot to run flake8 - shame on me... 🙃
* Fix bad-option-value for 1.6.5
* Fix arguments-differ for device_tracker
* Upgrade pylint to 1.8.2
* 👕 Fix missed no-member
* Added timestamp at the end of the iTunes API URL from where HA retrieves the artwork, so that it's not cached, as the URL exposed by the API never changes
* Rearranged imports according to pylint
* Added content_id in media file URL instead of timestamp, according to Paulus' suggestion
* Add wake on lan capability to philips TV
* Update requirements_all.txt
* Fix line length issues.
* Replace wake on lan with turn on script for philips TV
* rerun requirements script
* Implemented play_media
Panasonic Viera TV has a full blown Web Browser that can play any media
* media stop
* format checks
* added SUPPORT_*
* bump version
* Tks @rytilahti
* one too many
* make port mapping optional
* dependencies + improvements
* Added bytes and packets sensors from IGD
* flake8 check
* new sensor with upnp counters
* checks
* whitespaces in blank line
* requirements update
* added sensor.upnp to .coveragerc
* downgrade miniupnpc
Latest version of miniupnpc is 2.0, but pypi only has 1.9
Fortunately it is enough
* revert to non async
miniupnpc will do network calls, so this component can’t be moved to
coroutine
* hof hof
forgot to remove import ot asyncio
* Add baudrate option
* merge
* Added Mediaroom media_player component
* Updated header
Works with MEO and VDF set-top boxes in Portugal
* formatting
* Development Checklist (done)
* fix formatting according to houndci-bot
* more format fixing (tks houndci-bot)
* more fixes
* too much cleanup...
* too much
* pylint check
* Initial commit
Basic configuration testing
* flake8 and lint
* Added Channel attribute to webos media pplayer
* webostv: Current TV channel display as media_title
* Added displaying information about the current TV channel for WebOS platform
* Fixed PEP8 requirements
* added media_stop
VLC was missing the media_stop. The pause was present, but starting the same file result in resuming the file instead of start over new
* Corrected style issues
Style issues and added Support Flag to Support VLC
* fixed other style issues
* remove trailing whitespace