mirror of
https://github.com/home-assistant/home-assistant.io.git
synced 2025-05-30 06:46:49 +00:00

* 🔥 Removes octopress.js * 🔥 Removes use of root_url var * 🔥 Removes Octopress generator reference from feed * 🔥 Removes delicious support * 🔥 Removes support for Pinboard * 🔥 Removes support for Disqus * 🔥 Removes support for Google Plus * ↩️ Migrate custom after_footer to default template * ↩️ Migrate custom footer to default template * ↩️ Migrate custom header to default template * 🔥 Removes unused template files * 🚀 Places time to read directly in post template * 🚀 Removes unneeded capture from archive_post.html template * 🔥 🚀 Removes unused, but heaving sorting call in component page * 🚀 Merged javascripts into a single file * 🔥 Removes more uses of root_url * 🚀 Removal of unneeded captures from head * 🔥 🚀 Removal of expensive liquid HTML compressor * 🔥 Removes unneeded templates * 🚀 Replaces kramdown with GitHub's CommonMark 🚀 * 💄 Adds Prism code syntax highlighting * ✨ Adds support for redirect in Netlify * ↩️ 🔥 Let Netlify handle all developer doc redirects * ✏️ Fixes typo in redirects file: Netify -> Netlify * 🔥 Removes unused .themes folder * 🔥 Removes unused aside.html template * 🔥 Removes Disqus config leftover * 🔥 Removes rouge highlighter config * 🔥 Removes Octopress 🎉 * 💄 Adjust code block font size and adds soft wraps * 💄 Adds styling for inline code blocks * 💄 Improve styling of note/warning/info boxes + div support * 🔨 Rewrites all note/warning/info boxes
120 lines
3.5 KiB
Markdown
120 lines
3.5 KiB
Markdown
---
|
||
title: "Scripts"
|
||
description: "Instructions on how to setup scripts within Home Assistant."
|
||
logo: home-assistant.png
|
||
ha_category:
|
||
- Automation
|
||
ha_qa_scale: internal
|
||
ha_release: 0.7
|
||
---
|
||
|
||
The `script` integration allows users to specify a sequence of actions to be executed by Home Assistant when turned on. The script integration will create an entity for each script and allow them to be controlled via services.
|
||
|
||
The sequence of actions is specified using the [Home Assistant Script Syntax](/getting-started/scripts/).
|
||
|
||
```yaml
|
||
# Example configuration.yaml entry
|
||
script:
|
||
message_temperature:
|
||
sequence:
|
||
# This is Home Assistant Script Syntax
|
||
- service: notify.notify
|
||
data_template:
|
||
message: Current temperature is {% raw %}{{ states('sensor.temperature') }}{% endraw %}
|
||
```
|
||
|
||
<div class='note'>
|
||
|
||
Script names (e.g., `message_temperature` in the example above) are not allowed to contain capital letters, or dash (minus) characters, i.e. `-`. The preferred way to separate words for better readability is to use underscore (`_`) characters.
|
||
|
||
</div>
|
||
|
||
```yaml
|
||
script:
|
||
# Turns on the bedroom lights and then the living room lights 1 minute later
|
||
wakeup:
|
||
alias: Wake Up
|
||
sequence:
|
||
# This is Home Assistant Script Syntax
|
||
- event: LOGBOOK_ENTRY
|
||
event_data:
|
||
name: Paulus
|
||
message: is waking up
|
||
entity_id: device_tracker.paulus
|
||
domain: light
|
||
- alias: Bedroom lights on
|
||
service: light.turn_on
|
||
data:
|
||
entity_id: group.bedroom
|
||
brightness: 100
|
||
- delay:
|
||
# supports seconds, milliseconds, minutes, hours
|
||
minutes: 1
|
||
- alias: Living room lights on
|
||
service: light.turn_on
|
||
data:
|
||
entity_id: group.living_room
|
||
```
|
||
|
||
### Passing variables to scripts
|
||
|
||
As part of the service, variables can be passed along to a script so they become available within templates in that script.
|
||
|
||
There are two ways to achieve this. One way is using the generic `script.turn_on` service. To pass variables to the script with this service, call it with the desired variables:
|
||
|
||
```yaml
|
||
# Example configuration.yaml entry
|
||
automation:
|
||
trigger:
|
||
platform: state
|
||
entity_id: light.bedroom
|
||
from: 'off'
|
||
to: 'on'
|
||
action:
|
||
service: script.turn_on
|
||
entity_id: script.notify_pushover
|
||
data:
|
||
variables:
|
||
title: 'State change'
|
||
message: 'The light is on!'
|
||
```
|
||
|
||
The other way is calling the script as a service directly. In this case, all service data will be made available as variables. If we apply this approach on the script above, it would look like this:
|
||
|
||
```yaml
|
||
# Example configuration.yaml entry
|
||
automation:
|
||
trigger:
|
||
platform: state
|
||
entity_id: light.bedroom
|
||
from: 'off'
|
||
to: 'on'
|
||
action:
|
||
service: script.notify_pushover
|
||
data:
|
||
title: 'State change'
|
||
message: 'The light is on!'
|
||
```
|
||
|
||
Using the variables in the script requires the use of `data_template`:
|
||
|
||
```yaml
|
||
# Example configuration.yaml entry
|
||
script:
|
||
notify_pushover:
|
||
sequence:
|
||
- condition: state
|
||
entity_id: switch.pushover_notifications
|
||
state: 'on'
|
||
- service: notify.pushover
|
||
data_template:
|
||
title: "{% raw %}{{ title }}{% endraw %}"
|
||
message: "{% raw %}{{ message }}{% endraw %}"
|
||
```
|
||
|
||
### In the Overview
|
||
|
||
Scripts in the Overview panel will be displayed with an **EXECUTE** button if the device has no `delay:` or `wait:` statement, and as a toggle switch if it has either of those.
|
||
|
||
This is to enable you to stop a running script.
|