* phue -> aiohue
* Clean up
* Fix config
* Address comments
* Typo
* Fix rebase error
* Mark light as unavailable when bridge is disconnected
* Tests
* Make Throttle work with double delay and async
* Rework update logic
* Don't resolve host to IP
* Clarify comment
* No longer do unnecessary updates
* Add more doc
* Another comment update
* Wrap up tests
* Lint
* Fix tests
* PyLint does not like mix 'n match async and coroutine
* Lint
* Update aiohue to 1.2
* Lint
* Fix await MagicMock
* Add consider_home and source_type to device_tracker.see service
* Use schema instead of manual validation
* Extend schema to validate all keys
* Fix style
* Set battery level to int
* Add view to support backend translation fetching
* Load backend translations from component json
* Translations for season sensor
* Scripts to merge and unpack Lokalise translations
* Fix copy paste error
* Serve post-lokalise translations to frontend
* Linting
* Auto-deploy translations with Travis
* Commit post-lokalise translation files
* Split logic into more helper functions
* Fall back to English for missing keys
* Move local translation copies to `.translations`
* Linting
* Initial tests
* Remove unnecessary file check
* Convert translation helper to async/await
* Convert translation helper tests to async/await
* Use set subtraction to find missing_components
* load_translation_files use component->file mapping
* Remove duplicated resources fetching
Get to take advantage of the slick Python 3.5 dict merging here.
* Switch to live project ID
* MQTT Typing
* Tiny style change
* Fixes
I should've probably really sticked to limiting myself to static typing...
* Small fix 😩
Ok, this seriously shouldn't have happened.
* Make color_name_to_rgb raise
* Add Light Set Color intent
* Move some methods around
* Cleanup
* Prevent 1 more func call
* Make a generic Set intent for light
* Lint
* lint
* Added cv.EntitiesDoamin(domain) validator
* Check if all entities in string or list belong to domain
* Added tests
* Use factory function and entity_ids
* Different error message
* Typo
* Added entity_domain validator for a single entity_id
* Image_processing platform now uses cv.entity_domain for source validation
* 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
* Simplify entity update
* Split entity platform from entity component
* Decouple entity platform from entity component
* Always include unit of measurement again
* Lint
* Fix test
* Entity#unique_id defaults to None
* Initial commit entity registry
* Clean up unique_id property
* Lint
* Add tests to entity component
* Lint
* Restore some unique ids
* Spelling
* Remove use of IP address for unique ID
* Add tests
* Add tests
* Fix tests
* Add some docs
* Add one more test
* Fix new test…
* Implemented event_data_template
* The hound does not like my indentation
* Added passed variables to tests for event and svc template calls
* Moved recursive function to template.py
* Update template.py
* Update template.py
* Cleaned up service.py and fixed unit tests
* Blank lines
* Removed stray logger statement
* Blank lines again
* Fix error when name is non-latin script
When the name is non-latin script (e.g. Japanese), slugify returns empty string and causes failure in a later stage. This commit fixes the issue by using default name.
* Add test
* Deprecate explicit entity_id in template platforms
* Use config validator for deprecation
* Fix copy/paste typos
* Also print the config value
* Add test for config validator
* Assert the module name that logged the message
* Lazy loading of service descriptions
* Fix tests
* Load YAML in executor
* Return a copy of available services to allow mutations
* Remove lint
* Add zha/services.yaml
* Only cache descriptions for known services
* Remove lint
* Remove description loading during service registration
* Remove description parameter from async_register
* Test async_get_all_descriptions
* Remove lint
* Fix typos from multi-edit
* Remove unused arguments
* Remove unused import os
* Remove unused import os, part 2
* Remove unneeded coroutine decorator
* Only use executor for loading files
* Cleanups suggested in review
* Increase test coverage
* Fix races in existing tests
* Export climate metrics to Prometheus.
This adds climate_state and temperature_c metrics for each climate
device.
* Add more climate states to state_as_number
* Add support for logarithm in templates
This adds a 'log' filter that takes the logarithm of the given value,
with an optional base number. The base defaults to 'e' - the natural
logarithm
* Remove usage of log10 in template filter 'log'
* Add logarithm as a global
This makes it possible to write:
'{{ log(4, 2) }}'
* Implement entity and domain exclude/include for Alexa
* Switch to using generate_filter
* Use proper domain for turn on/off calls except for groups where we must use the generic homeassistant.turn_on/off
* travis fixes
* Untangle
* Lint
* Add EntityFilter helper
* Changes in entityfilter after code review
* Convert recorder to use EntityFilter
* Fix flake/lint errors in recorder
* Update entity filter helper to return function
* Update recorder to use updated entity filter
* Better docstrings in entityfilter
* Update entityfilter.py
* Initial proposal for the input_datetime
* Linting
* Further linting, don't define time validation twice
* Make pylint *and* flake8 happy at the same time
* Move todos to the PR to make lint happy
* Actually validate the type of date/time
* First testing
* Linting
* Address code review issues
* Code review: Remove forgotten print()s
* Make set_datetime a coroutine
* Create contains_at_least_one_key_value CV method, use it
* Add timestamp to the attributes
* Test and fix corner case where restore data is bogus
* Add FIXME
* Fix date/time setting
* Fix Validation
* Merge date / time validation, add tests
* Simplify service data validation
* No default for initial state, allow 'unknown' as state
* cleanup
* fix schema
* Add intent component
* Add intent script component
* Add shopping list component
* Convert Snips to use intent component
* Convert Alexa to use intent component
* Lint
* Fix Alexa tests
* Update snips test
* Add intent support to conversation
* Add API to view shopping list contents
* Lint
* Fix demo test
* Lint
* lint
* Remove type from slot schema
* Add dependency to conversation
* Move intent to be a helper
* Fix conversation
* Clean up intent helper
* Fix Alexa
* Snips to use new hass.components
* Allow registering intents with conversation at any point in time
* Shopping list to register sentences
* Add HTTP endpoint to Conversation
* Add async action option to intent_script
* Update API.ai to use intents
* Cleanup Alexa
* Shopping list component to register built-in panel
* Rename shopping list intent to inlude Hass name
Prometheus (https://prometheus.io/) is an open source metric and alerting
system. This adds support for exporting some metrics to Prometheus, using
its Python client library.
* Ignore attribute changes in automation trigger from/to
* Quote names in deprecation warnings
This makes it somewhat easier to read if the suggestion happens to be
named "to".
* Add test with same state, new attribute value
* Refactor sun component for correctness
* Convert datetimes to dates for astral
* Fix tests for updated code
* Fix times now that calcs are fixed
* Move sun functions to helpers
* Fix flake on new file
* Additional tweaks from review
* Update requirements
* Restore states
* feedback
* Remove component move into recorder
* space
* helper
* Address my own comments
* Improve test coverage
* Add test for light restore state
* Migrate mqtt to async
* address paulus comment / convert it complet async
* adress paulus comment / remove future
* Automation triggers should be async
* Fix MQTT async calls
* Show that event helpers are callbacks
* Fix tests
* Lint
* Core cleanup: two stage shutdown
* fix spell
* fix
* add async logger to close
* change aiohttp to use CLOSE
* address paulus comments
* Fix tests
* Add unittest
* Move isdevice validator under helpers.config_validation.
* Check that all persistence files are set and are unique if any is set
by user. This is necessary to avoid file name clashes.
* Check that a set persistence file has an existing and writable
directory.
* Check that a device is either a valid device file, "mqtt", or a valid
domain name or ip address.
* Update scan_interval and interval_seconds max to 1 day vs. 60 seconds
* Format fixes
* Add docstring on unittest.
* Added and implemented new async_track_time_interval helper.
* Format fixes, removed unused import.
* Undid whoops on unsub_polling.
* Updated unit tests for scan_interval.
* Added unit test for track_time_interval.
* Allow other forms of time interval input for scan_interval and interval_seconds
* ecobee_set_fan_min_on_time: fix issue using 'entity_id' field and add service field help text
* climate.ecobee: add 'resume_program' service
* Add default value for resume_all and correct entity_id field name reference
This adds support for the scene component to handle input_select
devices and set their options.
This fixes bug #4673
Signed-off-by: Jan Losinski <losinski@wh2.tu-dresden.de>
* Climate: more consistent units
* Prevent unnecessary conversion in entity component
* int -> round
* Disable Google tests because they connect to the internet
* Remove default conversion rounding F->C
* Add rounding of temp to weather comp
* Fix equality
* Maintain precision when converting temp in entity
* Revert "Disable Google tests because they connect to the internet"
This reverts commit b60485dc19.
* Convert switch to AsnycIO
* Move update entity to service
* use time better for faster handling
* Change to suggestion from paulus
* Use new shedule_update_ha_state
* fix lint
* minimize executor calls
* Add timeout to platform/component
* Revert "Add timeout to platform/component"
This reverts commit 280a311e48.
* Add logging data
* Change log message with paulus comments
* Set executor to 15 and help to reduce flooting async core with udpates
* fix typing
* if it a executor, wait
* address comments from paulus
* add space for style :)
* fix spell
* Update entity_component.py
* Update entity_component.py
This commit adds a new component for communicating with mochad[1] a
socket interface for the CM15A and CM19A USB X10 controllers. This
commit leverages the pymochad library to interface with a mochad socket
either on a local or remote machine. Mochad is added as as a generic
platform because it supports multiple different classes of device,
however in this patch only the switch device implemented as a starting
point. Future patches will include other devices types. (although
that's dependent on someone gaining access to those)
[1] https://sourceforge.net/projects/mochad/
* Adds support for Pioneer AVR interface port number
https://community.home-assistant.io/t/support-for-pioneer-avr/503
telnetlib supports a port number so adding port as
an optional config element with a default of 23 resolves this.
* Adds timeout to Pioneer AVR
timeout in telnetlib defaults to socket._GLOBAL_DEFAULT_TIMEOUT
which is not a value, but rather a bare Object used for comparison.
telnetlib says the following about the timeout optional argument:
"The optional timeout parameter specifies a timeout in seconds
for blocking operations like the connection attempt (if not
specified, the global default timeout setting will be used)."
From the documentation for sockets:
"Sockets are by default always created in blocking mode"
Catching connect and timeout errors, logging to debug
and continuing.
* Catches timeout exceptions, logs and continues.
Instead of globally using StrictUndefined, introduce a filter that
will trigger a render failure on undefined variables.
Use as `{{ value_json.someval | is_defined }}`.
By not successfully rendering unknown objects to an empty string
the caller provided error_value actually gets used.
This allows, for instance, the MQTT sensor to retain its state when an
unexpected or unwanted message (#2733/#3834) is received.
* first version
* First draft component entities
* Change add_entities to callback from coroutine
* Fix bug add async_prepare_reload
* Group draft v1
* group async
* bugfix
* bugfix v2
* fix lint
* fix extract_entity_ids
* fix other things
* move get_component out of executor
* bugfix
* Address minor changes
* lint
* bugfix - should work now
* make group init async only
* change update handling to old stuff
* fix group handling, remove generator from init
* fix lint
* protect loop for spaming with updates
* fix lint
* update test_group
* fix
* update group handling
* fix __init__ async trouble
* move device_tracker to new layout
* lint
* fix group unittest
* Test with coroutine
* fix bug
* now it works 💯
* ups
* first part of suggestion
* add_entities to coroutine
* change group
* convert add async_add_entity to coroutine
* fix unit tests
* fix lint
* fix lint part 2
* fix wrong import delete
* change async_update_tracked_entity_ids to coroutine
* fix
* revert last change
* fix unittest entity id
* fix unittest
* fix unittest
* fix unittest entity_component
* fix group
* fix group_test
* try part 2 to fix test_group
* fix all entity_component
* rename _process_config
* Change Group to init with factory
* fix lint
* fix lint
* fix callback
* Tweak entity component and group
* More fixes
* Final fixes
* No longer needed blocks
* Address @bbangert comments
* Add test for group.stop
* More callbacks for automation
* Cache condition in helpers.Script
The caching is a simple in-memory, per-instance dictionary.
We use __str__ to format cache keys.
This naive implementation has some disadvantages (e.g., we won't be able
to cache two conditions that contain references to
distinct-but-equivalent object instances and we don't have any control
over the size of the condition cache), but for most simple use-cases the
approach should be good enough.
Resolves#3629
* Fix docstring style
* Add async_safe annotation
* More async_run_job
* coroutine -> async_save
* Lint
* Rename async_safe -> callback
* Add tests to core for different job types
* Add one more test with different type of callbacks
* Fix typing signature for callback methods
* Fix callback service executed method
* Fix method signatures for callback
* Template platforms: create_task instead of yield from
* Automation: less yielding, more create_tasking
* Helpers.script: less yielding, more create_tasking
* Deflake logbook test
* Deflake automation reload config test
* MQTT: Use async_add_job and threaded_listener_factory
* Deflake other logbook test
* lint
* Add test for automation trigger service
* MQTT client can be called from within async