* Update attr to property and default state method
* State prop is defined in parent class
* Demo platform fan
* PyDoc
* Copy-pasta artifact
* PyDoc
* Linting
* Raise error if turn_off and turn_on not implemented
* Update demo platform
* Initial unit test commit
* Readability
* Unneeded typing
* Should inherit from fan entity
* Turn off polling
* Initial oscillating flag
* Pass HASS into demo
* Typing
* Invoke set_speed instead of setting directly
* Service update
* Update demo tests
* Forgot to block after service call.
* linting
* Test to make sure not implemented is thrown
* Is On Method test
* Update const to match string
* Update services yaml
* Toggle method
* Toggle service
* Typing
* TYPE O
* Attribute check
* Type-o
* Type-o
* Put typing back
* ToggleEntity
* Linting
* Linting
* Oops
* Stale prints
* Demo support
* Initial code for alexa_local_control.
* Added support for creating a dummy username.
* Move SSDP responses to local variables.
* Added config validation via Voluptuous.
* Modify and remove unnecessary returned emulated bridge values.
* Remove script and scene domains from default exposed domains.
* Replaced Flask with HomeAssistantWSGI.
* Fix lint errors.
* Correcting grammar and spelling in docs and comments.
* Rename alexa_local_control to emulated_hue.
* Rename emulated_hue attributes.
* Fix a bug where something marked not exposed is exposed by default.
* Make sure the UPNP responder thread cleanly stops when HASS stops.
Also fix some config loading and lint errors.
* Fixed unexposed entities still having individual state exposed.
* Started writing tests for emulated_hue.
* Fix being able to set state of non-exposed entity.
* Another test for emulated_hue.
* More tests for emulated_hue.
Also slightly simplified emulated_hue's PUT handler.
* Fix bad test, sorry :/
* Third time's the charm.
* Fix lint and value validation tests.
* Rename emulated_hue bridge name.
* Remove license and documentation from header.
* Combine two if statements.
* Style changes.
* Fixed various issues and added some constants
* First draft for cover component
* Efficiency from @martinhjelmare
* migrate demo
* migrate demo test
* migrate command_line rollershutter
* migrate command_line test
* migrate rpi_gpio garage_door
* make some abstract methods optional
* migrate homematic
* migrate scsgate
* migrate rfxtrx and test
* migrate zwave
* migrate wink
* migrate mqtt rollershutter and test
* requirements
* coverage
* Update mqtt with garage door
* Naming and cleanup
* update test_demo.py
* update demo and core
* Add deprecated warning to rollershutter and garage_door
* Naming again
* Update
* String constants
* Make sure set_position works properly in demo too
* Make sure position is not set if not available.
* Naming, and is_closed
* Update zwave.py
* requirements
* Update test_rfxtrx.py
* fix mqtt
* requirements
* fix wink version
* Fixed demo test
* naming
* Add action and callback support to html5 (#2855).
Remove registrations from the callback view since we always get the latest anyway.
We dont put an audience in the claims so we will never hit this error.
Bring tests back up to where they were before callbacks.
Only import jwt where necessary
Fix bracket spacing errors
Fix JWT decode check for loop
Remove stale comment.
Add tests for the callback system.
Shorten line
Disable pylint broad-except and change e to jwt_decode_error.
Verify expiration
Remove duplicate jwt.exceptions.DecodeError
Catch no keys matched and return False
* Switch to using registrations for callbackview instead of json_path
* Only check for URL and such if the data object actually exists
* raise instead of return
* cleanup decode_jwt
* Clean up JWT errors
* Correctly set status_code to 401
* Improve JWT by adding target to claims and attempting to check the given target for a decode match first, as well as pass the target through in the event payload.
* Add tag support and fix formatting issues
* Pass through any keys that dont apply to the payload into the notification.data dictionary
* Remove stale print
* Pass back the data dictionary if it exists
* Actually put the default url even if a notify payload dictionary doesnt exist
* pylint, flake8
* Add subscription validation
* Add validation for the callback event payload and use constants where possible
* Use HTTP_UNAUTHORIZED instead of 401
* Change callback dictionary to dict instead of cv.match_all
* Fix up tests and make subscription required
* Whoops, that test was supposed to fail
* Use the result of CALLBACK_EVENT_PAYLOAD_SCHEMA as event_payload
* Add a test for html5 callback decode_jwt where the device has been renamed since notification has been sent.
* Remove the loop through logic, assume that target is always in JWT
* Always return something instead of possibly None.
* Update frontend
* Add a group notify platform which allows sending a single notification to multiple platforms.
* Correctly sort group.py
* Clean up the payload logic
* Make name and entity id required in the schema
* Deep update the dictionary to fix a bug where data wasnt merging.
* Add notify.group tests.
* Improve docstrings.
* Change entities to services and entity_id to service
* Make service a slug without a default value
* Update tests for entities->services, entity_id->service
* vol.Any(cv.slug) -> cv.slug