Franck Nijhof c464056402
Making our website faster, cleaner and prettier (#9853)
* 🔥 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
2019-07-15 22:17:54 +02:00

120 lines
3.5 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
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.