mirror of
https://github.com/home-assistant/home-assistant.io.git
synced 2025-07-22 08:46:51 +00:00
Merge branch 'current' into rc
This commit is contained in:
commit
e8535feb9d
@ -29,7 +29,7 @@ GEM
|
||||
ffi (1.14.2-x64-mingw32)
|
||||
forwardable-extended (2.6.0)
|
||||
http_parser.rb (0.6.0)
|
||||
i18n (1.8.7)
|
||||
i18n (1.8.8)
|
||||
concurrent-ruby (~> 1.0)
|
||||
jekyll (4.2.0)
|
||||
addressable (~> 2.4)
|
||||
@ -92,7 +92,7 @@ GEM
|
||||
ffi (~> 1.0)
|
||||
rexml (3.2.4)
|
||||
rouge (3.26.0)
|
||||
ruby-enum (0.8.0)
|
||||
ruby-enum (0.9.0)
|
||||
i18n
|
||||
ruby2_keywords (0.0.4)
|
||||
safe_yaml (1.0.5)
|
||||
|
@ -24,7 +24,7 @@ automation:
|
||||
- alias: Enable First Morning Trigger
|
||||
trigger:
|
||||
- platform: time
|
||||
at: '05:00:00'
|
||||
at: "05:00:00"
|
||||
action:
|
||||
service: homeassistant.turn_on
|
||||
entity_id: input_boolean.trigger_first_morning
|
||||
@ -47,12 +47,12 @@ automation:
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: binary_sensor.livingroom_motion
|
||||
to: 'on'
|
||||
to: "on"
|
||||
# only complete the automation if we're still waiting for the first motion
|
||||
condition:
|
||||
condition: state
|
||||
entity_id: input_boolean.trigger_first_morning
|
||||
state: 'on'
|
||||
state: "on"
|
||||
|
||||
action:
|
||||
# turn off the "waiting" boolean regardless of whether lights will turn on
|
||||
|
@ -13,42 +13,42 @@ For flashing regular lights in case an alarm is triggered.
|
||||
# AlmSnd1 - switch for a buzzer
|
||||
|
||||
automation:
|
||||
- alias: 'Alarm_PIR_Room1'
|
||||
- alias: "Alarm_PIR_Room1"
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: binary_sensor.PIR1
|
||||
to: 'on'
|
||||
to: "on"
|
||||
condition:
|
||||
- condition: state
|
||||
entity_id: switch.AlmAct1
|
||||
state: 'on'
|
||||
state: "on"
|
||||
- condition: state
|
||||
entity_id: script.alarm_room1
|
||||
state: 'off'
|
||||
state: "off"
|
||||
action:
|
||||
# start alarm on movement if alarm activated
|
||||
# and the alarm is not triggered
|
||||
service: script.turn_on
|
||||
entity_id: script.alarm_room1
|
||||
|
||||
- alias: 'flash_room1_start'
|
||||
- alias: "flash_room1_start"
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: switch.AlmSnd1
|
||||
to: 'on'
|
||||
to: "on"
|
||||
action:
|
||||
service: script.turn_on
|
||||
entity_id: script.flash_room1
|
||||
|
||||
- alias: 'flash_room1_stop'
|
||||
- alias: "flash_room1_stop"
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: switch.REL1
|
||||
to: 'off'
|
||||
to: "off"
|
||||
condition:
|
||||
condition: state
|
||||
entity_id: switch.AlmSnd1
|
||||
state: 'off'
|
||||
state: "off"
|
||||
action:
|
||||
service: script.turn_off
|
||||
entity_id: script.flash_room1
|
||||
@ -68,7 +68,7 @@ script:
|
||||
- alias: email_Room1
|
||||
service: notify.email
|
||||
data:
|
||||
message: 'Movement alarm in Room1'
|
||||
message: "Movement alarm in Room1"
|
||||
- delay:
|
||||
# time interval for alarm sound and light flashing
|
||||
seconds: 60
|
||||
|
@ -10,18 +10,18 @@ Turn on a light in the living room when it starts raining, someone is home, and
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
- alias: 'Rainy Day'
|
||||
- alias: "Rainy Day"
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: sensor.precip_intensity
|
||||
to: 'rain'
|
||||
to: "rain"
|
||||
condition:
|
||||
- condition: state
|
||||
entity_id: all
|
||||
state: 'home'
|
||||
state: "home"
|
||||
- condition: time
|
||||
after: '14:00'
|
||||
before: '23:00'
|
||||
after: "14:00"
|
||||
before: "23:00"
|
||||
action:
|
||||
service: light.turn_on
|
||||
entity_id: light.couch_lamp
|
||||
@ -30,15 +30,15 @@ automation:
|
||||
And then of course turn off the lamp when it stops raining but only if it's within an hour before sunset.
|
||||
|
||||
```yaml
|
||||
- alias: 'Rain is over'
|
||||
- alias: "Rain is over"
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: sensor.precip_intensity
|
||||
to: 'None'
|
||||
to: "None"
|
||||
condition:
|
||||
- condition: sun
|
||||
after: 'sunset'
|
||||
after_offset: '-01:00:00'
|
||||
after: "sunset"
|
||||
after_offset: "-01:00:00"
|
||||
action:
|
||||
service: light.turn_off
|
||||
entity_id: light.couch_lamp
|
||||
|
@ -44,24 +44,24 @@ Send notifications through [PushBullet](/integrations/pushbullet) when the sun s
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
- alias: 'Send notification when sun rises'
|
||||
- alias: "Send notification when sun rises"
|
||||
trigger:
|
||||
platform: sun
|
||||
event: sunrise
|
||||
offset: '+00:00:00'
|
||||
offset: "+00:00:00"
|
||||
action:
|
||||
service: notify.pushbullet
|
||||
data:
|
||||
message: 'The sun is up.'
|
||||
- alias: 'Send notification when sun sets'
|
||||
message: "The sun is up."
|
||||
- alias: "Send notification when sun sets"
|
||||
trigger:
|
||||
platform: sun
|
||||
event: sunset
|
||||
offset: '+00:00:00'
|
||||
offset: "+00:00:00"
|
||||
action:
|
||||
service: notify.pushbullet
|
||||
data:
|
||||
message: 'The sun is down.'
|
||||
message: "The sun is down."
|
||||
```
|
||||
|
||||
#### Automations for lights and blinds based on solar elevation
|
||||
@ -69,7 +69,7 @@ automation:
|
||||
Solar elevation automations can cope with offsets from sunset / sunrise as the seasons change better than using a time based offsets.
|
||||
|
||||
```yaml
|
||||
- alias: 'Turn a few lights on when the sun gets dim'
|
||||
- alias: "Turn a few lights on when the sun gets dim"
|
||||
trigger:
|
||||
platform: numeric_state
|
||||
entity_id: sun.sun
|
||||
@ -79,7 +79,7 @@ Solar elevation automations can cope with offsets from sunset / sunrise as the s
|
||||
service: scene.turn_on
|
||||
entity_id: scene.background_lights
|
||||
|
||||
- alias: 'Turn more lights on as the sun gets dimmer'
|
||||
- alias: "Turn more lights on as the sun gets dimmer"
|
||||
trigger:
|
||||
platform: numeric_state
|
||||
entity_id: sun.sun
|
||||
@ -89,7 +89,7 @@ Solar elevation automations can cope with offsets from sunset / sunrise as the s
|
||||
service: scene.turn_on
|
||||
entity_id: scene.more_lights
|
||||
|
||||
- alias: 'Close blind at dusk'
|
||||
- alias: "Close blind at dusk"
|
||||
trigger:
|
||||
platform: numeric_state
|
||||
entity_id: sun.sun
|
||||
|
@ -23,10 +23,10 @@ automation:
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: device_tracker.device_name_here
|
||||
from: 'not_home'
|
||||
to: 'home'
|
||||
from: "not_home"
|
||||
to: "home"
|
||||
action:
|
||||
service: notify.Telegram
|
||||
data:
|
||||
message: 'Person is now home'
|
||||
message: "Person is now home"
|
||||
```
|
||||
|
@ -17,14 +17,14 @@ input_boolean:
|
||||
|
||||
automation:
|
||||
# Changes Hue light every two minutes to random color if input boolean is set to on
|
||||
- alias: 'Set LivingColors to random color'
|
||||
- alias: "Set LivingColors to random color"
|
||||
trigger:
|
||||
platform: time_pattern
|
||||
minutes: '/2'
|
||||
minutes: "/2"
|
||||
condition:
|
||||
condition: state
|
||||
entity_id: input_boolean.loop_livingcolors
|
||||
state: 'on'
|
||||
state: "on"
|
||||
action:
|
||||
service: light.turn_on
|
||||
entity_id: light.woonkamer_livingcolors
|
||||
|
@ -13,8 +13,8 @@ For the controller this was written for scene ID 13 was sent when the up button
|
||||
```yaml
|
||||
automation:
|
||||
|
||||
- alias: 'Make the lights go bright'
|
||||
initial_state: 'on'
|
||||
- alias: "Make the lights go bright"
|
||||
initial_state: "on"
|
||||
trigger:
|
||||
- platform: event
|
||||
event_type: zwave.scene_activated
|
||||
@ -29,8 +29,8 @@ automation:
|
||||
direction: up
|
||||
light: light.YOUR_LIGHT
|
||||
|
||||
- alias: 'Make the lights go dim'
|
||||
initial_state: 'on'
|
||||
- alias: "Make the lights go dim"
|
||||
initial_state: "on"
|
||||
trigger:
|
||||
- platform: event
|
||||
event_type: zwave.scene_activated
|
||||
@ -45,8 +45,8 @@ automation:
|
||||
direction: down
|
||||
light: light.YOUR_LIGHT
|
||||
|
||||
- alias: 'Stop the light just there'
|
||||
initial_state: 'on'
|
||||
- alias: "Stop the light just there"
|
||||
initial_state: "on"
|
||||
trigger:
|
||||
- platform: event
|
||||
event_type: zwave.scene_activated
|
||||
@ -73,28 +73,28 @@ To allow flexibility all four variables are controlled by [Input Number](/integr
|
||||
```yaml
|
||||
input_number:
|
||||
light_step:
|
||||
name: 'Step the lights this much'
|
||||
name: "Step the lights this much"
|
||||
initial: 20
|
||||
min: 1
|
||||
max: 64
|
||||
step: 1
|
||||
|
||||
light_minimum:
|
||||
name: 'No dimmer than this'
|
||||
name: "No dimmer than this"
|
||||
initial: 5
|
||||
min: 1
|
||||
max: 255
|
||||
step: 1
|
||||
|
||||
light_maximum:
|
||||
name: 'No brighter than this'
|
||||
name: "No brighter than this"
|
||||
initial: 255
|
||||
min: 50
|
||||
max: 255
|
||||
step: 1
|
||||
|
||||
light_delay_ms:
|
||||
name: 'Step the lights this often (ms)'
|
||||
name: "Step the lights this often (ms)"
|
||||
initial: 500
|
||||
min: 100
|
||||
max: 5000
|
||||
|
@ -45,12 +45,12 @@ automation:
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: media_player.htpc
|
||||
from: 'playing'
|
||||
to: 'idle'
|
||||
from: "playing"
|
||||
to: "idle"
|
||||
condition:
|
||||
- condition: state
|
||||
entity_id: sun.sun
|
||||
state: 'below_horizon'
|
||||
state: "below_horizon"
|
||||
action:
|
||||
service: scene.turn_on
|
||||
entity_id: scene.livingroom_normal
|
||||
@ -59,12 +59,12 @@ automation:
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: media_player.htpc
|
||||
to: 'playing'
|
||||
from: 'idle'
|
||||
to: "playing"
|
||||
from: "idle"
|
||||
condition:
|
||||
- condition: state
|
||||
entity_id: sun.sun
|
||||
state: 'below_horizon'
|
||||
state: "below_horizon"
|
||||
action:
|
||||
service: scene.turn_on
|
||||
entity_id: scene.livingroom_dim
|
||||
|
@ -19,13 +19,13 @@ switch:
|
||||
switches:
|
||||
#Switch for Foscam Motion Detection
|
||||
foscam_motion:
|
||||
command_on: 'curl -k --tls-max 1.2 "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=1&usr=admin&pwd=password"'
|
||||
command_on: "curl -k --tls-max 1.2 "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=1&usr=admin&pwd=password""
|
||||
command_off: 'curl -k --tls-max 1.2 "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=0&usr=admin&pwd=password"'
|
||||
command_state: 'curl -k --silent --tls-max 1.2 "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=getMotionDetectConfig&usr=admin&pwd=password" | grep "isEnable" | cut -b 15'
|
||||
value_template: '{% raw %}{{ value == "1" }}{% endraw %}'
|
||||
```
|
||||
|
||||
The service `shell_command.foscam_turn_off` sets the camera to point down and away to indicate it is not recording, and `shell_command.foscam_turn_on` sets the camera to point where I'd like to record. h of these services require preset points to be added to your camera. See source above for additional information.
|
||||
The service `shell_command.foscam_turn_off` sets the camera to point down and away to indicate it is not recording, and `shell_command.foscam_turn_on` sets the camera to point where I'd like to record. Each of these services require preset points to be added to your camera. See source above for additional information.
|
||||
|
||||
```yaml
|
||||
shell_command:
|
||||
@ -64,14 +64,14 @@ automation:
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: group.family
|
||||
from: 'home'
|
||||
from: "home"
|
||||
action:
|
||||
service: script.foscam_on
|
||||
- alias: Set Foscam to Home Mode when I arrive Home
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: group.family
|
||||
to: 'home'
|
||||
to: "home"
|
||||
action:
|
||||
service: script.foscam_off
|
||||
```
|
||||
|
@ -50,7 +50,7 @@ automation:
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: device_tracker.me
|
||||
to: 'home'
|
||||
to: "home"
|
||||
action:
|
||||
service: script.notify_mqtt
|
||||
data:
|
||||
|
@ -19,12 +19,12 @@ automation:
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: binary_sensor.updater
|
||||
from: 'off'
|
||||
to: 'on'
|
||||
from: "off"
|
||||
to: "on"
|
||||
action:
|
||||
- service: notify.jabber
|
||||
data:
|
||||
message: 'There is a new Home Assistant release available.'
|
||||
message: "There is a new Home Assistant release available."
|
||||
```
|
||||
|
||||
You can use [templates](/topics/templating/) to include the release number of Home Assistant if you prefer. The following example sends a notification via [Pushbullet](/integrations/pushbullet) with the Home Assistant version in the message.
|
||||
@ -32,7 +32,7 @@ You can use [templates](/topics/templating/) to include the release number of Ho
|
||||
```yaml
|
||||
notify:
|
||||
- platform: pushbullet
|
||||
api_key: 'YOUR_KEY_HERE'
|
||||
api_key: "YOUR_KEY_HERE"
|
||||
name: pushbullet
|
||||
|
||||
automation:
|
||||
@ -40,13 +40,13 @@ automation:
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: binary_sensor.updater
|
||||
from: 'off'
|
||||
to: 'on'
|
||||
from: "off"
|
||||
to: "on"
|
||||
action:
|
||||
- service: notify.pushbullet
|
||||
data:
|
||||
title: 'New Home Assistant Release'
|
||||
target: 'YOUR_TARGET_HERE' #See Pushbullet integration for usage
|
||||
title: "New Home Assistant Release"
|
||||
target: "YOUR_TARGET_HERE" #See Pushbullet integration for usage
|
||||
message: "Home Assistant {% raw %} {{ state_attr('binary_sensor.updater', 'newest_version') }} {% endraw %} is now available."
|
||||
```
|
||||
|
||||
|
@ -160,5 +160,5 @@ automation:
|
||||
{% else %}{% endraw %}
|
||||
none{% raw %}
|
||||
{% endif %}{% endraw %}
|
||||
media_content_type: 'music'
|
||||
media_content_type: "music"
|
||||
```
|
||||
|
@ -51,7 +51,7 @@ script:
|
||||
minutes: 15
|
||||
- service: notify.pushbullet
|
||||
data:
|
||||
message: 'WeMo not found, restarting HA'
|
||||
message: "WeMo not found, restarting HA"
|
||||
- service: switch.turn_on
|
||||
data:
|
||||
entity_id: switch.killhass
|
||||
@ -61,32 +61,32 @@ automation:
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: device_tracker.wemo
|
||||
from: 'not_home'
|
||||
to: 'home'
|
||||
from: "not_home"
|
||||
to: "home"
|
||||
condition:
|
||||
- condition: template
|
||||
value_template: {% raw %}'{% if states.switch.wemo %}false{% else %}true{% endif %}'{% endraw %}
|
||||
- condition: state
|
||||
entity_id: script.restarthawemo
|
||||
state: 'off'
|
||||
state: "off"
|
||||
action:
|
||||
service: homeassistant.turn_on
|
||||
entity_id: script.restarthawemo
|
||||
- alias: 'Stop HA'
|
||||
- alias: "Stop HA"
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: switch.KillHass
|
||||
to: 'on'
|
||||
to: "on"
|
||||
action:
|
||||
service: homeassistant.stop
|
||||
- alias: 'Stop restarting HA is WeMo is found'
|
||||
- alias: "Stop restarting HA is WeMo is found"
|
||||
trigger:
|
||||
platform: template
|
||||
value_template: {% raw %}'{% if states.switch.wemo %}true{% else %}false{% endif %}'{% endraw %}
|
||||
condition:
|
||||
condition: state
|
||||
entity_id: script.restarthawemo
|
||||
state: 'on'
|
||||
state: "on"
|
||||
action:
|
||||
service: homeassistant.turn_off
|
||||
entity_id: script.restarthawemo
|
||||
|
@ -24,9 +24,9 @@ automation:
|
||||
- alias: Send message at a given time
|
||||
trigger:
|
||||
platform: time
|
||||
at: '12:15:00'
|
||||
at: "12:15:00"
|
||||
action:
|
||||
service: notify.jabber
|
||||
data:
|
||||
message: 'Time for lunch'
|
||||
message: "Time for lunch"
|
||||
```
|
||||
|
@ -36,7 +36,7 @@ script:
|
||||
We call this now with:
|
||||
```yaml
|
||||
automation:
|
||||
- alias: 'test'
|
||||
- alias: "test"
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: input_boolean.mytest
|
||||
@ -45,8 +45,8 @@ automation:
|
||||
data:
|
||||
sonos_entity: media_player.office
|
||||
volume: 0.5
|
||||
message: 'Your husband coming home!'
|
||||
delay: '00:00:05'
|
||||
message: "Your husband coming home!"
|
||||
delay: "00:00:05"
|
||||
```
|
||||
Note that this example uses the `voicerss` text-to-speech platform. There are many platforms that can be used. The one installed by default with Home Assistant is Google TTS. This appears in your `configuration.yaml` file as:
|
||||
|
||||
|
@ -20,7 +20,7 @@ sensor:
|
||||
sensors:
|
||||
battery_iphone:
|
||||
friendly_name: iPhone Battery
|
||||
unit_of_measurement: '%'
|
||||
unit_of_measurement: "%"
|
||||
value_template: >-
|
||||
{%- if state_attr('device_tracker.iphone', 'battery') %}
|
||||
{{ state_attr('device_tracker.iphone', 'battery')|round }}
|
||||
@ -44,7 +44,7 @@ sensor:
|
||||
sensors:
|
||||
battery_phone:
|
||||
friendly_name: AndroidPhone Battery
|
||||
unit_of_measurement: '%'
|
||||
unit_of_measurement: "%"
|
||||
value_template: >-
|
||||
{%- if state_attr('device_tracker.xxxxx', 'battery_level') %}
|
||||
{{ state_attr('device_tracker.xxxxx', 'battery_level')|round }}
|
||||
@ -71,7 +71,7 @@ sensor:
|
||||
state_topic: "owntracks/username/deviceid"
|
||||
name: "Battery Tablet"
|
||||
unit_of_measurement: "%"
|
||||
value_template: '{{ value_json.batt }}'
|
||||
value_template: "{{ value_json.batt }}"
|
||||
device_class: battery
|
||||
```
|
||||
|
||||
@ -90,7 +90,7 @@ sensor:
|
||||
sensors:
|
||||
your_battery_sensor_name:
|
||||
value_template: "{{ state_attr('device_tracker.deviceid', 'battery_level') }}"
|
||||
unit_of_measurement: '%'
|
||||
unit_of_measurement: "%"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
@ -14,7 +14,7 @@ automation:
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: sensor.motion_sensor
|
||||
to: 'on'
|
||||
to: "on"
|
||||
action:
|
||||
service: light.turn_on
|
||||
entity_id: light.kitchen_light
|
||||
@ -23,7 +23,7 @@ automation:
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: sensor.motion_sensor
|
||||
to: 'off'
|
||||
to: "off"
|
||||
for:
|
||||
minutes: 10
|
||||
action:
|
||||
@ -39,7 +39,7 @@ automation:
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: sensor.motion_sensor, binary_sensor.front_door, binary_sensor.doorbell
|
||||
to: 'on'
|
||||
to: "on"
|
||||
action:
|
||||
- service: light.turn_on
|
||||
data:
|
||||
@ -65,7 +65,7 @@ automation:
|
||||
|
||||
timer:
|
||||
hallway:
|
||||
duration: '00:10:00'
|
||||
duration: "00:10:00"
|
||||
```
|
||||
|
||||
You can also restrict lights from turning on based on time of day and implement transitions for fading lights on and off.
|
||||
@ -75,11 +75,11 @@ You can also restrict lights from turning on based on time of day and implement
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: binary_sensor.ecolink_pir_motion_sensor_sensor
|
||||
to: 'on'
|
||||
to: "on"
|
||||
condition:
|
||||
condition: time
|
||||
after: '07:30'
|
||||
before: '23:30'
|
||||
after: "07:30"
|
||||
before: "23:30"
|
||||
action:
|
||||
service: homeassistant.turn_on
|
||||
entity_id: group.office_lights
|
||||
@ -91,7 +91,7 @@ You can also restrict lights from turning on based on time of day and implement
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: binary_sensor.ecolink_pir_motion_sensor_sensor
|
||||
to: 'off'
|
||||
to: "off"
|
||||
for:
|
||||
minutes: 15
|
||||
action:
|
||||
|
@ -96,7 +96,7 @@ homeassistant:
|
||||
- type: totp
|
||||
name: Authenticator app
|
||||
- type: notify
|
||||
message: 'I almost forget, to get into my clubhouse, you need to say {}'
|
||||
message: "I almost forget, to get into my clubhouse, you need to say {}"
|
||||
```
|
||||
|
||||
After restarting Home Assistant, go to your [profile page](/docs/authentication/#your-account-profile) and there should be a "Multi-factor Authentication Modules" section. Click _Enable_ on the _Notify One-Time Password_ option.
|
||||
|
@ -34,32 +34,35 @@ automation 2:
|
||||
# Actions are scripts so can also be a list of actions
|
||||
- service: "{{ notification_service }}"
|
||||
data:
|
||||
message: Beautiful sunset!
|
||||
message: "Beautiful sunset!"
|
||||
- delay: 0:35
|
||||
- service: notify.notify
|
||||
data:
|
||||
message: Oh wow you really missed something great.
|
||||
message: "Oh wow you really missed something great."
|
||||
```
|
||||
|
||||
Conditions can also be part of an action. You can combine multiple service calls and conditions in a single action, and they will be processed in the order you put them in. If the result of a condition is false, the action will stop there so any service calls after that condition will not be executed.
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
- alias: 'Office at evening'
|
||||
- alias: "Office at evening"
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: sensor.office_occupancy
|
||||
to: 'on'
|
||||
to: "on"
|
||||
action:
|
||||
- service: notify.notify
|
||||
data:
|
||||
message: Testing conditional actions
|
||||
- condition: or
|
||||
conditions:
|
||||
- condition: template
|
||||
value_template: '{% raw %}{{ state_attr('sun.sun', 'elevation') < 4 }}{% endraw %}'
|
||||
- condition: template
|
||||
value_template: '{% raw %}{{ states('sensor.office_illuminance') < 10 }}{% endraw %}'
|
||||
- condition: numeric_state
|
||||
entity_id: sun.sun
|
||||
attribute: elevation
|
||||
below: 4
|
||||
- condition: state
|
||||
entity_id: sensor.office_illuminance
|
||||
below: 10
|
||||
- service: scene.turn_on
|
||||
entity_id: scene.office_at_evening
|
||||
```
|
||||
|
@ -13,11 +13,11 @@ Example of using condition:
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
- alias: 'Enciende Despacho'
|
||||
- alias: "Enciende Despacho"
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: sensor.mini_despacho
|
||||
to: 'on'
|
||||
to: "on"
|
||||
condition:
|
||||
condition: or
|
||||
conditions:
|
||||
@ -38,11 +38,11 @@ The `condition` option of an automation, also accepts a single condition templat
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
- alias: 'Enciende Despacho'
|
||||
- alias: "Enciende Despacho"
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: sensor.mini_despacho
|
||||
to: 'on'
|
||||
to: "on"
|
||||
condition: "{{ state_attr('sun.sun', 'elevation') < 4 }}"
|
||||
action:
|
||||
- service: scene.turn_on
|
||||
|
@ -29,7 +29,7 @@ automation 2:
|
||||
service: >
|
||||
notify.{{ trigger.topic.split('/')[-1] }}
|
||||
data:
|
||||
message: '{{ trigger.payload }}'
|
||||
message: "{{ trigger.payload }}"
|
||||
|
||||
automation 3:
|
||||
trigger:
|
||||
@ -39,9 +39,9 @@ automation 3:
|
||||
- light.bedroom_closet
|
||||
- light.kiddos_closet
|
||||
- light.linen_closet
|
||||
to: 'on'
|
||||
to: "on"
|
||||
# Trigger when someone leaves one of those lights on for 10 minutes.
|
||||
for: '00:10:00'
|
||||
for: "00:10:00"
|
||||
action:
|
||||
- service: light.turn_off
|
||||
data:
|
||||
|
@ -463,7 +463,7 @@ automation:
|
||||
- trigger:
|
||||
platform: state
|
||||
entity_id: binary_sensor.motion
|
||||
to: 'on'
|
||||
to: "on"
|
||||
action:
|
||||
- service: climate.turn_on
|
||||
entity_id: climate.office
|
||||
|
@ -31,42 +31,42 @@ Example of a YAML based automation that you can add to `configuration.yaml`.
|
||||
automation my_lights:
|
||||
# Turns on lights 1 hour before sunset if people are home
|
||||
# and if people get home between 16:00-23:00
|
||||
- alias: 'Rule 1 Light on in the evening'
|
||||
- alias: "Rule 1 Light on in the evening"
|
||||
trigger:
|
||||
# Prefix the first line of each trigger configuration
|
||||
# with a '-' to enter multiple
|
||||
- platform: sun
|
||||
event: sunset
|
||||
offset: '-01:00:00'
|
||||
offset: "-01:00:00"
|
||||
- platform: state
|
||||
entity_id: all
|
||||
to: 'home'
|
||||
to: "home"
|
||||
condition:
|
||||
# Prefix the first line of each condition configuration
|
||||
# with a '-'' to enter multiple
|
||||
- condition: state
|
||||
entity_id: all
|
||||
state: 'home'
|
||||
state: "home"
|
||||
- condition: time
|
||||
after: '16:00:00'
|
||||
before: '23:00:00'
|
||||
after: "16:00:00"
|
||||
before: "23:00:00"
|
||||
action:
|
||||
# With a single service call, we don't need a '-' before service - though you can if you want to
|
||||
service: homeassistant.turn_on
|
||||
entity_id: group.living_room
|
||||
|
||||
# Turn off lights when everybody leaves the house
|
||||
- alias: 'Rule 2 - Away Mode'
|
||||
- alias: "Rule 2 - Away Mode"
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: all
|
||||
to: 'not_home'
|
||||
to: "not_home"
|
||||
action:
|
||||
service: light.turn_off
|
||||
entity_id: all
|
||||
|
||||
# Notify when Paulus leaves the house in the evening
|
||||
- alias: 'Leave Home notification'
|
||||
- alias: "Leave Home notification"
|
||||
trigger:
|
||||
platform: zone
|
||||
event: leave
|
||||
@ -74,14 +74,14 @@ automation my_lights:
|
||||
entity_id: device_tracker.paulus
|
||||
condition:
|
||||
condition: time
|
||||
after: '20:00'
|
||||
after: "20:00"
|
||||
action:
|
||||
service: notify.notify
|
||||
data:
|
||||
message: 'Paulus left the house'
|
||||
message: "Paulus left the house"
|
||||
|
||||
# Send a notification via Pushover with the event of a Xiaomi cube. Custom event from the Xiaomi component.
|
||||
- alias: 'Xiaomi Cube Action'
|
||||
- alias: "Xiaomi Cube Action"
|
||||
initial_state: false
|
||||
trigger:
|
||||
platform: event
|
||||
|
@ -108,7 +108,7 @@ homeassistant:
|
||||
light:
|
||||
icon: mdi:home
|
||||
automation:
|
||||
initial_state: 'on'
|
||||
initial_state: "on"
|
||||
# Customize entities matching a pattern
|
||||
customize_glob:
|
||||
"light.kitchen_*":
|
||||
|
@ -65,7 +65,7 @@ There are some rules for packages that will be merged:
|
||||
input_boolean:
|
||||
my_input:
|
||||
```
|
||||
3. Any integration that is not a platform [2], or dictionaries with Entity ID keys [3] can only be merged if its keys, except those for lists, are solely defined once.
|
||||
3. Any integration that is not a platform [1], or dictionaries with Entity ID keys [2] can only be merged if its keys, except those for lists, are solely defined once.
|
||||
|
||||
<div class='note tip'>
|
||||
Components inside packages can only specify platform entries using configuration style 1, where all the platforms are grouped under the integration name.
|
||||
|
@ -145,14 +145,14 @@ This (large) sensor configuration gives us another example:
|
||||
### sensor.yaml
|
||||
### METEOBRIDGE #############################################
|
||||
- platform: tcp
|
||||
name: 'Outdoor Temp (Meteobridge)'
|
||||
name: "Outdoor Temp (Meteobridge)"
|
||||
host: 192.168.2.82
|
||||
timeout: 6
|
||||
payload: "Content-type: text/xml; charset=UTF-8\n\n"
|
||||
value_template: "{% raw %}{{value.split (' ')[2]}}{% endraw %}"
|
||||
unit: C
|
||||
- platform: tcp
|
||||
name: 'Outdoor Humidity (Meteobridge)'
|
||||
name: "Outdoor Humidity (Meteobridge)"
|
||||
host: 192.168.2.82
|
||||
port: 5556
|
||||
timeout: 6
|
||||
@ -173,10 +173,10 @@ This (large) sensor configuration gives us another example:
|
||||
- 'date'
|
||||
- platform: worldclock
|
||||
time_zone: Etc/UTC
|
||||
name: 'UTC'
|
||||
name: "UTC"
|
||||
- platform: worldclock
|
||||
time_zone: America/New_York
|
||||
name: 'Ann Arbor'
|
||||
name: "Ann Arbor"
|
||||
```
|
||||
|
||||
You'll notice that this example includes a secondary parameter section (under the steam section) as well as a better example of the way comments can be used to break down files into sections.
|
||||
@ -231,7 +231,7 @@ automation:
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: device_tracker.iphone
|
||||
to: 'home'
|
||||
to: "home"
|
||||
action:
|
||||
service: light.turn_on
|
||||
entity_id: light.entryway
|
||||
@ -239,7 +239,7 @@ automation:
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: device_tracker.iphone
|
||||
from: 'home'
|
||||
from: "home"
|
||||
action:
|
||||
service: light.turn_off
|
||||
entity_id: light.entryway
|
||||
@ -260,7 +260,7 @@ alias: Automation 1
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: device_tracker.iphone
|
||||
to: 'home'
|
||||
to: "home"
|
||||
action:
|
||||
service: light.turn_on
|
||||
entity_id: light.entryway
|
||||
@ -273,7 +273,7 @@ alias: Automation 2
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: device_tracker.iphone
|
||||
from: 'home'
|
||||
from: "home"
|
||||
action:
|
||||
service: light.turn_off
|
||||
entity_id: light.entryway
|
||||
@ -370,7 +370,7 @@ automation:
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: device_tracker.iphone
|
||||
to: 'home'
|
||||
to: "home"
|
||||
action:
|
||||
service: light.turn_on
|
||||
entity_id: light.entryway
|
||||
@ -378,7 +378,7 @@ automation:
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: device_tracker.iphone
|
||||
from: 'home'
|
||||
from: "home"
|
||||
action:
|
||||
service: light.turn_off
|
||||
entity_id: light.entryway
|
||||
@ -399,7 +399,7 @@ automation: !include_dir_merge_list automation/
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: device_tracker.iphone
|
||||
to: 'home'
|
||||
to: "home"
|
||||
action:
|
||||
service: light.turn_on
|
||||
entity_id: light.entryway
|
||||
@ -407,7 +407,7 @@ automation: !include_dir_merge_list automation/
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: device_tracker.iphone
|
||||
from: 'home'
|
||||
from: "home"
|
||||
action:
|
||||
service: light.turn_off
|
||||
entity_id: light.entryway
|
||||
|
@ -238,7 +238,7 @@ If you change the configuration you have to restart the server. To do that you h
|
||||
As the Docker command becomes more complex, switching to `docker-compose` can be preferable and support automatically restarting on failure or system restart. Create a `docker-compose.yml` file:
|
||||
|
||||
```yaml
|
||||
version: '3'
|
||||
version: "3"
|
||||
services:
|
||||
homeassistant:
|
||||
container_name: home-assistant
|
||||
@ -266,10 +266,12 @@ docker-compose restart
|
||||
To update your docker-compose image to the latest version and restart:
|
||||
|
||||
```bash
|
||||
docker-compose pull
|
||||
docker-compose up -d --build homeassistant
|
||||
docker-compose pull homeassistant
|
||||
docker-compose up -d
|
||||
```
|
||||
|
||||
Note: the above will fetch the latest matching image for the `homeassistant` service only. To fetch all matching images for all services defined in the same `docker-compose.yaml` file, omit the service name from the first command.
|
||||
|
||||
## Exposing Devices
|
||||
|
||||
In order to use Z-Wave, Zigbee or other integrations that require access to devices, you need to map the appropriate device into the container. Ensure the user that is running the container has the correct privileges to access the `/dev/tty*` file, then add the device mapping to your Docker command:
|
||||
@ -283,7 +285,7 @@ $ docker run --init -d --name="home-assistant" -v /PATH_TO_YOUR_CONFIG:/config \
|
||||
or in a `docker-compose.yml` file:
|
||||
|
||||
```yaml
|
||||
version: '3'
|
||||
version: "3"
|
||||
services:
|
||||
homeassistant:
|
||||
container_name: home-assistant
|
||||
|
@ -14,18 +14,18 @@ To customize the MQTT Birth and Last Will messages, add the following section to
|
||||
# Example configuration.yaml entry
|
||||
mqtt:
|
||||
birth_message:
|
||||
topic: 'hass/status'
|
||||
payload: 'online'
|
||||
topic: "hass/status"
|
||||
payload: "online"
|
||||
will_message:
|
||||
topic: 'hass/status'
|
||||
payload: 'offline'
|
||||
topic: "hass/status"
|
||||
payload: "offline"
|
||||
```
|
||||
|
||||
{% configuration %}
|
||||
birth_message:
|
||||
description: Birth Message. Set to the empty dict, `{}`, to disable publishing a birth message.
|
||||
required: false
|
||||
type: list
|
||||
type: map
|
||||
keys:
|
||||
topic:
|
||||
description: The MQTT topic to publish the message.
|
||||
@ -50,7 +50,7 @@ birth_message:
|
||||
will_message:
|
||||
description: Will Message. Set to the empty dict, `{}`, to disable publishing a will message.
|
||||
required: false
|
||||
type: list
|
||||
type: map
|
||||
keys:
|
||||
topic:
|
||||
description: The MQTT topic to publish the message.
|
||||
|
@ -18,7 +18,7 @@ script:
|
||||
entity_id: light.ceiling
|
||||
- service: notify.notify
|
||||
data:
|
||||
message: 'Turned on the ceiling light!'
|
||||
message: "Turned on the ceiling light!"
|
||||
```
|
||||
|
||||
- [Call a Service](#call-a-service)
|
||||
@ -68,7 +68,9 @@ The variables command allows you to set/override variables that will be accessib
|
||||
|
||||
```yaml
|
||||
- variables:
|
||||
entities: light.kitchen, light.living_room
|
||||
entities:
|
||||
- light.kitchen
|
||||
- light.living_room
|
||||
brightness: 100
|
||||
- alias: Control lights
|
||||
service: light.turn_on
|
||||
@ -87,7 +89,7 @@ While executing a script you can add a condition to stop further execution. When
|
||||
# If paulus is home, continue to execute the script below these lines
|
||||
- condition: state
|
||||
entity_id: device_tracker.paulus
|
||||
state: 'home'
|
||||
state: "home"
|
||||
```
|
||||
|
||||
## Delay
|
||||
@ -95,6 +97,7 @@ While executing a script you can add a condition to stop further execution. When
|
||||
Delays are useful for temporarily suspending your script and start it at a later moment. We support different syntaxes for a delay as shown below.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
# Seconds
|
||||
# Waits 5 seconds
|
||||
@ -104,13 +107,13 @@ Delays are useful for temporarily suspending your script and start it at a later
|
||||
```yaml
|
||||
# HH:MM
|
||||
# Waits 1 hour
|
||||
- delay: '01:00'
|
||||
- delay: "01:00"
|
||||
```
|
||||
|
||||
```yaml
|
||||
# HH:MM:SS
|
||||
# Waits 1.5 minutes
|
||||
- delay: '00:01:30'
|
||||
- delay: "00:01:30"
|
||||
```
|
||||
|
||||
```yaml
|
||||
@ -120,15 +123,18 @@ Delays are useful for temporarily suspending your script and start it at a later
|
||||
- delay:
|
||||
minutes: 1
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
All forms accept templates.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
# Waits however many minutes input_number.minute_delay is set to
|
||||
- delay: "{{ states('input_number.minute_delay') | multiply(60) | int }}"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
## Wait
|
||||
@ -145,15 +151,18 @@ The template is re-evaluated whenever an entity ID that it references changes st
|
||||
|
||||
{% raw %}
|
||||
```yaml
|
||||
|
||||
# Wait until media player have stop the playing
|
||||
- wait_template: "{{ is_state('media_player.floor', 'stop') }}"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
### Wait for Trigger
|
||||
|
||||
This action can use the same triggers that are available in an automation's `trigger` section. See [Automation Trigger](/docs/automation/trigger). The script will continue whenever any of the triggers fires.
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
# Wait for a custom event or light to turn on and stay on for 10 sec
|
||||
- wait_for_trigger:
|
||||
@ -161,9 +170,10 @@ This action can use the same triggers that are available in an automation's `tri
|
||||
event_type: MY_EVENT
|
||||
- platform: state
|
||||
entity_id: light.LIGHT
|
||||
to: 'on'
|
||||
to: "on"
|
||||
for: 10
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
### Wait Timeout
|
||||
@ -171,17 +181,20 @@ This action can use the same triggers that are available in an automation's `tri
|
||||
With both types of waits it is possible to set a timeout after which the script will continue its execution if the condition/event is not satisfied. Timeout has the same syntax as `delay`, and like `delay`, also accepts templates.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
# Wait for sensor to change to 'on' up to 1 minute before continuing to execute.
|
||||
- wait_template: "{{ is_state('binary_sensor.entrance', 'on') }}"
|
||||
timeout: '00:01:00'
|
||||
timeout: "00:01:00"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
You can also get the script to abort after the timeout by using optional `continue_on_timeout: false`.
|
||||
|
||||
{% raw %}
|
||||
```yaml
|
||||
|
||||
# Wait for IFTTT event or abort after specified timeout.
|
||||
- wait_for_trigger:
|
||||
- platform: event
|
||||
@ -192,6 +205,7 @@ You can also get the script to abort after the timeout by using optional `contin
|
||||
minutes: "{{ timeout_minutes }}"
|
||||
continue_on_timeout: false
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
Without `continue_on_timeout: false` the script will always continue since the default for `continue_on_timeout` is `true`.
|
||||
@ -209,14 +223,13 @@ Variable | Description
|
||||
This can be used to take different actions based on whether or not the condition was met, or to use more than one wait sequentially while implementing a single timeout overall.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
# Take different actions depending on if condition was met.
|
||||
- wait_template: "{{ is_state('binary_sensor.door', 'on') }}"
|
||||
timeout: 10
|
||||
- choose:
|
||||
- conditions:
|
||||
- condition: template
|
||||
value_template: "{{ not wait.completed }}"
|
||||
- conditions: "{{ not wait.completed }}"
|
||||
sequence:
|
||||
- service: script.door_did_not_open
|
||||
default:
|
||||
@ -234,7 +247,7 @@ This can be used to take different actions based on whether or not the condition
|
||||
- wait_for_trigger:
|
||||
- platform: state
|
||||
entity_id: binary_sensor.door_2
|
||||
to: 'on'
|
||||
to: "on"
|
||||
for: 2
|
||||
timeout: "{{ wait.remaining }}"
|
||||
continue_on_timeout: false
|
||||
@ -260,35 +273,36 @@ You can also use event_data to fire an event with custom data. This could be use
|
||||
an event trigger.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
- event: MY_EVENT
|
||||
event_data:
|
||||
name: myEvent
|
||||
customData: "{{ myCustomVariable }}"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
### Raise and Consume Custom Events
|
||||
|
||||
The following automation shows how to raise a custom event called `event_light_state_changed` with `entity_id` as the event data. The action part could be inside a script or an automation.
|
||||
|
||||
{% raw %}
|
||||
```yaml
|
||||
- alias: Fire Event
|
||||
trigger:
|
||||
- platform: state
|
||||
entity_id: switch.kitchen
|
||||
to: 'on'
|
||||
to: "on"
|
||||
action:
|
||||
- event: event_light_state_changed
|
||||
event_data:
|
||||
state: 'on'
|
||||
state: "on"
|
||||
```
|
||||
{% endraw %}
|
||||
|
||||
The following automation shows how to capture the custom event `event_light_state_changed`, and retrieve corresponding `entity_id` that was passed as the event data.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
- alias: Capture Event
|
||||
trigger:
|
||||
@ -299,6 +313,7 @@ The following automation shows how to capture the custom event `event_light_stat
|
||||
data:
|
||||
message: "kitchen light is turned {{ trigger.event.data.state }}"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
## Repeat a Group of Actions
|
||||
@ -312,6 +327,7 @@ This form accepts a count value. The value may be specified by a template, in wh
|
||||
the template is rendered when the repeat step is reached.
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
script:
|
||||
flash_light:
|
||||
@ -334,6 +350,7 @@ script:
|
||||
light: hallway
|
||||
count: 3
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
### While Loop
|
||||
@ -353,7 +370,7 @@ script:
|
||||
while:
|
||||
- condition: state
|
||||
entity_id: input_boolean.do_something
|
||||
state: 'on'
|
||||
state: "on"
|
||||
# Don't do it too many times
|
||||
- condition: template
|
||||
value_template: "{{ repeat.index <= 20 }}"
|
||||
@ -389,11 +406,11 @@ automation:
|
||||
- trigger:
|
||||
- platform: state
|
||||
entity_id: binary_sensor.xyz
|
||||
to: 'on'
|
||||
to: "on"
|
||||
condition:
|
||||
- condition: state
|
||||
entity_id: binary_sensor.something
|
||||
state: 'off'
|
||||
state: "off"
|
||||
mode: single
|
||||
action:
|
||||
- alias: Repeat the sequence UNTIL the conditions are true
|
||||
@ -408,7 +425,7 @@ automation:
|
||||
# Did it work?
|
||||
- condition: state
|
||||
entity_id: binary_sensor.something
|
||||
state: 'on'
|
||||
state: "on"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
@ -454,7 +471,7 @@ automation:
|
||||
- trigger:
|
||||
- platform: state
|
||||
entity_id: binary_sensor.motion
|
||||
to: 'on'
|
||||
to: "on"
|
||||
action:
|
||||
- choose:
|
||||
# IF nobody home, sound the alarm!
|
||||
@ -500,7 +517,7 @@ automation:
|
||||
- trigger:
|
||||
- platform: state
|
||||
entity_id: input_boolean.simulate
|
||||
to: 'on'
|
||||
to: "on"
|
||||
mode: restart
|
||||
action:
|
||||
- choose:
|
||||
|
@ -16,10 +16,10 @@ condition:
|
||||
condition: and
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: 'device_tracker.paulus'
|
||||
state: 'home'
|
||||
entity_id: "device_tracker.paulus"
|
||||
state: "home"
|
||||
- condition: numeric_state
|
||||
entity_id: 'sensor.temperature'
|
||||
entity_id: "sensor.temperature"
|
||||
below: 20
|
||||
```
|
||||
|
||||
@ -30,10 +30,10 @@ The following configuration works the same as the one listed above:
|
||||
```yaml
|
||||
condition:
|
||||
- condition: state
|
||||
entity_id: 'device_tracker.paulus'
|
||||
state: 'home'
|
||||
entity_id: "device_tracker.paulus"
|
||||
state: "home"
|
||||
- condition: numeric_state
|
||||
entity_id: 'sensor.temperature'
|
||||
entity_id: "sensor.temperature"
|
||||
below: 20
|
||||
```
|
||||
|
||||
@ -48,10 +48,10 @@ condition:
|
||||
condition: or
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: 'device_tracker.paulus'
|
||||
state: 'home'
|
||||
entity_id: "device_tracker.paulus"
|
||||
state: "home"
|
||||
- condition: numeric_state
|
||||
entity_id: 'sensor.temperature'
|
||||
entity_id: "sensor.temperature"
|
||||
below: 20
|
||||
```
|
||||
|
||||
@ -65,15 +65,15 @@ condition:
|
||||
condition: and
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: 'device_tracker.paulus'
|
||||
state: 'home'
|
||||
entity_id: "device_tracker.paulus"
|
||||
state: "home"
|
||||
- condition: or
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: sensor.weather_precip
|
||||
state: 'rain'
|
||||
state: "rain"
|
||||
- condition: numeric_state
|
||||
entity_id: 'sensor.temperature'
|
||||
entity_id: "sensor.temperature"
|
||||
below: 20
|
||||
```
|
||||
|
||||
@ -87,7 +87,7 @@ condition:
|
||||
conditions:
|
||||
- condition: state
|
||||
entity_id: device_tracker.paulus
|
||||
state: 'home'
|
||||
state: "home"
|
||||
- condition: state
|
||||
entity_id: alarm_control_panel.home_alarm
|
||||
state: disarmed
|
||||
@ -167,7 +167,7 @@ Tests if an entity is a specified state.
|
||||
condition:
|
||||
condition: state
|
||||
entity_id: device_tracker.paulus
|
||||
state: 'not_home'
|
||||
state: "not_home"
|
||||
# optional: trigger only if state was this for last X time.
|
||||
for:
|
||||
hours: 1
|
||||
@ -184,7 +184,7 @@ condition:
|
||||
entity_id:
|
||||
- light.kitchen
|
||||
- light.living_room
|
||||
state: 'on'
|
||||
state: "on"
|
||||
```
|
||||
|
||||
Testing if an entity is matching a set of possible conditions;
|
||||
@ -245,14 +245,14 @@ The sun state can be used to test if the sun has set or risen.
|
||||
condition:
|
||||
condition: state # 'day' condition: from sunrise until sunset
|
||||
entity_id: sun.sun
|
||||
state: 'above_horizon'
|
||||
state: "above_horizon"
|
||||
```
|
||||
|
||||
```yaml
|
||||
condition:
|
||||
condition: state # from sunset until sunrise
|
||||
entity_id: sun.sun
|
||||
state: 'below_horizon'
|
||||
state: "below_horizon"
|
||||
```
|
||||
|
||||
### Sun elevation condition
|
||||
@ -392,7 +392,7 @@ condition:
|
||||
conditions:
|
||||
- "{{ is_state('device_tracker.iphone', 'away') }}"
|
||||
- condition: numeric_state
|
||||
entity_id: 'sensor.temperature'
|
||||
entity_id: "sensor.temperature"
|
||||
below: 20
|
||||
```
|
||||
|
||||
@ -442,8 +442,8 @@ The time condition can test if it is after a specified time, before a specified
|
||||
condition:
|
||||
condition: time
|
||||
# At least one of the following is required.
|
||||
after: '15:00:00'
|
||||
before: '02:00:00'
|
||||
after: "15:00:00"
|
||||
before: "02:00:00"
|
||||
weekday:
|
||||
- mon
|
||||
- wed
|
||||
@ -532,13 +532,13 @@ condition:
|
||||
below: 1
|
||||
- condition: state
|
||||
entity_id: light.living_room
|
||||
state: 'off'
|
||||
state: "off"
|
||||
- condition: time
|
||||
before: '23:00:00'
|
||||
after: '14:00:00'
|
||||
before: "23:00:00"
|
||||
after: "14:00:00"
|
||||
- condition: state
|
||||
entity_id: script.light_turned_off_5min
|
||||
state: 'off'
|
||||
state: "off"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
@ -109,7 +109,7 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl
|
||||
|
||||
```yaml
|
||||
- id: mini_1_pressed
|
||||
alias: 'Minimote Button 1 Pressed'
|
||||
alias: "Minimote Button 1 Pressed"
|
||||
trigger:
|
||||
- platform: event
|
||||
event_type: zwave.scene_activated
|
||||
@ -117,7 +117,7 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl
|
||||
entity_id: zwave.aeon_labs_minimote_1
|
||||
scene_id: 1
|
||||
- id: mini_1_held
|
||||
alias: 'Minimote Button 1 Held'
|
||||
alias: "Minimote Button 1 Held"
|
||||
trigger:
|
||||
- platform: event
|
||||
event_type: zwave.scene_activated
|
||||
@ -125,7 +125,7 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl
|
||||
entity_id: zwave.aeon_labs_minimote_1
|
||||
scene_id: 2
|
||||
- id: mini_2_pressed
|
||||
alias: 'Minimote Button 2 Pressed'
|
||||
alias: "Minimote Button 2 Pressed"
|
||||
trigger:
|
||||
- platform: event
|
||||
event_type: zwave.scene_activated
|
||||
@ -133,7 +133,7 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl
|
||||
entity_id: zwave.aeon_labs_minimote_1
|
||||
scene_id: 3
|
||||
- id: mini_2_held
|
||||
alias: 'Minimote Button 2 Held'
|
||||
alias: "Minimote Button 2 Held"
|
||||
trigger:
|
||||
- platform: event
|
||||
event_type: zwave.scene_activated
|
||||
@ -141,7 +141,7 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl
|
||||
entity_id: zwave.aeon_labs_minimote_1
|
||||
scene_id: 4
|
||||
- id: mini_3_pressed
|
||||
alias: 'Minimote Button 3 Pressed'
|
||||
alias: "Minimote Button 3 Pressed"
|
||||
trigger:
|
||||
- platform: event
|
||||
event_type: zwave.scene_activated
|
||||
@ -149,7 +149,7 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl
|
||||
entity_id: zwave.aeon_labs_minimote_1
|
||||
scene_id: 5
|
||||
- id: mini_3_held
|
||||
alias: 'Minimote Button 3 Held'
|
||||
alias: "Minimote Button 3 Held"
|
||||
trigger:
|
||||
- platform: event
|
||||
event_type: zwave.scene_activated
|
||||
@ -157,7 +157,7 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl
|
||||
entity_id: zwave.aeon_labs_minimote_1
|
||||
scene_id: 6
|
||||
- id: mini_4_pressed
|
||||
alias: 'Minimote Button 4 Pressed'
|
||||
alias: "Minimote Button 4 Pressed"
|
||||
trigger:
|
||||
- platform: event
|
||||
event_type: zwave.scene_activated
|
||||
@ -165,7 +165,7 @@ Here's a handy configuration for the Aeon Labs Minimote that defines all possibl
|
||||
entity_id: zwave.aeon_labs_minimote_1
|
||||
scene_id: 7
|
||||
- id: mini_4_held
|
||||
alias: 'Minimote Button 4 Held'
|
||||
alias: "Minimote Button 4 Held"
|
||||
trigger:
|
||||
- platform: event
|
||||
event_type: zwave.scene_activated
|
||||
@ -1080,7 +1080,7 @@ Double-press | 3
|
||||
Let's see how this works in an automation for a Scene Master that's assigned as Node 7:
|
||||
|
||||
```yaml
|
||||
- id: '1234567890'
|
||||
- id: "1234567890"
|
||||
alias: Double-press Button 2 to toggle all lights
|
||||
trigger:
|
||||
- platform: event
|
||||
|
@ -96,7 +96,7 @@ Some devices (like the HomeSeer wall switches) allow you to do things like doubl
|
||||
```yaml
|
||||
# Example configuration.yaml automation entry
|
||||
automation
|
||||
- alias: 'Dining room dimmer - double tap up'
|
||||
- alias: "Dining room dimmer - double tap up"
|
||||
trigger:
|
||||
- event_type: zwave.scene_activated
|
||||
platform: event
|
||||
|
@ -30,7 +30,7 @@ To enable ADS, add the following lines to your `configuration.yaml` file:
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
ads:
|
||||
device: '127.0.0.1.1.1'
|
||||
device: "127.0.0.1.1.1"
|
||||
port: 801
|
||||
```
|
||||
|
||||
@ -138,7 +138,7 @@ file:
|
||||
sensor:
|
||||
- platform: ads
|
||||
adsvar: GVL.temperature
|
||||
unit_of_measurement: '°C'
|
||||
unit_of_measurement: "°C"
|
||||
adstype: int
|
||||
```
|
||||
|
||||
|
@ -8,7 +8,7 @@ ha_iot_class: Cloud Polling
|
||||
ha_domain: aftership
|
||||
---
|
||||
|
||||
The `aftership` platform allows one to track deliveries by [AfterShip](https://www.aftership.com), a service that supports 490+ couriers worldwide. There is a 'Forever Free' tier which allows tracking of up to 50 packages per month. There are various paid-for tiers after that.
|
||||
The `aftership` platform allows one to track deliveries by [AfterShip](https://www.aftership.com), a service that supports 490+ couriers worldwide. To use the tracking API functionality, the Essentials plan is required. This plan includes 100 shipments per month. There are various paid-for tiers after that.
|
||||
|
||||
The sensor value shows the number of packages that are not in `Delivered` state. As attributes are the number of packages per status.
|
||||
|
||||
@ -17,7 +17,7 @@ The sensor value shows the number of packages that are not in `Delivered` state.
|
||||
To use this sensor, you need an [AfterShip Account](https://accounts.aftership.com/register) and set up an API Key. To set up an API Key go to [AfterShip API](https://admin.aftership.com/settings/api-keys) page, and copy existing key or generate a new one.
|
||||
|
||||
<div class='note info'>
|
||||
AfterShip recently started requiring having a credit card on file even if you are only using the free plan. That does not change the functionality of the platform, just something to be aware of.
|
||||
AfterShip recently removed the tracking API functionality from the Forever Free plan. The tracking API functionality requires at least the Essentials plan.
|
||||
</div>
|
||||
|
||||
## Configuration
|
||||
|
@ -89,7 +89,7 @@ command_topic:
|
||||
required: true
|
||||
type: string
|
||||
device:
|
||||
description: 'Information about the device this alarm panel is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set.'
|
||||
description: "Information about the device this alarm panel is a part of to tie it into the [device registry](https://developers.home-assistant.io/docs/en/device_registry_index.html). Only works through [MQTT discovery](/docs/mqtt/discovery/) and when [`unique_id`](#unique_id) is set."
|
||||
required: false
|
||||
type: map
|
||||
keys:
|
||||
@ -98,27 +98,27 @@ device:
|
||||
required: false
|
||||
type: list
|
||||
identifiers:
|
||||
description: 'A list of IDs that uniquely identify the device. For example a serial number.'
|
||||
description: "A list of IDs that uniquely identify the device. For example a serial number."
|
||||
required: false
|
||||
type: [list, string]
|
||||
manufacturer:
|
||||
description: 'The manufacturer of the device.'
|
||||
description: "The manufacturer of the device."
|
||||
required: false
|
||||
type: string
|
||||
model:
|
||||
description: 'The model of the device.'
|
||||
description: "The model of the device."
|
||||
required: false
|
||||
type: string
|
||||
name:
|
||||
description: 'The name of the device.'
|
||||
description: "The name of the device."
|
||||
required: false
|
||||
type: string
|
||||
sw_version:
|
||||
description: 'The firmware version of the device.'
|
||||
description: "The firmware version of the device."
|
||||
required: false
|
||||
type: string
|
||||
via_device:
|
||||
description: 'Identifier of a device that routes messages between this device and Home Assistant. Examples of such devices are hubs, or parent devices of a sub-device. This is used to show device topology in Home Assistant.'
|
||||
description: "Identifier of a device that routes messages between this device and Home Assistant. Examples of such devices are hubs, or parent devices of a sub-device. This is used to show device topology in Home Assistant."
|
||||
required: false
|
||||
type: string
|
||||
json_attributes_template:
|
||||
|
@ -47,7 +47,7 @@ alarm_control_panel:
|
||||
disarm:
|
||||
- condition: state
|
||||
entity_id: device_tracker.paulus
|
||||
state: 'home'
|
||||
state: "home"
|
||||
- service: alarm_control_panel.alarm_arm_home
|
||||
data:
|
||||
entity_id: alarm_control_panel.real_alarm
|
||||
|
@ -38,7 +38,7 @@ alert:
|
||||
name: Garage is open
|
||||
done_message: Garage is closed
|
||||
entity_id: input_boolean.garage_door
|
||||
state: 'on'
|
||||
state: "on"
|
||||
repeat: 30
|
||||
can_acknowledge: true
|
||||
skip_first: true
|
||||
@ -137,7 +137,7 @@ alert:
|
||||
freshwater_temp_alert:
|
||||
name: "Warning: I have detected a problem with the freshwater tank temperature"
|
||||
entity_id: binary_sensor.freshwater_temperature_status
|
||||
state: 'on'
|
||||
state: "on"
|
||||
repeat: 5
|
||||
can_acknowledge: true
|
||||
skip_first: false
|
||||
@ -163,7 +163,7 @@ binary_sensor:
|
||||
sensors:
|
||||
motion_battery_low:
|
||||
value_template: "{{ state_attr('sensor.motion', 'battery') < 15 }}"
|
||||
friendly_name: 'Motion battery is low'
|
||||
friendly_name: "Motion battery is low"
|
||||
|
||||
alert:
|
||||
motion_battery:
|
||||
@ -194,7 +194,7 @@ alert:
|
||||
garage_door:
|
||||
name: Garage is open
|
||||
entity_id: input_boolean.garage_door
|
||||
state: 'on' # Optional, 'on' is the default value
|
||||
state: "on" # Optional, 'on' is the default value
|
||||
repeat:
|
||||
- 15
|
||||
- 30
|
||||
@ -228,7 +228,7 @@ alert:
|
||||
office_plant:
|
||||
name: Plant in office needs help
|
||||
entity_id: plant.plant_office
|
||||
state: 'problem'
|
||||
state: "problem"
|
||||
repeat: 30
|
||||
can_acknowledge: true
|
||||
skip_first: true
|
||||
@ -254,7 +254,7 @@ alert:
|
||||
garage_door:
|
||||
name: Garage is open
|
||||
entity_id: input_boolean.garage_door
|
||||
state: 'on' # Optional, 'on' is the default value
|
||||
state: "on" # Optional, 'on' is the default value
|
||||
repeat:
|
||||
- 15
|
||||
- 30
|
||||
|
@ -84,7 +84,7 @@ Say to all `media_player` device entities:
|
||||
```yaml
|
||||
- service: tts.amazon_polly_say
|
||||
data:
|
||||
message: '<speak>Hello from Amazon Polly</speak>'
|
||||
message: "<speak>Hello from Amazon Polly</speak>"
|
||||
```
|
||||
|
||||
or
|
||||
|
@ -246,9 +246,9 @@ camera_image: camera.lakehouse
|
||||
camera_view: live # or auto for snapshot view
|
||||
elements:
|
||||
- type: icon
|
||||
icon: 'mdi:arrow-up'
|
||||
icon: "mdi:arrow-up"
|
||||
style:
|
||||
background: 'rgba(255, 255, 255, 0.25)'
|
||||
background: "rgba(255, 255, 255, 0.25)"
|
||||
right: 25px
|
||||
bottom: 50px
|
||||
tap_action:
|
||||
@ -258,9 +258,9 @@ elements:
|
||||
entity_id: camera.lakehouse
|
||||
movement: up
|
||||
- type: icon
|
||||
icon: 'mdi:arrow-down'
|
||||
icon: "mdi:arrow-down"
|
||||
style:
|
||||
background: 'rgba(255, 255, 255, 0.25)'
|
||||
background: "rgba(255, 255, 255, 0.25)"
|
||||
right: 25px
|
||||
bottom: 0px
|
||||
tap_action:
|
||||
@ -270,9 +270,9 @@ elements:
|
||||
entity_id: camera.lakehouse
|
||||
movement: down
|
||||
- type: icon
|
||||
icon: 'mdi:arrow-left'
|
||||
icon: "mdi:arrow-left"
|
||||
style:
|
||||
background: 'rgba(255, 255, 255, 0.25)'
|
||||
background: "rgba(255, 255, 255, 0.25)"
|
||||
right: 50px
|
||||
bottom: 25px
|
||||
tap_action:
|
||||
@ -282,9 +282,9 @@ elements:
|
||||
entity_id: camera.lakehouse
|
||||
movement: left
|
||||
- type: icon
|
||||
icon: 'mdi:arrow-right'
|
||||
icon: "mdi:arrow-right"
|
||||
style:
|
||||
background: 'rgba(255, 255, 255, 0.25)'
|
||||
background: "rgba(255, 255, 255, 0.25)"
|
||||
right: 0px
|
||||
bottom: 25px
|
||||
tap_action:
|
||||
@ -294,9 +294,9 @@ elements:
|
||||
entity_id: camera.lakehouse
|
||||
movement: right
|
||||
- type: icon
|
||||
icon: 'mdi:arrow-top-left'
|
||||
icon: "mdi:arrow-top-left"
|
||||
style:
|
||||
background: 'rgba(255, 255, 255, 0.25)'
|
||||
background: "rgba(255, 255, 255, 0.25)"
|
||||
right: 50px
|
||||
bottom: 50px
|
||||
tap_action:
|
||||
@ -306,9 +306,9 @@ elements:
|
||||
entity_id: camera.lakehouse
|
||||
movement: left_up
|
||||
- type: icon
|
||||
icon: 'mdi:arrow-top-right'
|
||||
icon: "mdi:arrow-top-right"
|
||||
style:
|
||||
background: 'rgba(255, 255, 255, 0.25)'
|
||||
background: "rgba(255, 255, 255, 0.25)"
|
||||
right: 0px
|
||||
bottom: 50px
|
||||
tap_action:
|
||||
@ -318,9 +318,9 @@ elements:
|
||||
entity_id: camera.lakehouse
|
||||
movement: right_up
|
||||
- type: icon
|
||||
icon: 'mdi:arrow-bottom-left'
|
||||
icon: "mdi:arrow-bottom-left"
|
||||
style:
|
||||
background: 'rgba(255, 255, 255, 0.25)'
|
||||
background: "rgba(255, 255, 255, 0.25)"
|
||||
right: 50px
|
||||
bottom: 0px
|
||||
tap_action:
|
||||
@ -330,9 +330,9 @@ elements:
|
||||
entity_id: camera.lakehouse
|
||||
movement: left_down
|
||||
- type: icon
|
||||
icon: 'mdi:arrow-bottom-right'
|
||||
icon: "mdi:arrow-bottom-right"
|
||||
style:
|
||||
background: 'rgba(255, 255, 255, 0.25)'
|
||||
background: "rgba(255, 255, 255, 0.25)"
|
||||
right: 0px
|
||||
bottom: 0px
|
||||
tap_action:
|
||||
@ -342,9 +342,9 @@ elements:
|
||||
entity_id: camera.lakehouse
|
||||
movement: right_down
|
||||
- type: icon
|
||||
icon: 'mdi:magnify'
|
||||
icon: "mdi:magnify"
|
||||
style:
|
||||
background: 'rgba(255, 255, 255, 0.25)'
|
||||
background: "rgba(255, 255, 255, 0.25)"
|
||||
bottom: 25px
|
||||
right: 25px
|
||||
tap_action:
|
||||
|
@ -181,7 +181,7 @@ binary_sensor:
|
||||
name: Kitchen Motion
|
||||
device_class: motion
|
||||
resource: http://IP_ADDRESS:PORT/sensors.json?sense=motion_active
|
||||
value_template: '{{ value_json.motion_active.data[0][1][0] | round(0) }}'
|
||||
value_template: "{{ value_json.motion_active.data[0][1][0] | round(0) }}"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
@ -217,14 +217,14 @@ start_netflix:
|
||||
- service: media_player.select_source
|
||||
data:
|
||||
entity_id: media_player.fire_tv_living_room
|
||||
source: 'com.netflix.ninja'
|
||||
source: "com.netflix.ninja"
|
||||
|
||||
stop_netflix:
|
||||
sequence:
|
||||
- service: media_player.select_source
|
||||
data:
|
||||
entity_id: media_player.fire_tv_living_room
|
||||
source: '!com.netflix.ninja'
|
||||
source: "!com.netflix.ninja"
|
||||
```
|
||||
|
||||
### `androidtv.adb_command`
|
||||
|
@ -54,7 +54,7 @@ The Arlo integration also provides a camera service to enable/disable the motion
|
||||
```yaml
|
||||
#automation.yaml
|
||||
- alias: Enable Arlo upon HA start'
|
||||
initial_state: 'on'
|
||||
initial_state: "on"
|
||||
trigger:
|
||||
platform: homeassistant
|
||||
event: start
|
||||
@ -142,7 +142,7 @@ Once you have enabled the [Arlo component](/integrations/arlo), add the followin
|
||||
# Example configuration.yaml entry
|
||||
camera:
|
||||
- platform: arlo
|
||||
ffmpeg_arguments: '-pred 1 -q:v 2'
|
||||
ffmpeg_arguments: "-pred 1 -q:v 2"
|
||||
```
|
||||
|
||||
{% configuration %}
|
||||
|
@ -75,7 +75,7 @@ Using the lock operation sensors, you can detect when a user operates a lock and
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
- id: '1583706446906'
|
||||
- id: "1583706446906"
|
||||
alias: joe_doe_front_door_operate
|
||||
description: John Doe locks or unlocks the Front Door
|
||||
trigger:
|
||||
|
@ -32,7 +32,7 @@ Add the following to your `configuration.yaml` file:
|
||||
# Example configuration.yaml entry
|
||||
sensor:
|
||||
- platform: aurora_abb_powerone
|
||||
device: 'SERIAL_PORT'
|
||||
device: "SERIAL_PORT"
|
||||
```
|
||||
|
||||
{% configuration %}
|
||||
@ -57,5 +57,5 @@ name:
|
||||
sensor:
|
||||
- platform: aurora_abb_powerone
|
||||
address: 2
|
||||
device: '/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A50285BI-if00-port0'
|
||||
device: "/dev/serial/by-id/usb-FTDI_FT232R_USB_UART_A50285BI-if00-port0"
|
||||
```
|
||||
|
@ -24,11 +24,11 @@ binary_sensor:
|
||||
- platform: bayesian
|
||||
prior: 0.1
|
||||
observations:
|
||||
- entity_id: 'switch.kitchen_lights'
|
||||
- entity_id: "switch.kitchen_lights"
|
||||
prob_given_true: 0.6
|
||||
prob_given_false: 0.2
|
||||
platform: 'state'
|
||||
to_state: 'on'
|
||||
platform: "state"
|
||||
to_state: "on"
|
||||
```
|
||||
|
||||
{% configuration %}
|
||||
@ -90,29 +90,29 @@ The following is an example for the `state` observation platform.
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
binary_sensor:
|
||||
name: 'in_bed'
|
||||
platform: 'bayesian'
|
||||
name: "in_bed"
|
||||
platform: "bayesian"
|
||||
prior: 0.25
|
||||
probability_threshold: 0.95
|
||||
observations:
|
||||
- platform: 'state'
|
||||
entity_id: 'sensor.living_room_motion'
|
||||
- platform: "state"
|
||||
entity_id: "sensor.living_room_motion"
|
||||
prob_given_true: 0.4
|
||||
prob_given_false: 0.2
|
||||
to_state: 'off'
|
||||
- platform: 'state'
|
||||
entity_id: 'sensor.basement_motion'
|
||||
to_state: "off"
|
||||
- platform: "state"
|
||||
entity_id: "sensor.basement_motion"
|
||||
prob_given_true: 0.5
|
||||
prob_given_false: 0.4
|
||||
to_state: 'off'
|
||||
- platform: 'state'
|
||||
entity_id: 'sensor.bedroom_motion'
|
||||
to_state: "off"
|
||||
- platform: "state"
|
||||
entity_id: "sensor.bedroom_motion"
|
||||
prob_given_true: 0.5
|
||||
to_state: 'on'
|
||||
- platform: 'state'
|
||||
entity_id: 'sun.sun'
|
||||
to_state: "on"
|
||||
- platform: "state"
|
||||
entity_id: "sun.sun"
|
||||
prob_given_true: 0.7
|
||||
to_state: 'below_horizon'
|
||||
to_state: "below_horizon"
|
||||
```
|
||||
|
||||
Next up an example which targets the `numeric_state` observation platform,
|
||||
@ -121,13 +121,13 @@ as seen in the configuration it requires `below` and/or `above` instead of `to_s
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
binary_sensor:
|
||||
name: 'Heat On'
|
||||
platform: 'bayesian'
|
||||
name: "Heat On"
|
||||
platform: "bayesian"
|
||||
prior: 0.2
|
||||
probability_threshold: 0.9
|
||||
observations:
|
||||
- platform: 'numeric_state'
|
||||
entity_id: 'sensor.outside_air_temperature_fahrenheit'
|
||||
- platform: "numeric_state"
|
||||
entity_id: "sensor.outside_air_temperature_fahrenheit"
|
||||
prob_given_true: 0.95
|
||||
below: 50
|
||||
```
|
||||
@ -139,8 +139,8 @@ Finally, here's an example for `template` observation platform, as seen in the c
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
binary_sensor:
|
||||
name: 'Paulus Home'
|
||||
platform: 'bayesian'
|
||||
name: "Paulus Home"
|
||||
platform: "bayesian"
|
||||
prior: 0.5
|
||||
probability_threshold: 0.9
|
||||
observations:
|
||||
|
@ -239,7 +239,7 @@ binary_sensor:
|
||||
my_device:
|
||||
value_template: >-
|
||||
{{ is_state('device_tracker.my_device_nmap','home') or is_state('device_tracker.my_device_gps','home') }}
|
||||
device_class: 'presence'
|
||||
device_class: "presence"
|
||||
attribute_templates:
|
||||
latitude: >-
|
||||
{% if is_state('device_tracker.my_device_nmap','home') %}
|
||||
@ -301,7 +301,7 @@ binary_sensor:
|
||||
- platform: template
|
||||
sensors:
|
||||
has_unavailable_states:
|
||||
value_template: '{{ states | selectattr('state', 'in', ['unavailable', 'unknown', 'none']) | list | count }}'
|
||||
value_template: "{{ states | selectattr('state', 'in', ['unavailable', 'unknown', 'none']) | list | count }}"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
@ -315,7 +315,7 @@ binary_sensor:
|
||||
- platform: template
|
||||
sensors:
|
||||
has_sensor_unavailable_states:
|
||||
value_template: '{{ states.sensor | selectattr('state', 'in', ['unavailable', 'unknown', 'none']) | list | count }}'
|
||||
value_template: "{{ states.sensor | selectattr('state', 'in', ['unavailable', 'unknown', 'none']) | list | count }}"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
@ -42,8 +42,8 @@ The requirement is that you have setup the [`xiaomi aqara` integration](/integra
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: binary_sensor.motion_sensor_158d000xxxxxc2
|
||||
from: 'off'
|
||||
to: 'on'
|
||||
from: "off"
|
||||
to: "on"
|
||||
condition:
|
||||
condition: numeric_state
|
||||
entity_id: sensor.illumination_34ce00xxxx11
|
||||
@ -60,8 +60,8 @@ The requirement is that you have setup the [`xiaomi aqara` integration](/integra
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: binary_sensor.motion_sensor_158d000xxxxxc2
|
||||
from: 'on'
|
||||
to: 'off'
|
||||
from: "on"
|
||||
to: "off"
|
||||
for:
|
||||
minutes: 5
|
||||
action:
|
||||
@ -79,40 +79,40 @@ The requirement is that you have setup the [`xiaomi aqara` integration](/integra
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: binary_sensor.door_window_sensor_158d000xxxxxc2
|
||||
from: 'off'
|
||||
to: 'on'
|
||||
from: "off"
|
||||
to: "on"
|
||||
action:
|
||||
service: climate.set_operation_mode
|
||||
entity_id: climate.livingroom
|
||||
data:
|
||||
operation_mode: 'Off'
|
||||
operation_mode: "Off"
|
||||
- alias: If the window is closed for 5 minutes turn on the radiator again
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: binary_sensor.door_window_sensor_158d000xxxxxc2
|
||||
from: 'on'
|
||||
to: 'off'
|
||||
from: "on"
|
||||
to: "off"
|
||||
for:
|
||||
minutes: 5
|
||||
action:
|
||||
service: climate.set_operation_mode
|
||||
entity_id: climate.livingroom
|
||||
data:
|
||||
operation_mode: 'Smart schedule'
|
||||
operation_mode: "Smart schedule"
|
||||
- alias: Notify if door is opened when away
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: binary_sensor.door_window_sensor_15xxxxxxc9xx6b
|
||||
from: 'off'
|
||||
to: 'on'
|
||||
from: "off"
|
||||
to: "on"
|
||||
condition:
|
||||
- condition: state
|
||||
entity_id: group.family
|
||||
state: 'not_home'
|
||||
state: "not_home"
|
||||
action:
|
||||
- service: notify.notify_person
|
||||
data:
|
||||
message: 'The door has been opened'
|
||||
message: "The door has been opened"
|
||||
```
|
||||
|
||||
#### Smoke
|
||||
@ -122,8 +122,8 @@ The requirement is that you have setup the [`xiaomi aqara` integration](/integra
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: binary_sensor.smoke_sensor_158d0001574899
|
||||
from: 'off'
|
||||
to: 'on'
|
||||
from: "off"
|
||||
to: "on"
|
||||
action:
|
||||
- service: notify.html5
|
||||
data:
|
||||
@ -143,13 +143,13 @@ The requirement is that you have setup the [`xiaomi aqara` integration](/integra
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: binary_sensor.natgas_sensor_158dxxxxxxxxxx
|
||||
from: 'off'
|
||||
to: 'on'
|
||||
from: "off"
|
||||
to: "on"
|
||||
action:
|
||||
- service: notify.html5
|
||||
data:
|
||||
title: Gas alarm!
|
||||
message: 'Gas with a density of {% raw %}{{ state_attr('binary_sensor.natgas_sensor_158dxxxxxxxxxx', 'density') }}{% endraw %} detected.'
|
||||
message: "Gas with a density of {% raw %}{{ state_attr('binary_sensor.natgas_sensor_158dxxxxxxxxxx', 'density') }}{% endraw %} detected."
|
||||
```
|
||||
|
||||
#### Xiaomi Wireless Button
|
||||
|
@ -121,7 +121,7 @@ Here, this example assumes your blink module is named `My Sync Module` and that
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: all
|
||||
to: 'not_home'
|
||||
to: "not_home"
|
||||
action:
|
||||
service: alarm_control_panel.alarm_arm_away
|
||||
entity_id: alarm_control_panel.blink_my_sync_module
|
||||
@ -137,7 +137,7 @@ Similar to the previous example, this automation will disarm blink when arriving
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: all
|
||||
to: 'home'
|
||||
to: "home"
|
||||
action:
|
||||
service: alarm_control_panel.alarm_disarm
|
||||
entity_id: alarm_control_panel.blink_my_sync_module
|
||||
@ -157,7 +157,7 @@ Again, this example assumes your camera's name (in the blink app) is `My Camera`
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: binary_sensor.blink_my_camera_motion_detected
|
||||
to: 'on'
|
||||
to: "on"
|
||||
action:
|
||||
service: blink.save_video
|
||||
data:
|
||||
|
@ -24,7 +24,7 @@ To use a BMP280 sensor in your installation, you have to enable I2C on your host
|
||||
```yaml
|
||||
sensor:
|
||||
- platform: bmp280
|
||||
- i2c_address: 0x77
|
||||
i2c_address: 0x77
|
||||
```
|
||||
|
||||
{% configuration %}
|
||||
|
@ -29,7 +29,51 @@ Some very old Brother printers use different data format and these models are no
|
||||
|
||||
## Configuring the printer
|
||||
|
||||
To set SNMP, navigate to the printer's web interface (for example: `http://192.168.5.6`) and turn it on under Network / Protocol / SNMP.
|
||||
To enable SNMP, navigate to the printer's web interface (for example: `http://192.168.5.6`) and turn it on under Network / Protocol / SNMP.
|
||||
For some Brother devices, `SNMPv3 read-write access and v1/v2c read-only access` is the option required (under advanced settings).
|
||||
|
||||

|
||||
|
||||
## Sensor Example
|
||||
|
||||
You can configure Home Assistant to alert you when the printer jams or runs out of paper as follows. First, add the following to `configuration.yaml` under the `binary_sensor:` section (replace `sensor.hl_l2340d_status` with the actual name of your sensor):
|
||||
|
||||
{% raw %}
|
||||
|
||||
```yaml
|
||||
- platform: template
|
||||
sensors:
|
||||
laser_out_of_paper:
|
||||
value_template: "{{ is_state('sensor.hl_l2340d_status', 'no paper') }}"
|
||||
friendly_name: "Laser Printer Out of Paper"
|
||||
- platform: template
|
||||
sensors:
|
||||
laser_paper_jam:
|
||||
value_template: "{{ is_state('sensor.hl_l2340d_status', 'paper jam') }}"
|
||||
friendly_name: "Laser Printer Paper Jam"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
||||
Then, add this under the `alert:` section:
|
||||
|
||||
```yaml
|
||||
laser_out_of_paper:
|
||||
name: Laser Printer is Out of Paper
|
||||
done_message: Laser Printer Has Paper
|
||||
entity_id: binary_sensor.laser_out_of_paper
|
||||
can_acknowledge: true
|
||||
notifiers:
|
||||
- my_phone_notify
|
||||
laser_paper_jam:
|
||||
name: Laser Printer has a Paper Jam
|
||||
done_message: Laser Printer Paper Jam Cleared
|
||||
entity_id: binary_sensor.laser_paper_jam
|
||||
can_acknowledge: true
|
||||
notifiers:
|
||||
- my_phone_notify
|
||||
```
|
||||
|
||||
The above will send an alert for paper jam or out of paper whenever the condition is detected, assuming you have the Home Assistant app configured on your phone so that alerts can be sent directly to it. If you don't use the Home Assistant app, you will need to set up a different notifier.
|
||||
|
||||
Change `my_phone_notify` to the actual notifier you are using.
|
||||
|
@ -59,7 +59,7 @@ A full configuration example:
|
||||
# Example configuration.yaml entry
|
||||
weather:
|
||||
- platform: buienradar
|
||||
name: 'volkel'
|
||||
name: "volkel"
|
||||
# Force 'Meetstation Volkel' to be used:
|
||||
latitude: 51.65
|
||||
longitude: 5.70
|
||||
|
@ -56,12 +56,12 @@ calendar:
|
||||
password: !secret caldav
|
||||
url: https://baikal.my-server.net/cal.php/calendars/john.doe@test.com/default
|
||||
custom_calendars:
|
||||
- name: 'HomeOffice'
|
||||
calendar: 'Agenda'
|
||||
search: 'HomeOffice'
|
||||
- name: 'WarmupFlat'
|
||||
calendar: 'Agenda'
|
||||
search: 'Warmup'
|
||||
- name: "HomeOffice"
|
||||
calendar: "Agenda"
|
||||
search: "HomeOffice"
|
||||
- name: "WarmupFlat"
|
||||
calendar: "Agenda"
|
||||
search: "Warmup"
|
||||
```
|
||||
|
||||
This will create two binary sensors for the calendar name Agenda: "HomeOffice" and "WarmupFlat". Those sensors will be `on` if there is an ongoing event matching the regular expression specified in `search`. In custom calendars, events that last a whole day are taken into account.
|
||||
@ -133,7 +133,7 @@ All events of the calendars "private" and "holidays". Note that all day events a
|
||||
calendar:
|
||||
- platform: caldav
|
||||
url: https://nextcloud.example.com/remote.php/dav
|
||||
username: 'me'
|
||||
username: "me"
|
||||
password: !secret caldav
|
||||
calendars:
|
||||
- private
|
||||
@ -149,27 +149,27 @@ Custom calendar names are built from the main calendar + name of the custom cale
|
||||
calendar:
|
||||
- platform: caldav
|
||||
url: https://nextcloud.example.com/remote.php/dav
|
||||
username: 'me'
|
||||
username: "me"
|
||||
password: !secret caldav
|
||||
custom_calendars:
|
||||
- name: holiday
|
||||
calendar: work
|
||||
search: 'Holiday'
|
||||
search: "Holiday"
|
||||
- name: vacation
|
||||
calendar: vacation
|
||||
search: '.*'
|
||||
search: ".*"
|
||||
|
||||
# automations.yaml
|
||||
- id: wakeup
|
||||
alias: worktime wakeup
|
||||
trigger:
|
||||
platform: time
|
||||
at: '06:40:00'
|
||||
at: "06:40:00"
|
||||
action:
|
||||
- service: media_player.media_play
|
||||
entity_id: media_player.bedroom
|
||||
condition:
|
||||
- condition: state
|
||||
entity_id: calendar.work_holiday
|
||||
state: 'off'
|
||||
state: "off"
|
||||
```
|
||||
|
@ -210,7 +210,7 @@ Trigger as soon as an event starts:
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: calendar.calendar_name
|
||||
to: 'on'
|
||||
to: "on"
|
||||
```
|
||||
|
||||
By using specific text in the event title, you can set conditions to initiate particular automation flows on designated events while other events will be ignored.
|
||||
|
@ -19,8 +19,8 @@ the default library used by Visual Studio Code.
|
||||
|
||||
This is useful in testing changes on a local development install, or connecting
|
||||
to a production server to debug issues. It is possible to load the integration
|
||||
without the activating the debugger, but injecting it with a service call. This
|
||||
is particularly useful on a developer' production system as it does not impact
|
||||
without activating the debugger, but injecting it with a service call. This
|
||||
is particularly useful on a developer's production system as it does not impact
|
||||
performance when not injected.
|
||||
|
||||
## Configuration
|
||||
|
@ -186,7 +186,7 @@ Requesting support for additional devices requires the device model (can be acqu
|
||||
```yaml
|
||||
automation:
|
||||
- alias: 'Toggle lamp from dimmer'
|
||||
initial_state: 'on'
|
||||
initial_state: "on"
|
||||
trigger:
|
||||
platform: event
|
||||
event_type: deconz_event
|
||||
@ -198,7 +198,7 @@ automation:
|
||||
entity_id: light.lamp
|
||||
|
||||
- alias: 'Increase brightness of lamp from dimmer'
|
||||
initial_state: 'on'
|
||||
initial_state: "on"
|
||||
trigger:
|
||||
platform: event
|
||||
event_type: deconz_event
|
||||
@ -214,7 +214,7 @@ automation:
|
||||
{{ [bri+30, 249] | min }}
|
||||
|
||||
- alias: 'Decrease brightness of lamp from dimmer'
|
||||
initial_state: 'on'
|
||||
initial_state: "on"
|
||||
trigger:
|
||||
platform: event
|
||||
event_type: deconz_event
|
||||
@ -230,7 +230,7 @@ automation:
|
||||
{{ [bri-30, 0] | max }}
|
||||
|
||||
- alias: 'Turn lamp on when turning cube clockwise'
|
||||
initial_state: 'on'
|
||||
initial_state: "on"
|
||||
trigger:
|
||||
platform: event
|
||||
event_type: deconz_event
|
||||
|
@ -43,7 +43,7 @@ If you added or upgraded to a newer Alexa device and devices are not found, you
|
||||
|
||||
<div class='note'>
|
||||
|
||||
Logitech Harmony remotes cannot connect to this emulator via Android and iOS mobile applications because they require the physical button on the hub to be pressed. The [MyHarmony desktop software](https://support.myharmony.com/en-us/download) must be used with the original cable to connect it.
|
||||
Logitech Harmony remotes cannot connect to this emulator via Android and iOS mobile applications because they require the physical button on the hub to be pressed. The [MyHarmony desktop software](https://support.myharmony.com/en-us/download) must be used with the original cable to connect it, then "Scan for Devices".
|
||||
|
||||
</div>
|
||||
|
||||
|
@ -139,7 +139,7 @@ You can also use the `homeassistant.update_entity` service to update the sensor
|
||||
```yaml
|
||||
- id: update_morning_commute_sensor
|
||||
alias: "Commute - Update morning commute sensor"
|
||||
initial_state: 'on'
|
||||
initial_state: "on"
|
||||
trigger:
|
||||
- platform: time_pattern
|
||||
minutes: '/2'
|
||||
|
@ -157,7 +157,7 @@ You can also use the `homeassistant.update_entity` service to update the sensor
|
||||
automation:
|
||||
- id: update_morning_commute_sensor
|
||||
alias: "Commute - Update morning commute sensor"
|
||||
initial_state: 'on'
|
||||
initial_state: "on"
|
||||
trigger:
|
||||
- platform: time_pattern
|
||||
minutes: '/2'
|
||||
|
@ -32,7 +32,7 @@ sensor:
|
||||
- platform: history_stats
|
||||
name: Lamp ON today
|
||||
entity_id: light.my_lamp
|
||||
state: 'on'
|
||||
state: "on"
|
||||
type: time
|
||||
start: '{{ now().replace(hour=0, minute=0, second=0) }}'
|
||||
end: '{{ now() }}'
|
||||
|
@ -79,7 +79,7 @@ automation:
|
||||
condition:
|
||||
condition: state
|
||||
entity_id: input_boolean.notify_home
|
||||
state: 'on'
|
||||
state: "on"
|
||||
action:
|
||||
service: notify.pushbullet
|
||||
data:
|
||||
|
@ -129,7 +129,7 @@ automation:
|
||||
condition:
|
||||
- condition: state
|
||||
entity_id: light.some_light
|
||||
state: 'off'
|
||||
state: "off"
|
||||
action:
|
||||
- service: light.turn_on
|
||||
entity_id: light.some_light
|
||||
@ -145,7 +145,7 @@ automation:
|
||||
condition:
|
||||
- condition: state
|
||||
entity_id: light.some_light
|
||||
state: 'off'
|
||||
state: "off"
|
||||
action:
|
||||
- service: light.turn_on
|
||||
entity_id: light.some_light
|
||||
@ -390,7 +390,7 @@ automation:
|
||||
condition:
|
||||
- condition: state
|
||||
entity_id: light.some_light
|
||||
state: 'off'
|
||||
state: "off"
|
||||
action:
|
||||
- service: light.turn_on
|
||||
entity_id: light.some_light
|
||||
@ -406,7 +406,7 @@ automation:
|
||||
condition:
|
||||
- condition: state
|
||||
entity_id: light.some_light
|
||||
state: 'off'
|
||||
state: "off"
|
||||
action:
|
||||
- service: light.turn_on
|
||||
entity_id: light.some_light
|
||||
|
@ -204,7 +204,7 @@ Example automation using these IR codes to toggle a Sonoff plug.
|
||||
|
||||
```yaml
|
||||
# Example kira_sensor
|
||||
- id: '1583339338363'
|
||||
- id: "1583339338363"
|
||||
alias: Panasonic On
|
||||
description: Turn on sonoff s20 relay
|
||||
trigger:
|
||||
@ -217,8 +217,8 @@ Example automation using these IR codes to toggle a Sonoff plug.
|
||||
domain: switch
|
||||
entity_id: switch.plug2_relay
|
||||
type: turn_on
|
||||
- id: '1584035716024'
|
||||
alias: 'Panaxonic Off '
|
||||
- id: "1584035716024"
|
||||
alias: "Panaxonic Off "
|
||||
description: Turn off sonoff s20 relay
|
||||
trigger:
|
||||
- entity_id: sensor.kira_wireless
|
||||
|
@ -52,8 +52,7 @@ To use your KNX bus in your installation, add the following lines to your `confi
|
||||
knx:
|
||||
```
|
||||
|
||||
In order to make use of the various platforms KNX offers you will need to have the following configuration inside `configuration.yaml` depending on what
|
||||
platforms you intend to use:
|
||||
In order to make use of the various platforms that KNX offers you will need to add the relevant configuration sections to your setup. This could either all be in the Home Assistant main `configuration.yaml` file, or in a separate YAML file that you include in the main file or even be split into multiple dedicated files as shown below:
|
||||
|
||||
```yaml
|
||||
knx:
|
||||
@ -62,26 +61,27 @@ knx:
|
||||
sensor: !include knx_sensor.yaml
|
||||
cover: !include knx_cover.yaml
|
||||
light: !include knx_light.yaml
|
||||
climate: !include knx_climate.yaml
|
||||
notify: !include knx_notify.yaml
|
||||
scene: !include knx_scene.yaml
|
||||
```
|
||||
|
||||
Please check the dedicated platform documentation about how to configure them correctly.
|
||||
Please see the dedicated platform sections below about how to configure them correctly.
|
||||
|
||||
Optional, or if you want to use the XKNX abstraction also for other scripted tools outside of Home Assistant:
|
||||
Alternatively, if you want to use the [XKNX](https://xknx.io/) library abstraction (e.g., to re-use the configuration also for other scripted tools outside of Home Assistant):
|
||||
|
||||
```yaml
|
||||
knx:
|
||||
config_file: '/path/to/xknx.yaml'
|
||||
config_file: "/path/to/xknx.yaml"
|
||||
```
|
||||
|
||||
{% configuration %}
|
||||
config_file:
|
||||
description: The path for XKNX configuration file. See [xknx.io](https://xknx.io/configuration) for details
|
||||
description: The path for XKNX configuration file. See [xknx.io](https://xknx.io/configuration) for details.
|
||||
required: false
|
||||
type: string
|
||||
individual_address:
|
||||
description: The KNX individual address that shall be used for routing or if a tunnelling server doesn't assign an IA at connection.
|
||||
description: The KNX individual address (IA) that shall be used for routing or if a tunnelling server doesn't assign an IA at connection.
|
||||
required: false
|
||||
type: string
|
||||
default: "15.15.250"
|
||||
@ -143,7 +143,7 @@ Explicit connection via KNX/IP routing. This requires multicast communication to
|
||||
```yaml
|
||||
knx:
|
||||
routing:
|
||||
local_ip: '192.168.2.109'
|
||||
local_ip: "192.168.2.109"
|
||||
```
|
||||
|
||||
{% configuration %}
|
||||
@ -189,7 +189,7 @@ Service Data: {"address": "1/0/15", "payload": 0, "type": "temperature"}
|
||||
|
||||
{% configuration %}
|
||||
address:
|
||||
description: KNX group address
|
||||
description: KNX group address.
|
||||
type: string
|
||||
payload:
|
||||
description: Payload to send to the bus. When `type` is not set, raw bytes are sent. Integers are then treated as DPT 1/2/3 payloads. For DPTs > 6 bits send a list. Each value represents 1 octet (0-255). Pad with 0 to DPT byte length.
|
||||
@ -227,28 +227,28 @@ KNX integration is able to expose entity states or attributes to KNX bus. The in
|
||||
# Example configuration.yaml entry
|
||||
knx:
|
||||
expose:
|
||||
- type: 'temperature'
|
||||
entity_id: 'sensor.owm_temperature'
|
||||
address: '0/0/2'
|
||||
- type: 'string'
|
||||
address: '0/6/4'
|
||||
- type: "temperature"
|
||||
entity_id: "sensor.owm_temperature"
|
||||
address: "0/0/2"
|
||||
- type: "string"
|
||||
address: "0/6/4"
|
||||
entity_id: "sensor.owm_weather"
|
||||
- type: 'binary'
|
||||
entity_id: 'binary_sensor.kitchen_window'
|
||||
address: '0/6/5'
|
||||
- type: 'binary'
|
||||
entity_id: 'light.office'
|
||||
address: '0/3/0'
|
||||
default: False
|
||||
- type: 'percentU8'
|
||||
entity_id: 'light.office'
|
||||
attribute: 'brightness'
|
||||
- type: "binary"
|
||||
entity_id: "binary_sensor.kitchen_window"
|
||||
address: "0/6/5"
|
||||
- type: "binary"
|
||||
entity_id: "light.office"
|
||||
address: "0/3/0"
|
||||
default: false
|
||||
- type: "percentU8"
|
||||
entity_id: "light.office"
|
||||
attribute: "brightness"
|
||||
default: 0
|
||||
address: '0/3/1'
|
||||
- type: 'time'
|
||||
address: '0/0/1'
|
||||
- type: 'datetime'
|
||||
address: '0/0/23'
|
||||
address: "0/3/1"
|
||||
- type: "time"
|
||||
address: "0/0/1"
|
||||
- type: "datetime"
|
||||
address: "0/0/23"
|
||||
```
|
||||
|
||||
{% configuration %}
|
||||
@ -257,16 +257,16 @@ address:
|
||||
type: string
|
||||
required: true
|
||||
type:
|
||||
description: Type of the exposed value. Either 'binary', 'time', 'date', 'datetime' or any supported type of [KNX Sensor](#sensor) (e.g., "temperature" or "humidity").
|
||||
description: Type of the exposed value. Either `binary`, `time`, `date`, `datetime` or any supported type of [KNX Sensor](#sensor) (e.g., "temperature" or "humidity").
|
||||
type: string
|
||||
required: true
|
||||
entity_id:
|
||||
description: Entity id to be exposed. Not needed for types time, date and datetime.
|
||||
description: Entity ID to be exposed. Not needed for types `time`, `date` and `datetime`.
|
||||
type: string
|
||||
required: false
|
||||
attribute:
|
||||
description: Attribute of the entity that shall be sent to the KNX bus. If not set (or `None`) the state will be sent.
|
||||
Eg. for a light the state is eigther "on" or "off" - with attribute you can expose its "brightness".
|
||||
Eg. for a light the state is eigther "on" or "off". With `attribute` you can expose its "brightness".
|
||||
type: string
|
||||
required: false
|
||||
default:
|
||||
@ -288,7 +288,7 @@ Binary sensors are read-only. To write to the knx-bus configure an exposure [KNX
|
||||
knx:
|
||||
binary_sensor:
|
||||
- name: sensor1
|
||||
state_address: '6/0/2'
|
||||
state_address: "6/0/2"
|
||||
```
|
||||
|
||||
{% configuration %}
|
||||
@ -301,30 +301,30 @@ name:
|
||||
required: false
|
||||
type: string
|
||||
sync_state:
|
||||
description: Actively read the value from the bus. If `False` no GroupValueRead telegrams will be sent to the bus. `sync_state` can be set to `init` to just initialize state on startup, `expire <minutes>` to read the state from the KNX bus when no telegram was received for \<minutes\> or `every <minutes>` to update it regularly every \<minutes\>. Maximum value for \<minutes\> is 1440. If just a number is configured "expire"-behaviour is used. Defaults to `True` which is interpreted as "expire 60".
|
||||
description: Actively read the value from the bus. If `false` no GroupValueRead telegrams will be sent to the bus. `sync_state` can be set to `init` to just initialize state on startup, `expire <minutes>` to read the state from the KNX bus when no telegram was received for \<minutes\> or `every <minutes>` to update it regularly every \<minutes\>. Maximum value for \<minutes\> is 1440. If just a number is configured "expire"-behaviour is used. Defaults to `true` which is interpreted as "expire 60".
|
||||
required: false
|
||||
type: [boolean, string, integer]
|
||||
default: True
|
||||
default: true
|
||||
device_class:
|
||||
description: Sets the [class of the device](/integrations/binary_sensor/), changing the device state and icon that is displayed on the frontend.
|
||||
required: false
|
||||
type: string
|
||||
reset_after:
|
||||
description: Reset back to OFF state after specified seconds.
|
||||
description: Reset back to "off" state after specified seconds.
|
||||
required: false
|
||||
type: float
|
||||
invert:
|
||||
description: Invert the telegrams payload before processing. This is applied before `context_timeout` or `reset_after` is evaluated.
|
||||
required: false
|
||||
type: boolean
|
||||
default: False
|
||||
default: false
|
||||
ignore_internal_state:
|
||||
description: Specifies if telegrams should ignore the internal state and always trigger a Home Assistant state update.
|
||||
required: false
|
||||
type: boolean
|
||||
default: False
|
||||
default: false
|
||||
context_timeout:
|
||||
description: The time in seconds between multiple identical telegram payloads would count towards the internal counter that is used for automations. Ex. You have automations in place that trigger your lights on button press and another set of lights if you click that button twice. This setting defines the time that a second button press would count toward, so if you set this 3.0 you can take up to 3 seconds in order to trigger the second button press. If set `ignore_internal_state` will be set to `True` internally. Maximum value is 10.0.
|
||||
description: The time in seconds between multiple identical telegram payloads would count towards the internal counter that is used for automations. Ex. You have automations in place that trigger your lights on button press and another set of lights if you click that button twice. This setting defines the time that a second button press would count toward, so if you set this 3.0 you can take up to 3 seconds in order to trigger the second button press. If set `ignore_internal_state` will be set to `true` internally. Maximum value is 10.0.
|
||||
required: false
|
||||
type: float
|
||||
default: None
|
||||
@ -348,7 +348,7 @@ automation:
|
||||
condition:
|
||||
- condition: state
|
||||
entity_id: binary_sensor.cover_abstell
|
||||
state: 'on'
|
||||
state: "on"
|
||||
action:
|
||||
- entity_id: light.hue_color_lamp_1
|
||||
service: light.turn_on
|
||||
@ -361,7 +361,7 @@ automation:
|
||||
condition:
|
||||
- condition: state
|
||||
entity_id: binary_sensor.cover_abstell
|
||||
state: 'on'
|
||||
state: "on"
|
||||
action:
|
||||
- entity_id: light.hue_bloom_1
|
||||
service: homeassistant.turn_on
|
||||
@ -401,12 +401,12 @@ To use your KNX thermostats in your installation, add the following lines to you
|
||||
knx:
|
||||
climate:
|
||||
- name: HASS-Kitchen.Temperature
|
||||
temperature_address: '5/1/1'
|
||||
setpoint_shift_address: '5/1/2'
|
||||
setpoint_shift_state_address: '5/1/3'
|
||||
target_temperature_state_address: '5/1/4'
|
||||
operation_mode_address: '5/1/5'
|
||||
operation_mode_state_address: '5/1/6'
|
||||
temperature_address: "5/1/1"
|
||||
setpoint_shift_address: "5/1/2"
|
||||
setpoint_shift_state_address: "5/1/3"
|
||||
target_temperature_state_address: "5/1/4"
|
||||
operation_mode_address: "5/1/5"
|
||||
operation_mode_state_address: "5/1/6"
|
||||
```
|
||||
|
||||
Alternatively, if your device has dedicated binary group addresses for frost/night/comfort mode:
|
||||
@ -416,33 +416,32 @@ Alternatively, if your device has dedicated binary group addresses for frost/nig
|
||||
knx:
|
||||
climate:
|
||||
- name: HASS-Kitchen.Temperature
|
||||
temperature_address: '5/1/1'
|
||||
setpoint_shift_address: '5/1/2'
|
||||
setpoint_shift_state_address: '5/1/3'
|
||||
target_temperature_state_address: '5/1/4'
|
||||
operation_mode_frost_protection_address: '5/1/5'
|
||||
operation_mode_night_address: '5/1/6'
|
||||
operation_mode_comfort_address: '5/1/7'
|
||||
operation_mode_state_address: '5/1/8'
|
||||
temperature_address: "5/1/1"
|
||||
setpoint_shift_address: "5/1/2"
|
||||
setpoint_shift_state_address: "5/1/3"
|
||||
target_temperature_state_address: "5/1/4"
|
||||
operation_mode_frost_protection_address: "5/1/5"
|
||||
operation_mode_night_address: "5/1/6"
|
||||
operation_mode_comfort_address: "5/1/7"
|
||||
operation_mode_state_address: "5/1/8"
|
||||
```
|
||||
|
||||
If your device doesn't support setpoint_shift calculations (i.e., if you don't provide a `setpoint_shift_address` value) please set the `min_temp` and `max_temp`
|
||||
attributes of the climate device to avoid issues with exceeding valid temperature values in the frontend. Please do also make sure to add the `target_temperature_address`
|
||||
to the configuration in this case.:
|
||||
attributes of the climate device to avoid issues with exceeding valid temperature values in the frontend. Please do also make sure to add the `target_temperature_address` to the configuration in this case.:
|
||||
|
||||
```yaml
|
||||
# Example configuration.yaml entry
|
||||
knx:
|
||||
climate:
|
||||
- name: HASS-Kitchen.Temperature
|
||||
temperature_address: '5/1/2'
|
||||
target_temperature_address: '5/1/4'
|
||||
target_temperature_state_address: '5/1/1'
|
||||
operation_mode_frost_protection_address: '5/1/5'
|
||||
operation_mode_night_address: '5/1/6'
|
||||
operation_mode_comfort_address: '5/1/7'
|
||||
operation_mode_state_address: '5/1/8'
|
||||
operation_mode_standby_address: '5/1/9'
|
||||
temperature_address: "5/1/2"
|
||||
target_temperature_address: "5/1/4"
|
||||
target_temperature_state_address: "5/1/1"
|
||||
operation_mode_frost_protection_address: "5/1/5"
|
||||
operation_mode_night_address: "5/1/6"
|
||||
operation_mode_comfort_address: "5/1/7"
|
||||
operation_mode_state_address: "5/1/8"
|
||||
operation_mode_standby_address: "5/1/9"
|
||||
min_temp: 7.0
|
||||
max_temp: 32.0
|
||||
```
|
||||
@ -459,39 +458,39 @@ Example:
|
||||
knx:
|
||||
climate:
|
||||
- name: HASS-Kitchen.Temperature
|
||||
temperature_address: '5/1/1'
|
||||
setpoint_shift_address: '5/1/2'
|
||||
setpoint_shift_state_address: '5/1/3'
|
||||
setpoint_shift_mode: 'DPT9002'
|
||||
target_temperature_state_address: '5/1/4'
|
||||
operation_mode_address: '5/1/5'
|
||||
operation_mode_state_address: '5/1/6'
|
||||
temperature_address: "5/1/1"
|
||||
setpoint_shift_address: "5/1/2"
|
||||
setpoint_shift_state_address: "5/1/3"
|
||||
setpoint_shift_mode: "DPT9002"
|
||||
target_temperature_state_address: "5/1/4"
|
||||
operation_mode_address: "5/1/5"
|
||||
operation_mode_state_address: "5/1/6"
|
||||
```
|
||||
|
||||
`operation_mode_frost_protection_address` / `operation_mode_night_address` / `operation_mode_comfort_address` / `operation_mode_standby_address` are not necessary if `operation_mode_address` is specified.
|
||||
If the actor doesn't support explicit state communication objects the *_state_address can be configured with the same group address as the writeable *_address. The Read-Flag for the *_state_address communication object has to be set in ETS to support initial reading e.g., when starting Home Assistant.
|
||||
If the actor doesn't support explicit state communication objects the `*_state_address` can be configured with the same group address as the writeable `*_address`. The read flag for the `*_state_address` communication object has to be set in ETS to support initial reading e.g., when starting Home Assistant.
|
||||
|
||||
The following values are valid for the `heat_cool_address` and the `heat_cool_state_address`:
|
||||
|
||||
- 0 (cooling)
|
||||
- 1 (heating)
|
||||
- `0` (cooling)
|
||||
- `1` (heating)
|
||||
|
||||
The following values are valid for the `hvac_mode` attribute:
|
||||
The following values are valid for the Home Assistant [Climate](/integrations/climate/) `hvac_mode` attribute. Supported values for your KNX thermostats can be specified via `controller_modes` configuration variable:
|
||||
|
||||
- Off (maps internally to HVAC_MODE_OFF within Home Assistant)
|
||||
- Auto (maps internally to HVAC_MODE_AUTO within Home Assistant)
|
||||
- Heat (maps internally to HVAC_MDOE_HEAT within Home Assistant)
|
||||
- Cool (maps internally to HVAC_MDOE_COOL within Home Assistant)
|
||||
- Fan only (maps internally to HVAC_MODE_FAN_ONLY within Home Assistant)
|
||||
- Dry (maps internally to HVAC_MODE_DRY within Home Assistant)
|
||||
- `Off` (maps internally to `HVAC_MODE_OFF` within Home Assistant)
|
||||
- `Auto` (maps internally to `HVAC_MODE_AUTO` within Home Assistant)
|
||||
- `Heat` (maps internally to `HVAC_MDOE_HEAT` within Home Assistant)
|
||||
- `Cool` (maps internally to `HVAC_MDOE_COOL` within Home Assistant)
|
||||
- `Fan only` (maps internally to `HVAC_MODE_FAN_ONLY` within Home Assistant)
|
||||
- `Dry` (maps internally to `HVAC_MODE_DRY` within Home Assistant)
|
||||
|
||||
The following presets are valid for the `preset_mode` attribute:
|
||||
The following presets are valid for the Home Assistant [Climate](/integrations/climate/) `preset_mode` attribute. Supported values for your KNX thermostats can be specified via `operation_modes` configuration variable:
|
||||
|
||||
- Auto (maps internally to PRESET_NONE within Home Assistant)
|
||||
- Comfort (maps internally to PRESET_COMFORT within Home Assistant)
|
||||
- Standby (maps internally to PRESET_AWAY within Home Assistant)
|
||||
- Night (maps internally to PRESET_SLEEP within Home Assistant)
|
||||
- Frost Protection (maps internally to PRESET_ECO within Home Assistant)
|
||||
- `Auto` (maps internally to `PRESET_NONE` within Home Assistant)
|
||||
- `Comfort` (maps internally to `PRESET_COMFORT` within Home Assistant)
|
||||
- `Standby` (maps internally to `PRESET_AWAY` within Home Assistant)
|
||||
- `Night` (maps internally to `PRESET_SLEEP` within Home Assistant)
|
||||
- `Frost` Protection (maps internally to `PRESET_ECO` within Home Assistant)
|
||||
|
||||
{% configuration %}
|
||||
name:
|
||||
@ -527,7 +526,6 @@ setpoint_shift_state_address:
|
||||
setpoint_shift_mode:
|
||||
description: Defines the internal device DPT used. Either 'DPT6010' or 'DPT9002'.
|
||||
required: false
|
||||
default: 0.5
|
||||
type: string
|
||||
default: DPT6010
|
||||
setpoint_shift_min:
|
||||
@ -561,7 +559,7 @@ controller_mode_address:
|
||||
required: false
|
||||
type: string
|
||||
controller_mode_state_address:
|
||||
description: KNX address for reading HVAC Control Mode. *DPT 20.105*
|
||||
description: KNX address for reading HVAC control mode. *DPT 20.105*
|
||||
required: false
|
||||
type: string
|
||||
heat_cool_address:
|
||||
@ -630,11 +628,11 @@ To use your KNX covers in your installation, add the following lines to your top
|
||||
knx:
|
||||
cover:
|
||||
- name: "Kitchen.Shutter"
|
||||
move_long_address: '3/0/0'
|
||||
move_short_address: '3/0/1'
|
||||
stop_address: '3/0/4'
|
||||
position_address: '3/0/3'
|
||||
position_state_address: '3/0/2'
|
||||
move_long_address: "3/0/0"
|
||||
move_short_address: "3/0/1"
|
||||
stop_address: "3/0/4"
|
||||
position_address: "3/0/3"
|
||||
position_state_address: "3/0/2"
|
||||
travelling_time_down: 51
|
||||
travelling_time_up: 61
|
||||
```
|
||||
@ -684,12 +682,12 @@ travelling_time_up:
|
||||
default: 25
|
||||
type: integer
|
||||
invert_position:
|
||||
description: Set this to true if your actuator report fully closed as 0% in KNX.
|
||||
description: Set this to `true` if your actuator report fully closed as 0% in KNX.
|
||||
required: false
|
||||
default: false
|
||||
type: boolean
|
||||
invert_angle:
|
||||
description: Set this to true if your actuator reports tilt fully closed as 0% in KNX.
|
||||
description: Set this to `true` if your actuator reports tilt fully closed as 0% in KNX.
|
||||
required: false
|
||||
default: false
|
||||
type: boolean
|
||||
@ -703,8 +701,8 @@ device_class:
|
||||
|
||||
The `knx light` integration is used as an interface to control KNX actuators for lighting applications such as:
|
||||
|
||||
- switching actuators
|
||||
- dimming actuators
|
||||
- Switching actuators
|
||||
- Dimming actuators
|
||||
- LED controllers
|
||||
- DALI gateways
|
||||
|
||||
@ -714,8 +712,8 @@ To use your KNX light in your installation, add the following lines to your top
|
||||
# Example configuration.yaml entry
|
||||
knx:
|
||||
light:
|
||||
- name: 'kitchen'
|
||||
address: '1/0/9'
|
||||
- name: "kitchen"
|
||||
address: "1/0/9"
|
||||
```
|
||||
|
||||
{% configuration %}
|
||||
@ -809,12 +807,12 @@ color_temperature_mode:
|
||||
type: string
|
||||
default: absolute
|
||||
min_kelvin:
|
||||
description: Warmest possible color temperature in Kelvin. (Used in combination with *color_temperature_address*)
|
||||
description: Warmest possible color temperature in Kelvin. Used in combination with `color_temperature_address`.
|
||||
required: false
|
||||
type: integer
|
||||
default: 2700
|
||||
max_kelvin:
|
||||
description: Coldest possible color temperature in Kelvin. (Used in combination with *color_temperature_address*)
|
||||
description: Coldest possible color temperature in Kelvin. Used in combination with `color_temperature_address`.
|
||||
required: false
|
||||
type: integer
|
||||
default: 6000
|
||||
@ -833,36 +831,36 @@ knx:
|
||||
light:
|
||||
# dimmable light
|
||||
- name: Bedroom-Light-1
|
||||
address: '1/0/9'
|
||||
state_address: '1/1/9'
|
||||
brightness_address: '1/2/9'
|
||||
brightness_state_address: '1/3/9'
|
||||
address: "1/0/9"
|
||||
state_address: "1/1/9"
|
||||
brightness_address: "1/2/9"
|
||||
brightness_state_address: "1/3/9"
|
||||
#
|
||||
# RGB light
|
||||
- name: Bathroom-Light-1
|
||||
address: '1/0/9'
|
||||
state_address: '1/1/9'
|
||||
brightness_address: '1/2/9'
|
||||
brightness_state_address: '1/3/9'
|
||||
color_address: '1/4/9'
|
||||
color_state_address: '1/5/9'
|
||||
address: "1/0/9"
|
||||
state_address: "1/1/9"
|
||||
brightness_address: "1/2/9"
|
||||
brightness_state_address: "1/3/9"
|
||||
color_address: "1/4/9"
|
||||
color_state_address: "1/5/9"
|
||||
#
|
||||
# tunable white light
|
||||
- name: Office-Light-1
|
||||
address: '1/0/21'
|
||||
state_address: '1/1/21'
|
||||
brightness_address: '1/2/21'
|
||||
brightness_state_address: '1/3/21'
|
||||
color_temperature_address: '1/4/21'
|
||||
color_temperature_state_address: '1/5/21'
|
||||
address: "1/0/21"
|
||||
state_address: "1/1/21"
|
||||
brightness_address: "1/2/21"
|
||||
brightness_state_address: "1/3/21"
|
||||
color_temperature_address: "1/4/21"
|
||||
color_temperature_state_address: "1/5/21"
|
||||
color_temperature_mode: absolute
|
||||
min_kelvin: 2550
|
||||
max_kelvin: 6200
|
||||
#
|
||||
# actuator without dedicated state communication object
|
||||
- name: Cellar-Light-1
|
||||
address: '1/0/5'
|
||||
state_address: '1/0/5'
|
||||
address: "1/0/5"
|
||||
state_address: "1/0/5"
|
||||
```
|
||||
|
||||
## Notify
|
||||
@ -873,7 +871,7 @@ The `knx` notify platform allows you to send notifications to [KNX](https://www.
|
||||
knx:
|
||||
notify:
|
||||
- name: Alarm
|
||||
address: '5/1/10'
|
||||
address: "5/1/10"
|
||||
```
|
||||
|
||||
{% configuration %}
|
||||
@ -906,7 +904,7 @@ address:
|
||||
required: true
|
||||
type: string
|
||||
scene_number:
|
||||
description: KNX scene number to be activated. ( 1 ... 64 )
|
||||
description: KNX scene number to be activated (range 1..64 ).
|
||||
required: true
|
||||
type: integer
|
||||
name:
|
||||
@ -926,7 +924,7 @@ Sensors are read-only. To write to the knx-bus configure an exposure [KNX Integr
|
||||
knx:
|
||||
sensor:
|
||||
- name: Heating.Valve1
|
||||
state_address: '2/0/0'
|
||||
state_address: "2/0/0"
|
||||
```
|
||||
|
||||
In order to actively read the sensor data from the bus every 30 minutes you can add the following lines to your `configuration.yaml`:
|
||||
@ -936,7 +934,7 @@ In order to actively read the sensor data from the bus every 30 minutes you can
|
||||
knx:
|
||||
sensor:
|
||||
- name: Heating.Valve1
|
||||
state_address: '2/0/0'
|
||||
state_address: "2/0/0"
|
||||
sync_state: every 30
|
||||
```
|
||||
|
||||
@ -950,10 +948,10 @@ name:
|
||||
required: false
|
||||
type: string
|
||||
sync_state:
|
||||
description: Actively read the value from the bus. If `False` no GroupValueRead telegrams will be sent to the bus. `sync_state` can be set to `init` to just initialize state on startup, `expire <minutes>` to read the state from the KNX bus when no telegram was received for \<minutes\> or `every <minutes>` to update it regularly every \<minutes\>. Maximum value for \<minutes\> is 1440. If just a number is configured "expire"-behaviour is used. Defaults to `True` which is interpreted as "expire 60".
|
||||
description: Actively read the value from the bus. If `false` no GroupValueRead telegrams will be sent to the bus. `sync_state` can be set to `init` to just initialize state on startup, `expire <minutes>` to read the state from the KNX bus when no telegram was received for \<minutes\> or `every <minutes>` to update it regularly every \<minutes\>. Maximum value for \<minutes\> is 1440. If just a number is configured "expire"-behaviour is used. Defaults to `true` which is interpreted as "expire 60".
|
||||
required: false
|
||||
type: [boolean, string, integer]
|
||||
default: True
|
||||
default: true
|
||||
type:
|
||||
description: A type from the following table must be defined. The DPT of the group address should match the expected KNX DPT to be parsed correctly.
|
||||
required: true
|
||||
@ -962,7 +960,7 @@ always_callback:
|
||||
description: Defines if telegrams with equal payload as the previously received telegram should trigger a state update within Home Assistant.
|
||||
required: false
|
||||
type: boolean
|
||||
default: False
|
||||
default: false
|
||||
{% endconfiguration %}
|
||||
|
||||
### Value Types
|
||||
@ -1114,13 +1112,13 @@ always_callback:
|
||||
knx:
|
||||
sensor:
|
||||
- name: Heating.Valve1
|
||||
state_address: '2/0/0'
|
||||
state_address: "2/0/0"
|
||||
sync_state: init
|
||||
type: 'percent'
|
||||
type: "percent"
|
||||
- name: Kitchen.Temperature
|
||||
state_address: '6/2/1'
|
||||
state_address: "6/2/1"
|
||||
sync_state: every 60
|
||||
type: 'temperature'
|
||||
type: "temperature"
|
||||
```
|
||||
|
||||
## Switch
|
||||
@ -1131,7 +1129,7 @@ The `knx` switch platform is used as an interface to switching actuators.
|
||||
knx:
|
||||
switch:
|
||||
- name: Kitchen.Coffee
|
||||
address: '1/1/6'
|
||||
address: "1/1/6"
|
||||
```
|
||||
|
||||
{% configuration %}
|
||||
@ -1152,7 +1150,7 @@ invert:
|
||||
description: Invert the telegrams payload before processing or sending.
|
||||
required: false
|
||||
type: boolean
|
||||
default: False
|
||||
default: false
|
||||
{% endconfiguration %}
|
||||
|
||||
Some KNX devices can change their state internally without any messages on the KNX bus, e.g., if you configure a timer on a channel. The optional `state_address` can be used to inform Home Assistant about these state changes. If a KNX message is seen on the bus addressed to the given state address, this will overwrite the state of the switch object.
|
||||
@ -1181,8 +1179,8 @@ knx:
|
||||
address_day_night: "7/0/8"
|
||||
address_air_pressure: "7/0/9"
|
||||
address_humidity: "7/0/10"
|
||||
expose_sensors: False
|
||||
sync_state: True
|
||||
expose_sensors: false
|
||||
sync_state: true
|
||||
```
|
||||
|
||||
{% configuration %}
|
||||
@ -1240,13 +1238,13 @@ address_humidity:
|
||||
required: false
|
||||
type: string
|
||||
expose_sensors:
|
||||
description: If true, exposes all sensor values as dedicated sensors to HA.
|
||||
description: If true, exposes all sensor values as dedicated sensors to Home Assistant.
|
||||
required: false
|
||||
type: boolean
|
||||
default: False
|
||||
default: false
|
||||
sync_state:
|
||||
description: Actively read the value from the bus. If `False` no GroupValueRead telegrams will be sent to the bus.
|
||||
description: Actively read the value from the bus. If `false` no GroupValueRead telegrams will be sent to the bus.
|
||||
required: false
|
||||
type: boolean
|
||||
default: True
|
||||
default: true
|
||||
{% endconfiguration %}
|
||||
|
@ -261,19 +261,19 @@ konnected:
|
||||
binary_sensors:
|
||||
- zone: 1
|
||||
type: door
|
||||
name: 'Front Door'
|
||||
name: "Front Door"
|
||||
- zone: 2
|
||||
type: smoke
|
||||
name: 'Bedroom Smoke Detector'
|
||||
name: "Bedroom Smoke Detector"
|
||||
inverse: true
|
||||
- zone: 3
|
||||
type: motion
|
||||
name: 'Test Motion'
|
||||
name: "Test Motion"
|
||||
switches:
|
||||
- zone: out
|
||||
name: siren
|
||||
- zone: 5
|
||||
name: 'Beep Beep'
|
||||
name: "Beep Beep"
|
||||
momentary: 65
|
||||
pause: 55
|
||||
repeat: 4
|
||||
|
@ -115,18 +115,18 @@ To add a notification sound, icon, cycles, or priority override, it has to be do
|
||||
trigger:
|
||||
platform: state
|
||||
entity_id: device_tracker.son_mobile
|
||||
from: 'not_home'
|
||||
to: 'school'
|
||||
from: "not_home"
|
||||
to: "school"
|
||||
action:
|
||||
service: notify.lametric
|
||||
data:
|
||||
message: "Son has arrived at school!"
|
||||
data:
|
||||
sound: 'notification'
|
||||
icon: 'i51'
|
||||
sound: "notification"
|
||||
icon: "i51"
|
||||
cycles: 0
|
||||
priority: 'critical'
|
||||
icon_type: 'none'
|
||||
priority: "critical"
|
||||
icon_type: "none"
|
||||
```
|
||||
|
||||
### Only notify specific device
|
||||
@ -140,8 +140,8 @@ If you have more than one La Metric device, you can specify which will receive t
|
||||
message: "Son has arrived at school!"
|
||||
target: "Office LaMetric"
|
||||
data:
|
||||
sound: 'notification'
|
||||
icon: 'i51'
|
||||
sound: "notification"
|
||||
icon: "i51"
|
||||
```
|
||||
|
||||
If target is not specified, all LaMetric devices will be notified.
|
||||
|
@ -183,7 +183,7 @@ climates:
|
||||
description: "Measurement unit ([VAR_UNIT](#variables-and-units))."
|
||||
required: false
|
||||
type: string
|
||||
default: 'celsius'
|
||||
default: "celsius"
|
||||
min_temp:
|
||||
description: "Minimum target temperature."
|
||||
required: false
|
||||
@ -302,7 +302,7 @@ sensors:
|
||||
description: "Measurement unit ([VAR_UNIT](#variables-and-units))."
|
||||
required: false
|
||||
type: string
|
||||
default: 'native'
|
||||
default: "native"
|
||||
|
||||
switches:
|
||||
description: List of your switches.
|
||||
|
@ -53,7 +53,7 @@ However, if you want to fully control a light effect, you have to use its dedica
|
||||
```yaml
|
||||
script:
|
||||
colorloop_start:
|
||||
alias: 'Start colorloop'
|
||||
alias: "Start colorloop"
|
||||
sequence:
|
||||
- service: lifx.effect_colorloop
|
||||
data:
|
||||
|
@ -118,9 +118,9 @@ entity_id: media_player.chromecast
|
||||
service: media_player.play_media
|
||||
data:
|
||||
media_content_type: music
|
||||
media_content_id: 'https://fake-home-assistant.io.stream/aac'
|
||||
media_content_id: "https://fake-home-assistant.io.stream/aac"
|
||||
extra:
|
||||
thumb: 'https://brands.home-assistant.io/_/homeassistant/logo.png'
|
||||
thumb: "https://brands.home-assistant.io/_/homeassistant/logo.png"
|
||||
title: HomeAssitantRadio
|
||||
```
|
||||
|
||||
|
@ -42,8 +42,8 @@ To add Météo-France to your installation, add the following to your `configura
|
||||
```yaml
|
||||
# Example configuration.yaml entry for 2 cities
|
||||
meteo_france:
|
||||
- city: '76000'
|
||||
- city: 'Auch'
|
||||
- city: "76000"
|
||||
- city: "Auch"
|
||||
```
|
||||
|
||||
{% configuration %}
|
||||
|
@ -21,8 +21,8 @@ To enable this binary sensor, add the following lines to your `configuration.yam
|
||||
```yaml
|
||||
binary_sensor:
|
||||
- platform: meteoalarm
|
||||
country: 'NL'
|
||||
province: 'Groningen'
|
||||
country: "NL"
|
||||
province: "Groningen"
|
||||
```
|
||||
|
||||
{% configuration %}
|
||||
@ -43,7 +43,7 @@ language:
|
||||
description: "The 2 letters of your language, please be aware that this is only possible in the current country. So 'ne' is only possible in Netherlands. Possible options are: bu, bs, ce, da, de, ee, en, es, ga, ca, su, fr, gr, he, hr, ma, is, it, li, la, sr, mk, ma, ne, no, po, pt, ro, cp, sv, sl, eu."
|
||||
required: false
|
||||
type: string
|
||||
default: 'en'
|
||||
default: "en"
|
||||
{% endconfiguration %}
|
||||
|
||||
|
||||
|
@ -67,7 +67,7 @@ via the Frontend, a script, or the REST API.
|
||||
```yaml
|
||||
service: microsoft_face.create_group
|
||||
data:
|
||||
name: 'Family'
|
||||
name: "Family"
|
||||
```
|
||||
|
||||
- *microsoft_face.create_person*
|
||||
@ -77,7 +77,7 @@ data:
|
||||
service: microsoft_face.create_person
|
||||
data:
|
||||
group: family
|
||||
name: 'Hans Maier'
|
||||
name: "Hans Maier"
|
||||
```
|
||||
|
||||
You need to add an image of a person. You can add multiple images for every
|
||||
@ -90,7 +90,7 @@ send a local image to your Azure resource.
|
||||
service: microsoft_face.face_person
|
||||
data:
|
||||
group: family
|
||||
name: 'Hans Maier'
|
||||
name: "Hans Maier"
|
||||
camera_entity: camera.door
|
||||
```
|
||||
|
||||
|
@ -57,7 +57,7 @@ To use your Mi Flora plant sensor in your installation, add the following to you
|
||||
# Example configuration.yaml entry
|
||||
sensor:
|
||||
- platform: miflora
|
||||
mac: 'xx:xx:xx:xx:xx:xx'
|
||||
mac: "xx:xx:xx:xx:xx:xx"
|
||||
monitored_conditions:
|
||||
- moisture
|
||||
```
|
||||
@ -122,7 +122,7 @@ A full configuration example could look like the one below:
|
||||
# Example configuration.yaml entry
|
||||
sensor:
|
||||
- platform: miflora
|
||||
mac: 'xx:xx:xx:xx:xx:xx'
|
||||
mac: "xx:xx:xx:xx:xx:xx"
|
||||
name: Flower 1
|
||||
force_update: true
|
||||
median: 3
|
||||
|
@ -92,13 +92,13 @@ automation:
|
||||
event_data:
|
||||
event_type: created
|
||||
action:
|
||||
- delay: '00:00:01'
|
||||
- delay: "00:00:01"
|
||||
- service: minio.put
|
||||
data:
|
||||
file_path: "{{ trigger.event.data.path }}"
|
||||
bucket: "camera-image-object-detection"
|
||||
key: "input/{{ now().year }}/{{ (now().month | string).zfill(2) }}/{{ (now().day | string).zfill(2) }}/{{ trigger.event.data.file }}"
|
||||
- delay: '00:00:01'
|
||||
- delay: "00:00:01"
|
||||
- service: shell_command.remove_file
|
||||
data:
|
||||
file: "{{ trigger.event.data.path }}"
|
||||
|
@ -49,7 +49,7 @@ To use your Mi Temperature and Humidity sensor in your installation, add the fol
|
||||
# Example configuration.yaml entry
|
||||
sensor:
|
||||
- platform: mitemp_bt
|
||||
mac: 'xx:xx:xx:xx:xx:xx'
|
||||
mac: "xx:xx:xx:xx:xx:xx"
|
||||
monitored_conditions:
|
||||
- temperature
|
||||
```
|
||||
@ -118,7 +118,7 @@ A full configuration example could look like the one below:
|
||||
# Example configuration.yaml entry
|
||||
sensor:
|
||||
- platform: mitemp_bt
|
||||
mac: 'xx:xx:xx:xx:xx:xx'
|
||||
mac: "xx:xx:xx:xx:xx:xx"
|
||||
name: Kids Room Temp
|
||||
force_update: true
|
||||
median: 1
|
||||
|
@ -77,7 +77,7 @@ automation:
|
||||
action:
|
||||
service: notify.notify
|
||||
data:
|
||||
message: 'Call from {{ state_attr('sensor.modem_callerid', 'cid_name') }} at {{ state_attr('sensor.modem_callerid', 'cid_number') }} '
|
||||
message: "Call from {{ state_attr('sensor.modem_callerid', 'cid_name') }} at {{ state_attr('sensor.modem_callerid', 'cid_number') }} "
|
||||
- alias: Notify CallerID webui
|
||||
trigger:
|
||||
platform: state
|
||||
@ -87,7 +87,7 @@ automation:
|
||||
service: persistent_notification.create
|
||||
data:
|
||||
title: "Call from"
|
||||
message: '{{ state_attr('sensor.modem_callerid', 'cid_time').strftime("%I:%M %p") }} {{ state_attr('sensor.modem_callerid', 'cid_name') }} {{ state_attr('sensor.modem_callerid', 'cid_number') }} '
|
||||
message: "{{ state_attr('sensor.modem_callerid', 'cid_time').strftime("%I:%M %p") }} {{ state_attr('sensor.modem_callerid', 'cid_name') }} {{ state_attr('sensor.modem_callerid', 'cid_number') }} "
|
||||
- alias: Say CallerID
|
||||
trigger:
|
||||
platform: state
|
||||
@ -96,7 +96,7 @@ automation:
|
||||
action:
|
||||
service: tts.google_say
|
||||
data:
|
||||
message: 'Call from {{ state_attr('sensor.modem_callerid', 'cid_name') }}'
|
||||
message: "Call from {{ state_attr('sensor.modem_callerid', 'cid_name') }}"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
@ -74,14 +74,14 @@ sensor:
|
||||
- station: Hauptbahnhof
|
||||
name: Hbf
|
||||
destinations: ['München Flughafen Terminal','Markt Schwaben']
|
||||
products: 'S-Bahn'
|
||||
products: "S-Bahn"
|
||||
timeoffset: 2
|
||||
- station: Sendlinger Tor
|
||||
lines: ['U2','U8']
|
||||
number: 5
|
||||
- station: Scheidplatz
|
||||
products: ['U-Bahn']
|
||||
directions: '1'
|
||||
directions: "1"
|
||||
```
|
||||
|
||||
The first sensor will return S-Bahn departures to Munich Airport or Markt Schwaben that are at least 2 minutes away.
|
||||
|
@ -20,7 +20,7 @@ Integrate your Serial, Ethernet (LAN) or MQTT MySensors Gateway by adding the fo
|
||||
# Example configuration.yaml entry
|
||||
mysensors:
|
||||
gateways:
|
||||
- device: '/dev/ttyUSB0'
|
||||
- device: "/dev/ttyUSB0"
|
||||
```
|
||||
|
||||
{% configuration %}
|
||||
@ -52,12 +52,12 @@ mysensors:
|
||||
description: Set the prefix of the MQTT topic for messages coming from the MySensors gateway in to Home Assistant.
|
||||
required: false
|
||||
type: string
|
||||
default: ''
|
||||
default: ""
|
||||
topic_out_prefix:
|
||||
description: Set the prefix of the MQTT topic for messages going from Home Assistant out to the MySensors gateway.
|
||||
required: false
|
||||
type: string
|
||||
default: ''
|
||||
default: ""
|
||||
nodes:
|
||||
description: A mapping of node ids to node settings, e.g., custom name.
|
||||
required: false
|
||||
@ -76,7 +76,7 @@ mysensors:
|
||||
description: Specifies the MySensors protocol version to use. Supports versions 1.4 to 2.3.
|
||||
required: false
|
||||
type: string
|
||||
default: '1.4'
|
||||
default: "1.4"
|
||||
optimistic:
|
||||
description: Enable or disable optimistic mode for actuators (switch/light). Set this to true if no state feedback from actuators is possible. Home Assistant will assume that the command succeeded and change state.
|
||||
required: false
|
||||
@ -116,28 +116,28 @@ The MQTT gateway requires MySensors version 2.0+ and only the MQTT client gatewa
|
||||
# Example configuration.yaml entry
|
||||
mysensors:
|
||||
gateways:
|
||||
- device: '/dev/ttyUSB0'
|
||||
persistence_file: 'path/mysensors.json'
|
||||
- device: "/dev/ttyUSB0"
|
||||
persistence_file: "path/mysensors.json"
|
||||
baud_rate: 38400
|
||||
nodes:
|
||||
1:
|
||||
name: 'kitchen'
|
||||
name: "kitchen"
|
||||
3:
|
||||
name: 'living_room'
|
||||
- device: '/dev/ttyACM0'
|
||||
persistence_file: 'path/mysensors2.json'
|
||||
name: "living_room"
|
||||
- device: "/dev/ttyACM0"
|
||||
persistence_file: "path/mysensors2.json"
|
||||
baud_rate: 115200
|
||||
- device: '192.168.1.18'
|
||||
persistence_file: 'path/mysensors3.json'
|
||||
- device: "192.168.1.18"
|
||||
persistence_file: "path/mysensors3.json"
|
||||
tcp_port: 5003
|
||||
- device: mqtt
|
||||
persistence_file: 'path/mysensors4.json'
|
||||
topic_in_prefix: 'mygateway1-out'
|
||||
topic_out_prefix: 'mygateway1-in'
|
||||
persistence_file: "path/mysensors4.json"
|
||||
topic_in_prefix: "mygateway1-out"
|
||||
topic_out_prefix: "mygateway1-in"
|
||||
optimistic: false
|
||||
persistence: true
|
||||
retain: true
|
||||
version: '2.0'
|
||||
version: "2.0"
|
||||
```
|
||||
|
||||
### Presentation
|
||||
|
@ -93,6 +93,6 @@ media_player:
|
||||
min_volume: -60
|
||||
max_volume: -20
|
||||
sources:
|
||||
1: 'Kodi'
|
||||
2: 'TV'
|
||||
1: "Kodi"
|
||||
2: "TV"
|
||||
```
|
||||
|
@ -29,10 +29,10 @@ sensor:
|
||||
from: Gn
|
||||
to: Mt
|
||||
via: Zl
|
||||
- name: 'AlmereBuiten-Duivendrecht-the-08h06m-train'
|
||||
- name: "AlmereBuiten-Duivendrecht-the-08h06m-train"
|
||||
from: Almb
|
||||
to: Dvd
|
||||
time: '08:06:00'
|
||||
time: "08:06:00"
|
||||
```
|
||||
|
||||
{% configuration %}
|
||||
|
@ -55,7 +55,7 @@ port:
|
||||
scan_interval:
|
||||
description: "Time interval between updates. Supported formats: `scan_interval: 'HH:MM:SS'`, `scan_interval: 'HH:MM'` and Time period dictionary (see example below)."
|
||||
required: false
|
||||
default: '00:01:00'
|
||||
default: "00:01:00"
|
||||
type: time
|
||||
infer_arming_state:
|
||||
description: Infer the disarmed arming state only via system status events. This works around a bug with some panels (`<v5.8`) which emit `update.status = []` when they are armed.
|
||||
|
@ -130,15 +130,15 @@ resources:
|
||||
# Example configuration.yaml entry
|
||||
sensor:
|
||||
- platform: netdata
|
||||
host: '192.168.1.2'
|
||||
port: '19999'
|
||||
host: "192.168.1.2"
|
||||
port: "19999"
|
||||
name: SomeHostName
|
||||
resources:
|
||||
system_load:
|
||||
data_group: system.load
|
||||
element: load15
|
||||
core0_freq:
|
||||
data_group: 'cpu.cpufreq'
|
||||
element: 'cpu0'
|
||||
data_group: "cpu.cpufreq"
|
||||
element: "cpu0"
|
||||
icon: mdi:chip
|
||||
```
|
||||
|
@ -193,11 +193,11 @@ automation:
|
||||
action:
|
||||
- service: conversation.process
|
||||
data:
|
||||
text: '{{ trigger.event.data.message }}'
|
||||
text: "{{ trigger.event.data.message }}"
|
||||
- service: netgear_lte.delete_sms
|
||||
data:
|
||||
host: '{{ trigger.event.data.host }}'
|
||||
sms_id: '{{ trigger.event.data.sms_id }}'
|
||||
host: "{{ trigger.event.data.host }}"
|
||||
sms_id: "{{ trigger.event.data.sms_id }}"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
@ -35,16 +35,16 @@ The state is the last reading from Nightscout, and you can see other information
|
||||
### Example Automation
|
||||
|
||||
```yaml
|
||||
- id: '1234567890123'
|
||||
- id: "1234567890123"
|
||||
alias: overnight_low_kitchen_lights
|
||||
description: Turn on the lights in the kitchen if my blood sugar drops low overnight
|
||||
trigger:
|
||||
- below: '65'
|
||||
- below: "65"
|
||||
entity_id: sensor.blood_glucose
|
||||
platform: numeric_state
|
||||
condition: time
|
||||
after: '22:00:00'
|
||||
before: '06:00:00'
|
||||
after: "22:00:00"
|
||||
before: "06:00:00"
|
||||
action:
|
||||
- service: light.turn_on
|
||||
data:
|
||||
|
@ -83,7 +83,7 @@ You can use the `nissan_leaf.start_charge` service to send a request to the Niss
|
||||
```yaml
|
||||
- service: nissan_leaf.start_charge
|
||||
data:
|
||||
vin: '1HGBH41JXMN109186' # replace
|
||||
vin: "1HGBH41JXMN109186" # replace
|
||||
```
|
||||
|
||||
## Updating on-demand using Automation
|
||||
@ -92,19 +92,19 @@ You can also use the `nissan_leaf.update` service to request an on-demand update
|
||||
|
||||
```yaml
|
||||
- id: update_when_driver_not_home
|
||||
alias: 'Update when driver not home'
|
||||
alias: "Update when driver not home"
|
||||
initial_state: on
|
||||
trigger:
|
||||
- platform: time_pattern
|
||||
minutes: '/30'
|
||||
minutes: "/30"
|
||||
condition:
|
||||
- condition: state
|
||||
entity_id: device_tracker.drivername # replace
|
||||
state: 'not_home'
|
||||
state: "not_home"
|
||||
action:
|
||||
- service: nissan_leaf.update
|
||||
data:
|
||||
vin: '1HGBH41JXMN109186' # replace
|
||||
vin: "1HGBH41JXMN109186" # replace
|
||||
```
|
||||
|
||||
## Hints
|
||||
|
@ -21,7 +21,7 @@ action:
|
||||
service: notify.mysensors
|
||||
data:
|
||||
message: Welcome home!
|
||||
target: 'TextSensor 254 1'
|
||||
target: "TextSensor 254 1"
|
||||
```
|
||||
|
||||
The following sensor types are supported:
|
||||
|
@ -80,15 +80,15 @@ Now you can use the `notify.events` service inside your Home Assistant to:
|
||||
```yaml
|
||||
- service: notify.events
|
||||
data:
|
||||
message: 'Backyard motion detected!'
|
||||
message: "Backyard motion detected!"
|
||||
data:
|
||||
level: 'warning'
|
||||
priority: 'high'
|
||||
level: "warning"
|
||||
priority: "high"
|
||||
images:
|
||||
- name: 'local_photo.jpg'
|
||||
path: '/tmp/backyard_cam/motion.jpg'
|
||||
- name: 'remote_photo.jpg'
|
||||
url: 'https://i.ibb.co/Jt1845X/motion.jpg'
|
||||
- name: "local_photo.jpg"
|
||||
path: "/tmp/backyard_cam/motion.jpg"
|
||||
- name: "remote_photo.jpg"
|
||||
url: "https://i.ibb.co/Jt1845X/motion.jpg"
|
||||
```
|
||||
|
||||
### Message optional parameters
|
||||
|
@ -87,7 +87,7 @@ Depending on your personal circumstances with regards to bush fire risk you may
|
||||
# Example configuration.yaml entry
|
||||
geo_location:
|
||||
- platform: nsw_rural_fire_service_feed
|
||||
entity_namespace: 'nsw_fire_service_feed'
|
||||
entity_namespace: "nsw_fire_service_feed"
|
||||
radius: 10
|
||||
categories:
|
||||
- 'Emergency Warning'
|
||||
|
@ -20,7 +20,7 @@ Add a sensor to your `configuration.yaml` file as shown in the example:
|
||||
sensor:
|
||||
- platform: oasa_telematics
|
||||
route_id: YOUR_ROUTE_ID
|
||||
stop_id: 'YOUR_STOP_ID'
|
||||
stop_id: "YOUR_STOP_ID"
|
||||
```
|
||||
|
||||
The `route_id` can be obtained by looking up the "LineCode" of the route you want at this link:
|
||||
@ -60,5 +60,5 @@ A more extensive example on how to use this sensor:
|
||||
sensor:
|
||||
- platform: oasa_telematics
|
||||
route_id: 1965
|
||||
stop_id: '090006'
|
||||
stop_id: "090006"
|
||||
```
|
||||
|
@ -23,7 +23,7 @@ media_player:
|
||||
host: 192.168.1.2
|
||||
name: receiver
|
||||
sources:
|
||||
pc: 'HTPC'
|
||||
pc: "HTPC"
|
||||
```
|
||||
|
||||
If your receiver has second or third zone’s available, they are displayed as additional media players with the same functionality as the main zone.
|
||||
|
@ -97,7 +97,7 @@ sensor:
|
||||
platform: template
|
||||
sensors:
|
||||
garage_status:
|
||||
friendly_name: 'Honda Door Status'
|
||||
friendly_name: "Honda Door Status"
|
||||
value_template: '{% if states.cover.honda %}
|
||||
{% if states.cover.honda.attributes["door_state"] == "open" %}
|
||||
Open
|
||||
|
@ -45,14 +45,14 @@ To receive notifications of the entering flights using the [Home Assistant Compa
|
||||
|
||||
```yaml
|
||||
automation:
|
||||
- alias: 'Flight entry notification'
|
||||
- alias: "Flight entry notification"
|
||||
trigger:
|
||||
platform: event
|
||||
event_type: opensky_entry
|
||||
action:
|
||||
service: notify.mobile_app_<device_name>
|
||||
data:
|
||||
message: 'Flight entry of {{ trigger.event.data.callsign }}'
|
||||
message: "Flight entry of {{ trigger.event.data.callsign }}"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
@ -94,7 +94,7 @@ automation:
|
||||
- alias: Update OpenUV every 30 minutes during the daytime
|
||||
trigger:
|
||||
platform: time_pattern
|
||||
minutes: '/30'
|
||||
minutes: "/30"
|
||||
condition:
|
||||
condition: and
|
||||
conditions:
|
||||
@ -115,11 +115,11 @@ automation:
|
||||
- alias: Update OpenUV every 20 minutes while the sun is at least 10 degrees above the horizon
|
||||
trigger:
|
||||
platform: time_pattern
|
||||
minutes: '/20'
|
||||
minutes: "/20"
|
||||
condition:
|
||||
condition: numeric_state
|
||||
entity_id: sun.sun
|
||||
value_template: '{{ state.attributes.elevation }}'
|
||||
value_template: "{{ state.attributes.elevation }}"
|
||||
above: 10
|
||||
action:
|
||||
service: openuv.update_uv_index_data
|
||||
@ -148,7 +148,7 @@ automation:
|
||||
- alias: Update OpenUV every hour (24 of 50 calls per day)
|
||||
trigger:
|
||||
platform: time_pattern
|
||||
minutes: '/60'
|
||||
minutes: "/60"
|
||||
action:
|
||||
service: openuv.update_data
|
||||
```
|
||||
|
@ -23,14 +23,14 @@ To enable Panel iFrames in your installation, add the following to your `configu
|
||||
# Example configuration.yaml entry
|
||||
panel_iframe:
|
||||
router:
|
||||
title: 'Router'
|
||||
url: 'http://192.168.1.1'
|
||||
title: "Router"
|
||||
url: "http://192.168.1.1"
|
||||
fridge:
|
||||
title: 'Fridge'
|
||||
url: 'http://192.168.1.5'
|
||||
title: "Fridge"
|
||||
url: "http://192.168.1.5"
|
||||
otherapp:
|
||||
title: 'Other App'
|
||||
url: '/otherapp'
|
||||
title: "Other App"
|
||||
url: "/otherapp"
|
||||
```
|
||||
|
||||
{% configuration %}
|
||||
|
@ -70,7 +70,7 @@ action:
|
||||
This automation example shows a notification when the Z-Wave network is starting and removes it when the network is ready.
|
||||
|
||||
```yaml
|
||||
- alias: 'Z-Wave network is starting'
|
||||
- alias: "Z-Wave network is starting"
|
||||
trigger:
|
||||
- platform: event
|
||||
event_type: zwave.network_start
|
||||
@ -81,7 +81,7 @@ This automation example shows a notification when the Z-Wave network is starting
|
||||
message: "Z-Wave network is starting..."
|
||||
notification_id: zwave
|
||||
|
||||
- alias: 'Z-Wave network is ready'
|
||||
- alias: "Z-Wave network is ready"
|
||||
trigger:
|
||||
- platform: event
|
||||
event_type: zwave.network_ready
|
||||
|
@ -68,23 +68,23 @@ Single Pi-hole running via Home Assistant add-on:
|
||||
|
||||
```yaml
|
||||
pi_hole:
|
||||
- host: 'localhost:4865'
|
||||
- host: "localhost:4865"
|
||||
```
|
||||
|
||||
Multiple Pi-holes:
|
||||
|
||||
```yaml
|
||||
pi_hole:
|
||||
- host: '192.168.0.2'
|
||||
- host: '192.168.0.3'
|
||||
name: 'Secondary Pi-hole'
|
||||
- host: "192.168.0.2"
|
||||
- host: "192.168.0.3"
|
||||
name: "Secondary Pi-hole"
|
||||
```
|
||||
|
||||
Pi-hole with a self-signed certificate:
|
||||
|
||||
```yaml
|
||||
pi_hole:
|
||||
- host: 'pi.hole'
|
||||
- host: "pi.hole"
|
||||
ssl: true
|
||||
verify_ssl: false
|
||||
```
|
||||
@ -93,7 +93,7 @@ Pi-hole with an `api_key` that allows it to be enabled or disabled:
|
||||
|
||||
```yaml
|
||||
pi_hole:
|
||||
- host: 'pi.hole'
|
||||
- host: "pi.hole"
|
||||
api_key: !secret pi_hole_api_key
|
||||
```
|
||||
|
||||
|
@ -46,5 +46,5 @@ The configuration sample below shows how an entry can look like:
|
||||
# Example configuration.yaml entry
|
||||
tts:
|
||||
- platform: picotts
|
||||
language: 'fr-FR'
|
||||
language: "fr-FR"
|
||||
```
|
||||
|
@ -85,7 +85,7 @@ To enable a Pilight binary sensor in your installation, add the following to you
|
||||
# Example configuration.yaml entry
|
||||
binary_sensor:
|
||||
- platform: pilight
|
||||
variable: 'state'
|
||||
variable: "state"
|
||||
```
|
||||
|
||||
{% configuration %}
|
||||
@ -133,11 +133,11 @@ A full configuration example could look like this:
|
||||
# Example configuration.yaml entry
|
||||
binary_sensor:
|
||||
- platform: pilight
|
||||
name: 'Motion'
|
||||
variable: 'state'
|
||||
name: "Motion"
|
||||
variable: "state"
|
||||
payload:
|
||||
unitcode: 371399
|
||||
payload_on: 'closed'
|
||||
payload_on: "closed"
|
||||
disarm_after_trigger: true
|
||||
reset_delay_sec: 30
|
||||
```
|
||||
@ -154,7 +154,7 @@ sensor:
|
||||
- platform: pilight
|
||||
variable: temperature
|
||||
payload:
|
||||
uuid: '0000-b8-27-eb-f447d3'
|
||||
uuid: "0000-b8-27-eb-f447d3"
|
||||
```
|
||||
|
||||
{% configuration %}
|
||||
@ -185,23 +185,23 @@ This section shows a real life example how to use values of a weather station.
|
||||
# Example configuration.yaml entry
|
||||
sensor:
|
||||
- platform: pilight
|
||||
name: 'Temperature'
|
||||
variable: 'temperature'
|
||||
name: "Temperature"
|
||||
variable: "temperature"
|
||||
payload:
|
||||
uuid: 0000-b8-27-eb-f1f72e
|
||||
unit_of_measurement: '°C'
|
||||
unit_of_measurement: "°C"
|
||||
- platform: pilight
|
||||
name: 'Humidity'
|
||||
variable: 'humidity'
|
||||
name: "Humidity"
|
||||
variable: "humidity"
|
||||
payload:
|
||||
uuid: 0000-b8-27-eb-f1f72e
|
||||
unit_of_measurement: '%'
|
||||
unit_of_measurement: "%"
|
||||
- platform: pilight
|
||||
name: 'Battery'
|
||||
variable: 'battery'
|
||||
name: "Battery"
|
||||
variable: "battery"
|
||||
payload:
|
||||
uuid: 0000-b8-27-eb-f1f72e
|
||||
unit_of_measurement: '%'
|
||||
unit_of_measurement: "%"
|
||||
```
|
||||
|
||||
## Switch
|
||||
@ -298,13 +298,13 @@ switch:
|
||||
systemcode: 14462
|
||||
unit: 6
|
||||
id: 34
|
||||
state: 'on'
|
||||
state: "on"
|
||||
off_code_receive:
|
||||
protocol: daycom
|
||||
systemcode: 14462
|
||||
unit: 6
|
||||
id: 34
|
||||
state: 'off'
|
||||
state: "off"
|
||||
```
|
||||
|
||||
## Light
|
||||
@ -349,12 +349,12 @@ light:
|
||||
protocol: kaku_dimmer
|
||||
id: 23298822
|
||||
unit: 10
|
||||
state: 'on'
|
||||
state: "on"
|
||||
off_code_receive:
|
||||
protocol: kaku_dimmer
|
||||
id: 23298822
|
||||
unit: 10
|
||||
state: 'off'
|
||||
state: "off"
|
||||
```
|
||||
|
||||
## Troubleshooting
|
||||
|
@ -142,28 +142,28 @@ sensor:
|
||||
- platform: mqtt
|
||||
name: my_plant_moisture
|
||||
state_topic: my_plant_topic
|
||||
value_template: '{{ value_json.moisture | int }}'
|
||||
unit_of_measurement: '%'
|
||||
value_template: "{{ value_json.moisture | int }}"
|
||||
unit_of_measurement: "%"
|
||||
- platform: mqtt
|
||||
name: my_plant_battery
|
||||
state_topic: my_plant_topic
|
||||
value_template: '{{ value_json.battery | int }}'
|
||||
unit_of_measurement: '%'
|
||||
value_template: "{{ value_json.battery | int }}"
|
||||
unit_of_measurement: "%"
|
||||
- platform: mqtt
|
||||
name: my_plant_temperature
|
||||
state_topic: my_plant_topic
|
||||
value_template: '{{ value_json.temperature | float }}'
|
||||
unit_of_measurement: '°C'
|
||||
value_template: "{{ value_json.temperature | float }}"
|
||||
unit_of_measurement: "°C"
|
||||
- platform: mqtt
|
||||
name: my_plant_conductivity
|
||||
state_topic: my_plant_topic
|
||||
value_template: '{{ value_json.conductivity | int }}'
|
||||
unit_of_measurement: 'µS/cm'
|
||||
value_template: "{{ value_json.conductivity | int }}"
|
||||
unit_of_measurement: "µS/cm"
|
||||
- platform: mqtt
|
||||
name: my_plant_brightness
|
||||
state_topic: my_plant_topic
|
||||
value_template: '{{ value_json.brightness | int }}'
|
||||
unit_of_measurement: 'Lux'
|
||||
value_template: "{{ value_json.brightness | int }}"
|
||||
unit_of_measurement: "Lux"
|
||||
```
|
||||
|
||||
{% endraw %}
|
||||
|
@ -241,17 +241,17 @@ play_plex_on_tv:
|
||||
- service: media_player.select_source
|
||||
entity_id: media_player.smart_tv
|
||||
data:
|
||||
source: 'Plex'
|
||||
source: "Plex"
|
||||
- wait_template: "{{ is_state('media_player.smart_tv', 'On') }}"
|
||||
timeout: '00:00:10'
|
||||
timeout: "00:00:10"
|
||||
- service: plex.scan_for_clients
|
||||
- wait_template: "{{ not is_state('media_player.plex_smart_tv', 'unavailable') }}"
|
||||
timeout: '00:00:10'
|
||||
timeout: "00:00:10"
|
||||
continue_on_timeout: false
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
entity_id: media_player.plex_smart_tv
|
||||
media_content_id: '{"library_name": "Movies", "title": "Zoolander"}'
|
||||
media_content_id: "{"library_name": "Movies", "title": "Zoolander"}"
|
||||
media_content_type: movie
|
||||
```
|
||||
|
||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user