* Add play/pause functionality to vizio integration
Leverages existing pyvizio functionality. My impression is that it also
works for soundbars based on https://github.com/exiva/Vizio_SmartCast_API/issues/19.
* Set vizio assumed_state to True
The Vizio API is only capable of indicating whether the device is on
or off and not whether it's playing/paused/idle. Setting assumed_state
to True gives us separate Play and Pause buttons versus the (useless)
merged Play/Pause button we would get otherwise.
* Use EntityFeature enum in vallox
* Use EntityFeature enum in velbus
* Use EntityFeature enum in velux
* Use EntityFeature enum in venstar
* Use EntityFeature enum in vera
* Use EntityFeature enum in verisure
* Use EntityFeature enum in vesync
* Use EntityFeature enum in vicare
* Use EntityFeature enum in vivotek
* Use EntityFeature enum in vizio
* Use EntityFeature enum in vlc
* Use EntityFeature enum in vlc_telnet
* Use EntityFeature enum in volumio
* track all settings and add service to update a setting
* sort setting types
* reduce frequency of updates due to the increase in API calls per update
* change dict call to a get in case audio settings aren't available
unlikely to occur but less error prone
* Update if statement to be more consistent
* revert changes to track all settings and store in state machine
* revert one more change
* force setting_type and setting_name to lowercase to make it easier to understand how to make service call
* make service calls even simpler by attempting to transform certain parameters as much as possible
* make ip check hostname aware
* add executor job for sync function doing IO and remove errant comma
* revert change to update new_data explicitly for options keys since it is already done later
* empty commit to retrigger CI
* add sound mode support for devices that support it
* make setting and unsetting flag better
* move eq and audio settings into constants
* fix missed statement to use constant instead of hardcoded string
* further fixes based on review
* bump pyvizio version to include newly identified app
* bump pyvizio and update app_id to show app config to aid in HA config generation. squashed from multiple commits to make a rebase on dev easier
* bump pyvizio for bug fixes
* fix pyvizio version number
* only return app_id if app is unknown and explicitly create the dict that's returned
* fix tests
* fix docstring for app_id
* filter out additional app config names from pyvizios app list
* add test
* change where filtering app list occurs
* fix test
* fix mistake in change
* hopefully final test fix
* fix test scenario that unknowingly broke with test change
* move apps configuration to options flow
* add additional assertion to new test
* add additional assertions for options update
* update docstrings, config validation, and tests based on review
* add app support
* code cleanup, add additional test, add CONF_APPS storage logic for import
* simplify schema defaults logic
* remove unnecessary lower() and fix docstring
* remove default return for popping CONF_APPS during import update because we know entry data has CONF_APPS due to if statement
* further simplification
* even more simplification
* fix type hints
* move app configuration to separate step, fix tests, and only make app updates if device_type == tv
* remove errors variable from tv_apps and move tv_apps schema out of ConfigFlow for consistency
* slight refactor
* remove unused error from strings.json
* set unique id as early as possible
* correct which dictionary to use to set unique id in pair_tv step
* add is_muted property and update tests
* black
* manually set is_muted on async_mute_volume calls to set state early
* combine two lines into one
* set is_muted to None when device is not on