* Extend template entities with a script section
This allows making a trigger entity that triggers a few times a day,
and allows collecting data from a service resopnse which can be
fed into a template entity.
The current alternatives are to publish and subscribe to events or to
store data in input entities.
* Make variables set in actions accessible to templates
* Format code
---------
Co-authored-by: Erik <erik@montnemery.com>
* feat: make this variable available in template entities
This makes the variable `this` available in template entities.
It will simplify the use of self-referencing template entities.
Because, without this, we have to repeat the entity id every time.
If we can solve this without explicitly spelling the entity id,
code can be re-used much better.
As a side-effect, this will allow to use `variables`-like patterns,
where attributes can be used as variables to calculate subsequent attributes or state.
Example:
```yaml
template:
sensor:
- name: test
state: "{{ this.attributes.test }}"
# not: "{{ state_attr('sensor.test', 'test' }}"
attributes:
test: "{{ now() }}"
```
* expose entity_id instead of this
* add test
* Refactor to expose this variable
* Tweak repr dunder
Co-authored-by: Erik <erik@montnemery.com>
* Convert persistent notification tests to async
* Create/dismiss persistent notifications in exposed functions, not service calls
* Fix notify persistent_notification
* Remove setting up persistent_notification
* Drop more setups
* Empty methods
* Undeprecate sync methods because too big task
* Fix setup clearing notifications
* Fix a bunch of tests
* Fix more tests
* Uno mas
* Test persistent notification events
* Clean up stale comment
Co-authored-by: Martin Hjelmare <marhje52@gmail.com>
* Make sure groups are initialized before template sensors
This way users may use the `expand` function in templates to expand
groups and have HA listen for changes to group members.
Fixes#35872
* Patch async_setup_platform instead of async_setup
* Cleanup
* Use an event to avoid sleep
* Update tests/components/template/test_sensor.py
Co-authored-by: J. Nick Koston <nick@koston.org>
Co-authored-by: J. Nick Koston <nick@koston.org>
Most of the the template platforms would check for
extract_entities failing to extract entities and avoid
setting up a state change listner for MATCH_ALL after
extract_entities had warned that it could not extract
the entities and updates would need to be done manually.
This protection has been extended to all template platforms.
Alter the behavior of extract_entities to return the
successfully extracted entities if one or more templates
fail extraction instead of returning MATCH_ALL
* Added availability_template to Template Cover platform
* Added availability_template to Template Binary Sensor platform
* Added availability_template to Template Fan platform
* Added availability_template to Template Light platform
* Added availability_template to Template Sensor platform
* Added availability_template to Template Switch platform
* Added availability_template to Template Vacuum platform
* Added availability_template to Template Lock platform
* Added to test for invalid values in availability_template
* Black and Lint fix
* black formatting
* Added to test for invalid values in availability_template
* black
* Added to test for invalid values in availability_template
* Added to test for invalid values in availability_template
* simplified exception handler
* Fixed Entity discovery big and coverage
* Added to test for invalid values in availability_template
* flake8
* fixed component ID in test
* Added to test for invalid values in availability_template
* Added to test for invalid values in availability_template
* Made availability_template redering erorr more concise
* Cleaned template setup
* I'll remember to run black every time one of these days...
* Refactored Template initialisation
* Refactored Template initialisation
* Updated AVAILABILITY_TEMPLATE Rendering error
* Updated AVAILABILITY_TEMPLATE Rendering error
* Updated AVAILABILITY_TEMPLATE Rendering error
* Updated AVAILABILITY_TEMPLATE Rendering error
* Updated AVAILABILITY_TEMPLATE Rendering error
* Updated AVAILABILITY_TEMPLATE Rendering error
* Updated AVAILABILITY_TEMPLATE Rendering error
* Updated AVAILABILITY_TEMPLATE Rendering error
* Moved const to package Const.py
* Moved const to package Const.py
* Moved const to package Const.py
* Moved const to package Const.py
* Moved const to package Const.py
* Moved const to package Const.py
* Moved const to package Const.py
* Moved const to package Const.py
* Fix import order (pylint)
* Fix import order (pylint)
* Fix import order (pylint)
* Fix import order (pylint)
* Fix import order (pylint)
* Fix import order (pylint)
* Fix import order (pylint)
* Fixed linting issues
* Moved availability_template rendering to common loop
* Moved availability_template rendering to common loop
* Moved availability_template rendering to common loop
* Moved availability_template rendering to common loop
* Removed 'Magic' string
* Removed 'Magic' string and removed duplicate code
* Removed 'Magic' string
* Removed 'Magic' string
* Brought contant into line
* Refactored availability_tempalte rendering to common loop
* Removed 'Magic' string
* Cleaned up const and compare lowercase result to 'true'
* Cleaned up const and compare lowercase result to 'true'
* Cleaned up const and compare lowercase result to 'true'
* Cleaned up const and compare lowercase result to 'true'
* Cleaned up const and compare lowercase result to 'true'
* Cleaned up const and compare lowercase result to 'true'
* Cleaned up const and compare lowercase result to 'true'
* reverted _available back to boolean
* reverted _available back to boolean
* reverted _available back to boolean
* reverted _available back to boolean
* reverted _available back to boolean
* reverted _available back to boolean
* reverted _available back to boolean
* Fixed tests (magic values and state checks)
* Fixed tests (magic values and state checks)
* Fixed tests (async, magic values and state checks)
* Fixed tests (async, magic values and state checks)
* Fixed tests (async, magic values and state checks)
* Fixed tests (async, magic values and state checks)
* Fixed tests (async, magic values and state checks)
* Removed duplicate
* Clean up and remove debug
* Reverted Dev Container Change
* Added availability_template to Template Sensor platform
* Added to test for invalid values in availability_template
* Updated AVAILABILITY_TEMPLATE Rendering error
* Moved const to package Const.py
* Fix import order (pylint)
* Moved availability_template rendering to common loop
* Removed 'Magic' string
* Cleaned up const and compare lowercase result to 'true'
* Device is unavailbale if value template render fails
* Converted test ot Async and fixed states
* Comverted back to using boolean for _availability
* Fixed state check in test
* updated sensor and test files
* Formatting fixes
* Updated attribute template code
* Black formatting
* Code improvements based on feedback on binary_sensor pull request
* Updated tests
* Remove duplicated code and fix tests
* Black formatting on tests
* Remove link from docstring
* Moved default to schema
* Formatting fix and change to use dict[key] to retrieve attribute_templates