Python Scripts
This component allows you to write Python scripts that are exposed as services in Home Assistant. Each Python file created in the <config>/python_scripts/ folder will be exposed as a service. The content is not cached so you can easily develop: edit file, save changes, call service. The scripts are run in a sandboxed environment. The following variables are available in the sandbox:
| Name | Description |
|---|---|
hass |
The Home Assistant object. Access is only allowed to call services, set/remove states and fire events. API reference |
data |
The data passed to the Python Script service call. |
logger |
A logger to allow you to log messages: logger.info(), logger.warning(), logger.error(). API reference |
Writing your first script
- Add to
configuration.yaml:python_script: - Create folder
<config>/python_scripts - Create a file
hello_world.pyin the folder and give it this content:
name = data.get('name', 'world')
logger.info("Hello {}".format(name))
hass.bus.fire(name, { "wow": "from a Python script!" })
- Start Home Assistant
- Call service
python_script/hello_worldwith parameters
{
"name": "you"
}
Calling Services
The following example shows how to call a service from python_script. This script takes two parameters: entity_id (required), rgb_color (optional) and calls light.turn_on service by setting the brightness value to 255.
entity_id = data.get('entity_id')
rgb_color = data.get('rgb_color', [255, 255, 255])
if entity_id is not None:
service_data = {'entity_id': entity_id, 'rgb_color': rgb_color, 'brightness': 255 }
hass.services.call('light', 'turn_on', service_data, False)
The above python_script can be called using the following JSON as an input.
{"entity_id": "light.bedroom", "rgb_color": [255, 0, 0] }
For more examples, visit the Scripts section in our forum.