* code not working
* did it all all at once
* removing debug stuff
* fixing lint issues
* fixing lint issues
* I am blind
* I felt small(80 by somthing) was to small, especily with lovelace
* fixing silly mistake
* this shouldnt be here
* made some changes
* corrrected client_id
* corrrected client_id
* less returns needed
* Fixing Small bugs and making stuff snake case
* Tweaking
* Added error handling for sense API timeouts
* Moved imports in function
* Moved imports to more appropriate function
* Change exception to custom package version
* Updated sense_energy library to 0.4.2
* fixed median was based on 1.5 minute interval, not 1 hour
* ignore median and set state from first value, when previous state was None
* update before add, removed unused 'retries' and 'ble_timeout', check if platform ready
* added missing blank line
* fixed too long line
* using modern python 3.5 features, changed comment to be less verbose
* continuation line fix
* removed DEFAULT_SCAN_INTERVAL in favor of existing SCAN_INTERVAL
* implement correct state for rflink cover
* Fix linting error
* invert logic as local testing pointed out it should be reversed
* add period at the end to satisfy the linter
* New service to load new devices from deCONZ without restarting HASS
* Do not use len to check if list is empty
* Add support for scenes to be updated as well
* Rework refresh devices method
* Fix test
* Test
* Ability to remove device
* Don't remove devices, instead remove config entry from device and entity registries
* Remove print
* Remove is not the same as unload
* Add tests
* Fix hound comment
* Add support for older Envoy models
* Stop requiring envoy model name in config
* Update to envoy_reader0.2
* Minor formatting fixes
* run script/gen_requirements_all.py
* Minor formatting fixes
* Change some strings to constants, use getattr to call function
The last_seen attribute was a datetime in the local timezone but with
no tzinfo (i.e., a "naive" datetime.) When state changes occurred it
would be printed incorrectly in homeassistant.log because
homeassistant.util.dt.as_local assumes any datetime without tzinfo is
UTC. Also most, if not all, datetime attributes are timezone aware in
UTC. So use homeassistant.util.dt.as_utc (which assumes a naive
datetime is local) to convert last_seen to a timezone aware datetime
in UTC.
A recent change caused an issue if a single static wemo device is offline and could not be reached, then the whole component would not initialize (and therefore all other wemo devices are not added).
* initial working version of a geo location component and georss platform
* ensure that custom attributes don't override built-in ones
* bugfixes and tests
* fixing tests because of introduction of new component using same fixture
* improving test cases
* removing potentially unavailable attribute from debug message output
* completing test suite
* cleaning up debug messages; sorting entries in group view by distance
* ability to define the desired state attribute and corresponding unit of measurement; sort devices in group by configured state; find centroid for map if event is defined by polygon; updated tests
* sort entries in group; code clean-ups
* fixing indentation
* added requirements of new component and platform
* fixed various lint issues
* fixed more lint issues
* introducing demo geo location platform; refactored geo location component and geo rss platform to fit
* removing geo rss events platform; added unit tests for geo location platform and demo platform
* reverting change in debug message for feedreader to avoid confusion with new geo location component
* updated requirements after removing georss platform
* removed unused imports
* fixing a lint issue and a test case
* simplifying component code; moving code into demo platform; fixing tests
* removed grouping from demo platform; small refactorings
* automating the entity id generation (the use of an entity namespace achieves the same thing)
* undoing changes made for the georss platform
* simplified test cases
* small tweaks to test case
* rounding all state attribute values
* fixing lint; removing distance from state attributes
* fixed test
* renamed add_devices to add_entities; tweaked test to gain more control over the timed update in the demo platform
* reusing utcnow variable instead of patched method
* fixed test by avoiding to make assumptions about order of list of entity ids
* adding test for the geo location event class
* Added support for Habitica
Second refactoring
Moved all config to component.
Sensors are autodiscovered.
Signed-off-by: delphi <cpp.create@gmail.com>
* Apply requested changes
Signed-off-by: delphi <cpp.create@gmail.com>
* Made event fire async. Made `sensors` config implicit and opt-out-style.
Signed-off-by: delphi <cpp.create@gmail.com>
* Removed unneeded check and await.
Signed-off-by: delphi <cpp.create@gmail.com>
* Moved into separate component package and added service.yaml
Signed-off-by: delphi <cpp.create@gmail.com>
* Fix coveralls
Signed-off-by: delphi <cpp.create@gmail.com>
* rewrite hangouts to use intents instead of commands
* small fixes
* remove configured_hangouts check and CONFIG_SCHEMA
* Lint
* add import from .config_flow
* Add device_tracker.bluetooth_update service
Will immediately scan for Bluetooth devices outside of the interval timer. Allows for less frequent scanning, with scanning on demand via automation.
* remove excess whitespace per bot comments
* Refactored update_bluetooth to call new function update_bluetooth_once
* Change service name to bluetooth_tracker_update to reflect platform name
* Reformat for line length
* Linting fix, pydoc, first line should end with a period
* Fixed a method call, and removed some more unsused parameters
* Added precipitation type from API
Enables users to see type of precipitation.
Value returned from API is a string in swedish.
* Corrected tox verification errors
Correction of tox findings
* Missed in tox - fixed
* Hound witespace fix
* Updated comment to trigger travis rebuild
Travis tox failed due to problem with tox build process.
Correcting in a comment to trigger retry in travis..
* Try to retrigger travis/tox successful rebuild
* Cleaning
* Cleaning more
* Trafikverket rebuilt for library
Extended pytrafikverket with weather sensor collction
Changed behaviour of sensor component to use pytrafikverket.
Added more sensors.
User need to change config to use new version.
[] Documentation needs to be updated
* Cleaned up based on Martins input
Appreciate the feedback
* Added support for velbus temperature sensors
* Bumped the required version
* updated requirements_all.txt
* Auto review comments fixed
* Updated after comments
* Updated after comments
* Fix travis
* Fix travis
* Replace pbkdf2 with bcrypt
bcrypt isn't inherently better than pbkdf2, but everything "just works"
out of the box.
* the hash verification routine now only computes one hash per call
* a per-user salt is built into the hash as opposed to the current
global salt
* bcrypt.checkpw() is immune to timing attacks regardless of input
* hash strength is a function of real time benchmarks and a
"difficulty" level, meaning we won't have to ever update the iteration
count
* WIP: add hash upgrade mechanism
* WIP: clarify decode issue
* remove stale testing code
* Fix test
* Ensure incorrect legacy passwords fail
* Add better invalid legacy password test
* Lint
* Run tests in async scope
* Inconsistent entity_id when multiple sensors
I am submitting a change to fix a [bug](https://github.com/home-assistant/home-assistant/issues/16204) for when there are several sensors for the same hostname. For example I want to track my IPv4 and IPv6 address. It creates two entities that regularly switch ids based on the order they get initialized.
To fix this I comform to the way other componnents have addressed the issue by adding an optional `name` attribute.
* Line too long
* Removing trailing whitespace
* Allow device registry to optionally store config entries
* Connections and identifiers are now sets with tupels
* Make config entries mandatory
* Fix duplicate keys in test
* Rename device to device_info
* Entity platform should only create device entries if config_entry_id exists
* Fix Soundtouch tests
* Revert soundtouch to use self.device
* Fix baloobs comments
* Correct type in test
* add a component for hangouts
* add a notify component for hangouts
* add an extra message as title
* add support to listen to all conversations hangouts has
* move hangouts to package and add parameter documentation
* update .coveragerc and requirements_all.txt
* makes linter happy again
* bugfix
* add conversations parameter to command words
* Move the resolution of conversation names to conversations in own a function
* typo
* rename group of exclusion form 'id' to 'id or name'
* refactoring and use config_flow
* makes linter happy again
* remove unused imports
* fix not working regex commands
* fix translations
* cleanup
* remove step_init
* remove logging entry
* clean up events
* move constant
* remove unsed import
* add new files to .converagerc
* isort imports
* add hangouts_utils to ignored packages
* upadte doc and format
* fix I/O not in executor jon
* rename SERVICE_UPDATE_USERS_AND_CONVERSATIONS to SERVICE_UPDATE
* move EVENT_HANGOUTS_{CONNECTED,DISCONNECTED} to dispatcher
* add config flow tests
* Update tox.ini
* Added backend support for JavaScript modules in custom panels.
* Fixed test_panel_custom.py
* Delete core.entity_registry
* Update panel_custom.py
* Corrected panel_custom.py with module_url.
* Rebase
* Missed elif
* Add vol.Exclusive module_url
* Correct vol.Exclusive usage
* Test for js module
* Corrected line continuation indentation
* Added webcomponent path to exclusive group
* Corrected line length
* Line break
* Test for conflicting url options
* Self -> hass fix
* Fix self -> hass again
* Use assert_setup_component
* Setup missing
* Correct test
* Fix again
* Fix
* Mising async
* Fix
* test real
* Test real
* Final
* check
* Final check
* safety
* Final commit and check
* Removed unused dependencies
* Test for multiple url options in config
* Adding noaa-tides changes to new branch.
* Fix typo in .coverageac
* Incorporate @MartinHjelmare and @fabaff changes.
* Disable pylint error and add error message for unavailable station.
* Two spaces before inline comments
* Increment py_noaa version to 0.3.0
* Updated requirements.py
* Minor changes
* First draft
* Generate device id
* No obscure registry
* Dont store config_entry_id in device
* Storage
* Small mistake on rebase
* Do storage more like entity registry
* Improve device identification
* Add tests
* Remove deconz device support from PR
* Fix hound comments, voff!
* Fix comments and clean up
* Fix proper indentation
* Fix pydoc issues
* Fix mochad component to not use self.device
* Fix mochad light platform to not use self.device
* Fix TankUtilitySensor to not use self.device
* Fix Soundtouch to not use self.device
* Fix Plex to not use self.device
* Fix Emby to not use self.device
* Fix Heatmiser to not use self.device
* Fix Wemo lights to not use self.device
* Fix Lifx to not use self.device
* Fix Radiotherm to not use self.device
* Fix Juicenet to not use self.device
* Fix Qwikswitch to not use self.device
* Fix Xiaomi miio to not use self.device
* Fix Nest to not use self.device
* Fix Tellduslive to not use self.device
* Fix Knx to not use self.device
* Clean up a small mistake in soundtouch
* Fix comment from Ballob
* Fix bad indentation
* Fix indentatin
* Lint
* Remove unused variable
* Lint
* Remove unit_of_measurement from climate base class.
* Updated google_assistant component and tests to use core temp units.
* Fixes
* Convert Alexa component to use core temp units for climate entities.
* Fix tests.
* Converted prometheus component.
* Remove unit_of_measurement from homekit thermostat tests.
* Small fix.
* Implement X10
* Add X10 after add_device_callback
* Ref device by id not hex and add x10OnOffSwitch name
* X10 services and add sensor device
* Correctly reference X10_HOUSECODE_SCHEMA
* Log adding of X10 devices
* Add X10 All Units Off, All Lights On and All Lights Off devices
* Correct ref to X10 states vs devices
* Add X10 All Units Off, All Lights On and All Lights Off devices
* Correct X10 config
* Debug x10 device additions
* Config x10 from bool to housecode char
* Pass PLM to X10 device create
* Remove PLM to call to add_x10_device
* Unconfuse x10 config and method names
* Correct spelling of x10_all_lights_off_housecode
* Bump insteonplm to 0.10.0 to support X10
* Add host to config options
* Add username and password to config for hub connectivity
* Add username and password to config for hub
* Convert port to int if host is defined
* Add KeypadLinc
* Update config schema to require either port or host
* Solidify Hub and PLM configuration to ensure proper settings
* Update hub schema
* Bump insteonplm version
* Fix pylint and flake issues
* Bump insteonplm to 0.12.1
* Merge insteon_plm and insteon_local to insteon
* Rename insteon_plm to insteon
* Bump insteonplm to 0.12.2
* Flake8 cleanup
* Update .coveragerc for insteon_plm, insteon_local and insteon changes
* Add persistent notification
* Fix reference to insteon_plm
* Fix indentation
* Shorten message and fix grammer
* Add comment to remove in release 0.90
* Hound fix
* Ecovacs Deebot vacuums
* All core features implemented
Getting fan speed and locating the vac are still unsupported until sucks adds support
* Move init queries to the added_to_hass method
* Adding support for subscribing to events from the sucks library
This support does not exist in sucks yet; this commit serves as a sort of TDD approach of what such support COULD look like.
* Add OverloadUT as ecovacs code owner
* Full support for Ecovacs vacuums (Deebot)
* Add requirements
* Linting fixes
* Make API Device ID random on each boot
* Fix unique ID
Never worked before, as it should have been looking for a key, not an attribute
* Fix random string generation to work in Python 3.5 (thanks, Travis!)
* Add new files to .coveragerc
* Code review changes
(Will require a sucks version bump in a coming commit; waiting for it to release)
* Bump sucks to 0.9.1 now that it has released
* Update requirements_all.txt as well
* Bump sucks version to fix lifespan value errors
* Revert to sucks 0.9.1 and include a fix for a bug in that release
Sucks is being slow to release currently, so doing this so we can get a version out the door.
* Switch state_attributes to device_state_attributes
* Fix 'Error setting up platform tplink' error when a scanner fails even if another scanner would succeed
* Try to fix tox errors
* Adjust code based on PR comments
* Handle missing mpd capabilities
It is possible to configure mpd without volume or playlist support.
Gracefully degrade when either of these features appears to be missing.
Resolves: #14459, #15927
* Use longer name for exception
* Only return support flags post-connection
* Small consistency fixes to mpd.py for review.
* Fix packages deletion in check_config script
* The config key for packages is not present if core config validation
failed. We need to do a safe dict deletion using dict.pop.
* Add check_config test for bad core config
* Always load users in auth store before use
* Use namedtuple instead of dict for user meta
* Ignore auth store tokens with invalid created_at
* Add type hints to homeassistant.auth
* Fix mysensors connection task blocking setup
* Schedule the connection task without having the core track the task
to avoid blocking setup.
* Cancel the connection task, if not cancelled already, when
home assistant stops.
* Use done instead of cancelled
* Added error handling for sense API timeouts
* Moved imports in function
* Moved imports to more appropriate function
* Change exception to custom package version
One of the features of the waterfurnace 0.7 is timingout out stuck
connections on the websocket (which tends to happen after 48 - 96
hours of operation). This requires the homeassistant component to
catch and reconnect under these circumstances. This has turned out to
be pretty robust in preventing stuck sockets over the last month.
* Add support for states
* Woof?
* Fixed some errors
* VacuumDevice -> StateVacuumDevice
* VacuumDevice -> StateVacuumDevice
* Added split of start and pause
* Add a sensor for netatmo public data
* A bit of cleanup before submitting pull request
* Add netatmo_public file to .coveragerc, as per pull request template instructions
* Fixes for tox complaining
* make calculations simpler, based on review feedback
* explicitly pass required_data parameter to netatmo API
* remove unnecessary spaces
* remove debug code
* code style fix
* Adding new feature to allow a wait template to run the remainer of the script on timeout
* Styling changes
* Fixing file permissions, adding test for new code
* changed variable name, refactored script to pass information into async_set_timeout
* Changing the default behaviour to continue to run the script after timeout
* add operation mode support for climate.EphEmber
* fix linting errors from py3.5
* remove STATE_ALL_DAY and cleanup some code based on review
* use explicit None return with get
* fix none return
* Add new public transport sensor for RMV (Rhein-Main area).
* Add required module.
* Fix naming problem.
* Add unit test.
* Update dependency version to 0.0.5.
* Add new requirements.
* Fix variable name.
* Fix issues pointed out in review.
* Remove unnecessary code.
* Fix linter error.
* Fix config value validation.
* Replace minutes as state by departure timestamp. (see ##14983)
* More work on the timestamp. (see ##14983)
* Revert timestamp work until #14983 gets merged.
* Simplify product validation.
* Remove redundant code.
* Address code change requests.
* Address more code change requests.
* Address even more code change requests.
* Simplify destination check.
* Fix linter problem.
* Bump dependency version to 0.0.7.
* Name variable more explicit.
* Only query once a minute.
* Update test case.
* Fix config validation.
* Remove unneeded import.
* Fix FlowManager.async_init handler type
It's not a Callable, but typically a key pointing to one in a dict.
* Mark pip_kwargs return type hint as Any-valued dict
install_package takes other than str args too.
* 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
* Refactoring data_entry_flow and config_entry_flow
Move SOURCE_* to config_entries
Change data_entry_flow.FlowManager.async_init() source param default
to None
Change this first step_id as source or init if source is None
_BaseFlowManagerView pass in SOURCE_USER as default source
* First step of data entry flow decided by _async_create_flow() now
* Lint
* Change helpers.config_entry_flow.DiscoveryFlowHandler default step
* Change FlowManager.async_init source param to context dict param
* Fix bt_home_hub_5 device tracker
Updated BT Home Hub 5 device tracker component to get it working again. The old parsing method of the DNS table has been broken for a while causing the component to fail to get connected devices. A new parsing method has been implemened and fixes all previous issues.
* Moved part of code to a published PyPi library
* Fixed Violations
* Fixed bugs in device tracker
* Moved API Specific Code to PyPi Repository
* Updated to fit requested changes, removed test as it is no longer valid and updated requirement_all.txt
* Update to fit style requirements and remove redundant code
* Removed Unnecessary Comment
* 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
* remove velbus fan and light platforms
these platforms should not be there since they can be created with template components based on switch platform
* use latest version of python-velbus which supports auto-discovery of modules
* fix linting errors
* fix linting errors
* fix linting errors
* address review comments from @MartinHjelmare
* update based on automatic feedback
* fix linting errors
* update dependency
* syntax corrections
* fix lint warning
* split out common functionality in VelbusEntity
use sync methods for loading platforms
support unique_ids so that entities are registred in entity registry
* fix linting errors
* fix linting errors
* fix linting errors
* integrate review comments (common functionality in VelbusEntity class)
* rename DOMAIN import to VELBUS_DOMAIN
* revert change created by requirements script
* regen
* Add Tahoma io:VerticalExteriorAwningIOComponent and io:HorizontalAwningIOComponent
* Fix position of horizontal awning cover
* Add timestamps for lock time
* Adjust open-close actions for horizontal awning cover
* Fix stop action for io:RollerShutterGenericIOComponent
* Remove redundant information
* Use get for dict lookup
* Change to newer pip package
The package Adafruit_Python_DHT==1.3.2 was broken and would not install, breaking DHT sensor support in Home assistant. It has since been fixed in Adafruit-DHT==1.3.3.
See: https://github.com/adafruit/Adafruit_Python_DHT/issues/99
* Update requirements_all.txt
New or updated dependencies have been added to `requirements_all.txt` by running `script/gen_requirements_all.py`.
* Comment out Adafruit-DHT
Adafruit_Python_DHT changed name to Adafruit-DHT, which still need pyx support breaking our CI, need to be comment out.
* Update requirements_all.txt
* Fix Min/Max Kelvin color temp attribute for Google
Max Kelvin is actually Min Mireds and vice-versa. K = 1000000 / mireds
* Update test_smart_home.py
* Update test_trait.py
* add enphase envoy component
* Add Enphase Envoy component for energy monitoring
* Fix formatting problems
* Fix formatting errors
* Fix formatting errors
* Fix formatting errors
* Change unit of measurement to W or Wh. Return sensor states as integers
* Fix formatting errors
* Fix formatting errors
* Fix formatting errors
* Move import json to update function
* Fix formatting. Add file to .coveragerc
* Add new component to requirements_all.txt
* Move API call to third party library on PyPi
* Refactor
* Run gen_requirements_all.py
* Minor refactor
* Fix indentation
* Fix indentation
* Fix Min/Max Kelvin color temp attribute for Google
Max Kelvin is actually Min Mireds and vice-versa. K = 1000000 / mireds
* Update test_smart_home.py
* Update test_trait.py
* Vacuum: Added support for STATES
* Added debug logging and corrected state order
* typo
* Fix travis error, STATE = STATE for readability
* status -> state
* Changed to Entity instead of ToogleEntity
* Updated some vacuums
* Revert changes
* Revert Changes
* added SUPPORT_STATE
* Woof?
* Implement on/off if STATE not supported
* Moved new state vaccum to Class StateVacuumDevice
* Error: I should go to bed
* Moved around methods for easier reading
* Added StateVacuumDevice demo vacuum
* Added tests for StateVacuumDevice demo vacuum
* Fix styling errors
* Refactored to BaseVaccum
* Vacuum will now go back to dock
* Class BaseVacuum is for internal use only
* return -> await
* return -> await
* Initial commit for deCONZ switch support
* Fix hound comment
* Fix martins comment; platforms shouldn't depend on another platform
* Fix existing tests
* New tests
* Clean up unnecessary methods
* Bump requirement to v43
* Added device state attributes to light
* exposing internal state and fixed onoff state
* fixed styling
* revert file mode changes
* removed self type hints
* better unit test and changed the way to return attributes
* made wolfie happy
* Added Altitude to opensky
* decided to take all metadata
* Final Tidy
* More formatting
* moving CONF_ALTITUDE to platform
* Moved CONF_ALTITUDE to platform
The OWM returns precipitation forecast values as they are submitted to their network. It can lead to values like `0.0025000000000004 mm` which does not make sense and messes up the display card. This PR rounds the value to 1 decimal place.
* Fixed NDMS for latest firmware.
Now using telnet instead of Web Interface
* Using external library for NDMS interactions
* updated requirements_all
* renamed `mac` to `device` back
* Using generators for name and attributes fetching
* 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
* Change to newer pip package
The package Adafruit_Python_DHT==1.3.2 was broken and would not install, breaking DHT sensor support in Home assistant. It has since been fixed in Adafruit-DHT==1.3.3.
See: https://github.com/adafruit/Adafruit_Python_DHT/issues/99
* Update requirements_all.txt
New or updated dependencies have been added to `requirements_all.txt` by running `script/gen_requirements_all.py`.
* Comment out Adafruit-DHT
Adafruit_Python_DHT changed name to Adafruit-DHT, which still need pyx support breaking our CI, need to be comment out.
* Update requirements_all.txt
* MVG Live sensor: add option to store multiple departures in attributes
* Fix lint error
* mvglive: take into account timeoffset in API call
* Prevent exception if departure list is empty
* Rename state_attributes -> device_state_attributes
* Add Genie Aladdin Connect cover component
* Fix lines being too long
* Fix issues found in review
* remove Unknown state, use None instead
* Fixed requirements_all
* Remember last brightness value and use it on turn_on()
* Pyfnip-0.2 now returns state reliably, no manual changes needed.
* Split too long line of code
* Updated pyfnip library version
* Add tests to command_line for json_attrs
* Add json_attrs to command_line
* Remove whitespace on blank line
* Stick to <80 row length
* Use collections.Mapping, not dict
* Rename *attrs to *attributes
* Remove extraneous + for string concat
* Test multiple keys
* Add test
Makes sure the sensor's attributes don't contain a value for a missing key,
even if we want that key.
* Test that unwanted keys are skipped
* Remove additional log line
* Update tests for log changes
* Fix ordering
* 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
* Add context
* Add context to switch/light services
* Test set_state API
* Lint
* Fix tests
* Do not include context yet in comparison
* Do not pass in loop
* Fix Z-Wave tests
* Add websocket test without user
* Added support for FutureNow light platform and relay/dimmer units
* Pinned specific version for requirement
* Added support for FutureNow light platform and relay/dimmer units
* Added futurenow.py to .coveragerc.
* Minor fixes and enhancements as requested in the code review.
* Minor fixes and enhancements as requested in the code review.
* Use device_config's value directly as it's validated as boolean.
* Simplify state check.
* Fixed brightness update that was broken in previous commit.