diff --git a/Gemfile.lock b/Gemfile.lock
index 584cb4e9487..5df2e88d874 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -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)
diff --git a/source/_cookbook/automation_first_light.markdown b/source/_cookbook/automation_first_light.markdown
index f752ad5f9bf..39a4f15e9d9 100644
--- a/source/_cookbook/automation_first_light.markdown
+++ b/source/_cookbook/automation_first_light.markdown
@@ -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
diff --git a/source/_cookbook/automation_flashing_lights.markdown b/source/_cookbook/automation_flashing_lights.markdown
index 83157343e31..d285e3e3d4a 100644
--- a/source/_cookbook/automation_flashing_lights.markdown
+++ b/source/_cookbook/automation_flashing_lights.markdown
@@ -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
diff --git a/source/_cookbook/automation_for_rainy_days.markdown b/source/_cookbook/automation_for_rainy_days.markdown
index 35f66c70948..b29dcafa266 100644
--- a/source/_cookbook/automation_for_rainy_days.markdown
+++ b/source/_cookbook/automation_for_rainy_days.markdown
@@ -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
diff --git a/source/_cookbook/automation_sun.markdown b/source/_cookbook/automation_sun.markdown
index 615aaed79d1..f6af4cd26c0 100644
--- a/source/_cookbook/automation_sun.markdown
+++ b/source/_cookbook/automation_sun.markdown
@@ -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
diff --git a/source/_cookbook/automation_telegram_presence_alert.markdown b/source/_cookbook/automation_telegram_presence_alert.markdown
index c31224a8e5d..e8ceeb7ba10 100644
--- a/source/_cookbook/automation_telegram_presence_alert.markdown
+++ b/source/_cookbook/automation_telegram_presence_alert.markdown
@@ -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"
```
diff --git a/source/_cookbook/automation_using_timeinterval_inputboolean.markdown b/source/_cookbook/automation_using_timeinterval_inputboolean.markdown
index e601d47f79e..7307f890f96 100644
--- a/source/_cookbook/automation_using_timeinterval_inputboolean.markdown
+++ b/source/_cookbook/automation_using_timeinterval_inputboolean.markdown
@@ -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
diff --git a/source/_cookbook/dim_and_brighten_lights.markdown b/source/_cookbook/dim_and_brighten_lights.markdown
index 29eb0996cee..350a5a4746e 100644
--- a/source/_cookbook/dim_and_brighten_lights.markdown
+++ b/source/_cookbook/dim_and_brighten_lights.markdown
@@ -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
diff --git a/source/_cookbook/dim_lights_when_playing_media.markdown b/source/_cookbook/dim_lights_when_playing_media.markdown
index d0f4ae9f151..da90ecb3763 100644
--- a/source/_cookbook/dim_lights_when_playing_media.markdown
+++ b/source/_cookbook/dim_lights_when_playing_media.markdown
@@ -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
diff --git a/source/_cookbook/foscam_away_mode_PTZ.markdown b/source/_cookbook/foscam_away_mode_PTZ.markdown
index 400e08573c6..95cd12b85a2 100644
--- a/source/_cookbook/foscam_away_mode_PTZ.markdown
+++ b/source/_cookbook/foscam_away_mode_PTZ.markdown
@@ -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
```
diff --git a/source/_cookbook/notify.mqtt.markdown b/source/_cookbook/notify.mqtt.markdown
index 6ddb0d6de35..edf29132a2f 100644
--- a/source/_cookbook/notify.mqtt.markdown
+++ b/source/_cookbook/notify.mqtt.markdown
@@ -50,7 +50,7 @@ automation:
trigger:
platform: state
entity_id: device_tracker.me
- to: 'home'
+ to: "home"
action:
service: script.notify_mqtt
data:
diff --git a/source/_cookbook/notify_if__new_ha_release.markdown b/source/_cookbook/notify_if__new_ha_release.markdown
index e63697ccb72..8a99099d99d 100644
--- a/source/_cookbook/notify_if__new_ha_release.markdown
+++ b/source/_cookbook/notify_if__new_ha_release.markdown
@@ -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."
```
diff --git a/source/_cookbook/perform_actions_based_on_input_select.markdown b/source/_cookbook/perform_actions_based_on_input_select.markdown
index 20a1752dccf..6e9ed91f224 100644
--- a/source/_cookbook/perform_actions_based_on_input_select.markdown
+++ b/source/_cookbook/perform_actions_based_on_input_select.markdown
@@ -160,5 +160,5 @@ automation:
{% else %}{% endraw %}
none{% raw %}
{% endif %}{% endraw %}
- media_content_type: 'music'
+ media_content_type: "music"
```
diff --git a/source/_cookbook/restart_ha_if_wemo_switch_is_not_detected.markdown b/source/_cookbook/restart_ha_if_wemo_switch_is_not_detected.markdown
index 3caf90f7caf..bc54bdd3ff4 100644
--- a/source/_cookbook/restart_ha_if_wemo_switch_is_not_detected.markdown
+++ b/source/_cookbook/restart_ha_if_wemo_switch_is_not_detected.markdown
@@ -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
diff --git a/source/_cookbook/send_a_reminder.markdown b/source/_cookbook/send_a_reminder.markdown
index cdae3398aac..0e1c9236692 100644
--- a/source/_cookbook/send_a_reminder.markdown
+++ b/source/_cookbook/send_a_reminder.markdown
@@ -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"
```
diff --git a/source/_cookbook/sonos_say.markdown b/source/_cookbook/sonos_say.markdown
index 74b12f23ae5..15a5145241c 100644
--- a/source/_cookbook/sonos_say.markdown
+++ b/source/_cookbook/sonos_say.markdown
@@ -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:
diff --git a/source/_cookbook/track_battery_level.markdown b/source/_cookbook/track_battery_level.markdown
index b73828caa7a..9ea3ce8a960 100644
--- a/source/_cookbook/track_battery_level.markdown
+++ b/source/_cookbook/track_battery_level.markdown
@@ -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 %}
diff --git a/source/_cookbook/turn_on_light_for_10_minutes_when_motion_detected.markdown b/source/_cookbook/turn_on_light_for_10_minutes_when_motion_detected.markdown
index 4afb1e49785..9b46804f285 100644
--- a/source/_cookbook/turn_on_light_for_10_minutes_when_motion_detected.markdown
+++ b/source/_cookbook/turn_on_light_for_10_minutes_when_motion_detected.markdown
@@ -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:
diff --git a/source/_docs/authentication/multi-factor-auth.markdown b/source/_docs/authentication/multi-factor-auth.markdown
index b70e098b7b4..47969af1dee 100644
--- a/source/_docs/authentication/multi-factor-auth.markdown
+++ b/source/_docs/authentication/multi-factor-auth.markdown
@@ -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.
diff --git a/source/_docs/automation/action.markdown b/source/_docs/automation/action.markdown
index d72e382deef..79aa15e22f3 100644
--- a/source/_docs/automation/action.markdown
+++ b/source/_docs/automation/action.markdown
@@ -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 %}'
- - service: scene.turn_on
+ - 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
```
diff --git a/source/_docs/automation/condition.markdown b/source/_docs/automation/condition.markdown
index c98828db025..0ed6610d36e 100644
--- a/source/_docs/automation/condition.markdown
+++ b/source/_docs/automation/condition.markdown
@@ -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
diff --git a/source/_docs/automation/templating.markdown b/source/_docs/automation/templating.markdown
index 71e30eed82d..cdeb8640b17 100644
--- a/source/_docs/automation/templating.markdown
+++ b/source/_docs/automation/templating.markdown
@@ -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:
diff --git a/source/_docs/automation/trigger.markdown b/source/_docs/automation/trigger.markdown
index 5cf092e4bbf..cb7a31a4d80 100644
--- a/source/_docs/automation/trigger.markdown
+++ b/source/_docs/automation/trigger.markdown
@@ -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
diff --git a/source/_docs/automation/yaml.markdown b/source/_docs/automation/yaml.markdown
index 7ab5a71d95f..1929edab832 100644
--- a/source/_docs/automation/yaml.markdown
+++ b/source/_docs/automation/yaml.markdown
@@ -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
diff --git a/source/_docs/configuration/customizing-devices.markdown b/source/_docs/configuration/customizing-devices.markdown
index 4058d7e93db..a6e8b05b8e5 100644
--- a/source/_docs/configuration/customizing-devices.markdown
+++ b/source/_docs/configuration/customizing-devices.markdown
@@ -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_*":
diff --git a/source/_docs/configuration/packages.markdown b/source/_docs/configuration/packages.markdown
index 717846a1421..21b49a04cfd 100644
--- a/source/_docs/configuration/packages.markdown
+++ b/source/_docs/configuration/packages.markdown
@@ -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.
Components inside packages can only specify platform entries using configuration style 1, where all the platforms are grouped under the integration name.
diff --git a/source/_docs/configuration/splitting_configuration.markdown b/source/_docs/configuration/splitting_configuration.markdown
index 8fec8bb86dc..037fbf60666 100644
--- a/source/_docs/configuration/splitting_configuration.markdown
+++ b/source/_docs/configuration/splitting_configuration.markdown
@@ -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
diff --git a/source/_docs/installation/docker.markdown b/source/_docs/installation/docker.markdown
index 345f2511674..b92b6a7f736 100644
--- a/source/_docs/installation/docker.markdown
+++ b/source/_docs/installation/docker.markdown
@@ -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
diff --git a/source/_docs/mqtt/birth_will.markdown b/source/_docs/mqtt/birth_will.markdown
index eec087abdca..7ffa0a48ba9 100644
--- a/source/_docs/mqtt/birth_will.markdown
+++ b/source/_docs/mqtt/birth_will.markdown
@@ -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.
diff --git a/source/_docs/scripts.markdown b/source/_docs/scripts.markdown
index 96f7dc9346e..8e62ebaf794 100644
--- a/source/_docs/scripts.markdown
+++ b/source/_docs/scripts.markdown
@@ -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:
diff --git a/source/_docs/scripts/conditions.markdown b/source/_docs/scripts/conditions.markdown
index 6c173561719..98807ab3d67 100644
--- a/source/_docs/scripts/conditions.markdown
+++ b/source/_docs/scripts/conditions.markdown
@@ -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 %}
diff --git a/source/_docs/z-wave/device-specific.markdown b/source/_docs/z-wave/device-specific.markdown
index 2258795eaee..d13dda84b68 100644
--- a/source/_docs/z-wave/device-specific.markdown
+++ b/source/_docs/z-wave/device-specific.markdown
@@ -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
diff --git a/source/_docs/z-wave/events.markdown b/source/_docs/z-wave/events.markdown
index fc586ce37c9..2568854a801 100644
--- a/source/_docs/z-wave/events.markdown
+++ b/source/_docs/z-wave/events.markdown
@@ -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
diff --git a/source/_integrations/ads.markdown b/source/_integrations/ads.markdown
index 9c896868d5b..b6c78102ebc 100644
--- a/source/_integrations/ads.markdown
+++ b/source/_integrations/ads.markdown
@@ -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
```
diff --git a/source/_integrations/aftership.markdown b/source/_integrations/aftership.markdown
index 26e950221a2..71558c9314a 100644
--- a/source/_integrations/aftership.markdown
+++ b/source/_integrations/aftership.markdown
@@ -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.
-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.
## Configuration
diff --git a/source/_integrations/alarm_control_panel.mqtt.markdown b/source/_integrations/alarm_control_panel.mqtt.markdown
index 39fefb6d722..4d7647c9e38 100644
--- a/source/_integrations/alarm_control_panel.mqtt.markdown
+++ b/source/_integrations/alarm_control_panel.mqtt.markdown
@@ -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:
diff --git a/source/_integrations/alarm_control_panel.template.markdown b/source/_integrations/alarm_control_panel.template.markdown
index 9d040122eb1..ac8b932bbc9 100644
--- a/source/_integrations/alarm_control_panel.template.markdown
+++ b/source/_integrations/alarm_control_panel.template.markdown
@@ -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
diff --git a/source/_integrations/alert.markdown b/source/_integrations/alert.markdown
index af22b2763e2..63b03a2bf8b 100644
--- a/source/_integrations/alert.markdown
+++ b/source/_integrations/alert.markdown
@@ -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
diff --git a/source/_integrations/amazon_polly.markdown b/source/_integrations/amazon_polly.markdown
index 910fc8b517c..6bba843e030 100644
--- a/source/_integrations/amazon_polly.markdown
+++ b/source/_integrations/amazon_polly.markdown
@@ -84,7 +84,7 @@ Say to all `media_player` device entities:
```yaml
- service: tts.amazon_polly_say
data:
- message: '
Hello from Amazon Polly'
+ message: "
Hello from Amazon Polly"
```
or
diff --git a/source/_integrations/amcrest.markdown b/source/_integrations/amcrest.markdown
index 475808872c8..388a943e967 100644
--- a/source/_integrations/amcrest.markdown
+++ b/source/_integrations/amcrest.markdown
@@ -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:
diff --git a/source/_integrations/android_ip_webcam.markdown b/source/_integrations/android_ip_webcam.markdown
index a81eb8641bf..398fa0db725 100644
--- a/source/_integrations/android_ip_webcam.markdown
+++ b/source/_integrations/android_ip_webcam.markdown
@@ -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 %}
diff --git a/source/_integrations/androidtv.markdown b/source/_integrations/androidtv.markdown
index 1b95cb1891b..3cdf6e6edb4 100644
--- a/source/_integrations/androidtv.markdown
+++ b/source/_integrations/androidtv.markdown
@@ -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`
diff --git a/source/_integrations/arlo.markdown b/source/_integrations/arlo.markdown
index 7fb64c95596..ff2acbe39ae 100644
--- a/source/_integrations/arlo.markdown
+++ b/source/_integrations/arlo.markdown
@@ -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 %}
diff --git a/source/_integrations/august.markdown b/source/_integrations/august.markdown
index 960301e3466..22cbddc5361 100644
--- a/source/_integrations/august.markdown
+++ b/source/_integrations/august.markdown
@@ -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:
diff --git a/source/_integrations/aurora_abb_powerone.markdown b/source/_integrations/aurora_abb_powerone.markdown
index b6db71f94e3..b0bebe7aca8 100644
--- a/source/_integrations/aurora_abb_powerone.markdown
+++ b/source/_integrations/aurora_abb_powerone.markdown
@@ -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"
```
diff --git a/source/_integrations/bayesian.markdown b/source/_integrations/bayesian.markdown
index 0202a87ddb7..9f2a41f2407 100644
--- a/source/_integrations/bayesian.markdown
+++ b/source/_integrations/bayesian.markdown
@@ -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:
diff --git a/source/_integrations/binary_sensor.template.markdown b/source/_integrations/binary_sensor.template.markdown
index 22ebd90ef48..3777ca77ab9 100644
--- a/source/_integrations/binary_sensor.template.markdown
+++ b/source/_integrations/binary_sensor.template.markdown
@@ -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 %}
diff --git a/source/_integrations/binary_sensor.xiaomi_aqara.markdown b/source/_integrations/binary_sensor.xiaomi_aqara.markdown
index c18eb879bbf..8eeef94a6ff 100644
--- a/source/_integrations/binary_sensor.xiaomi_aqara.markdown
+++ b/source/_integrations/binary_sensor.xiaomi_aqara.markdown
@@ -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
diff --git a/source/_integrations/blink.markdown b/source/_integrations/blink.markdown
index 9b58835328f..88171f23a89 100644
--- a/source/_integrations/blink.markdown
+++ b/source/_integrations/blink.markdown
@@ -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:
diff --git a/source/_integrations/bmp280.markdown b/source/_integrations/bmp280.markdown
index 77f0a97b4ef..986874153d2 100644
--- a/source/_integrations/bmp280.markdown
+++ b/source/_integrations/bmp280.markdown
@@ -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 %}
diff --git a/source/_integrations/brother.markdown b/source/_integrations/brother.markdown
index d153dce7d60..83c4b4654fd 100644
--- a/source/_integrations/brother.markdown
+++ b/source/_integrations/brother.markdown
@@ -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.
diff --git a/source/_integrations/buienradar.markdown b/source/_integrations/buienradar.markdown
index 006d80541ac..1b63d6ef06a 100644
--- a/source/_integrations/buienradar.markdown
+++ b/source/_integrations/buienradar.markdown
@@ -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
diff --git a/source/_integrations/caldav.markdown b/source/_integrations/caldav.markdown
index 2326ee7afb3..84c4b15e897 100644
--- a/source/_integrations/caldav.markdown
+++ b/source/_integrations/caldav.markdown
@@ -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"
```
diff --git a/source/_integrations/calendar.google.markdown b/source/_integrations/calendar.google.markdown
index 04d73c6c49a..a66e3db9ccb 100644
--- a/source/_integrations/calendar.google.markdown
+++ b/source/_integrations/calendar.google.markdown
@@ -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.
diff --git a/source/_integrations/debugpy.markdown b/source/_integrations/debugpy.markdown
index e96695ed19a..0f7289c8fef 100644
--- a/source/_integrations/debugpy.markdown
+++ b/source/_integrations/debugpy.markdown
@@ -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
diff --git a/source/_integrations/deconz.markdown b/source/_integrations/deconz.markdown
index 66ac662ed1c..73cec5f60ad 100644
--- a/source/_integrations/deconz.markdown
+++ b/source/_integrations/deconz.markdown
@@ -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
diff --git a/source/_integrations/emulated_hue.markdown b/source/_integrations/emulated_hue.markdown
index 9f98251ed4d..d8fa0c2da37 100644
--- a/source/_integrations/emulated_hue.markdown
+++ b/source/_integrations/emulated_hue.markdown
@@ -43,7 +43,7 @@ If you added or upgraded to a newer Alexa device and devices are not found, you
-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".
diff --git a/source/_integrations/google_travel_time.markdown b/source/_integrations/google_travel_time.markdown
index a353efaef3b..08b820ed433 100644
--- a/source/_integrations/google_travel_time.markdown
+++ b/source/_integrations/google_travel_time.markdown
@@ -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'
diff --git a/source/_integrations/here_travel_time.markdown b/source/_integrations/here_travel_time.markdown
index 8a49b354bf2..8b505cf0119 100644
--- a/source/_integrations/here_travel_time.markdown
+++ b/source/_integrations/here_travel_time.markdown
@@ -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'
diff --git a/source/_integrations/history_stats.markdown b/source/_integrations/history_stats.markdown
index fc690ed1fd9..6388ee42abf 100644
--- a/source/_integrations/history_stats.markdown
+++ b/source/_integrations/history_stats.markdown
@@ -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() }}'
diff --git a/source/_integrations/input_boolean.markdown b/source/_integrations/input_boolean.markdown
index 2789873d879..4fbfb6a2ce0 100644
--- a/source/_integrations/input_boolean.markdown
+++ b/source/_integrations/input_boolean.markdown
@@ -79,7 +79,7 @@ automation:
condition:
condition: state
entity_id: input_boolean.notify_home
- state: 'on'
+ state: "on"
action:
service: notify.pushbullet
data:
diff --git a/source/_integrations/insteon.markdown b/source/_integrations/insteon.markdown
index bf25c4168a8..0bbb5148db4 100644
--- a/source/_integrations/insteon.markdown
+++ b/source/_integrations/insteon.markdown
@@ -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
diff --git a/source/_integrations/kira.markdown b/source/_integrations/kira.markdown
index c0f0499d346..dbd790cfa7a 100644
--- a/source/_integrations/kira.markdown
+++ b/source/_integrations/kira.markdown
@@ -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
diff --git a/source/_integrations/knx.markdown b/source/_integrations/knx.markdown
index 46c60ffa01e..6e8221cd08f 100644
--- a/source/_integrations/knx.markdown
+++ b/source/_integrations/knx.markdown
@@ -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
` to read the state from the KNX bus when no telegram was received for \ or `every ` to update it regularly every \. Maximum value for \ 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 ` to read the state from the KNX bus when no telegram was received for \ or `every ` to update it regularly every \. Maximum value for \ 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 ` to read the state from the KNX bus when no telegram was received for \ or `every ` to update it regularly every \. Maximum value for \ 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 ` to read the state from the KNX bus when no telegram was received for \ or `every ` to update it regularly every \. Maximum value for \ 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 %}
diff --git a/source/_integrations/konnected.markdown b/source/_integrations/konnected.markdown
index 3f853699c9b..04af7973f74 100644
--- a/source/_integrations/konnected.markdown
+++ b/source/_integrations/konnected.markdown
@@ -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
diff --git a/source/_integrations/lametric.markdown b/source/_integrations/lametric.markdown
index baa2dc72c3f..ce5722aeb25 100644
--- a/source/_integrations/lametric.markdown
+++ b/source/_integrations/lametric.markdown
@@ -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.
diff --git a/source/_integrations/lcn.markdown b/source/_integrations/lcn.markdown
index 5d5cc80064e..ff377afb5d3 100644
--- a/source/_integrations/lcn.markdown
+++ b/source/_integrations/lcn.markdown
@@ -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.
diff --git a/source/_integrations/lifx.markdown b/source/_integrations/lifx.markdown
index 63240ee0ed1..b3a9f3e15d2 100644
--- a/source/_integrations/lifx.markdown
+++ b/source/_integrations/lifx.markdown
@@ -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:
diff --git a/source/_integrations/media_player.markdown b/source/_integrations/media_player.markdown
index 025a5109360..78d48f85693 100644
--- a/source/_integrations/media_player.markdown
+++ b/source/_integrations/media_player.markdown
@@ -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
```
diff --git a/source/_integrations/meteo_france.markdown b/source/_integrations/meteo_france.markdown
index fba60aaeeff..9162e064f17 100644
--- a/source/_integrations/meteo_france.markdown
+++ b/source/_integrations/meteo_france.markdown
@@ -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 %}
diff --git a/source/_integrations/meteoalarm.markdown b/source/_integrations/meteoalarm.markdown
index 756e213213d..9f7a19e4cf7 100644
--- a/source/_integrations/meteoalarm.markdown
+++ b/source/_integrations/meteoalarm.markdown
@@ -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 %}
diff --git a/source/_integrations/microsoft_face.markdown b/source/_integrations/microsoft_face.markdown
index 7fcd2884fb5..db2349a8c43 100644
--- a/source/_integrations/microsoft_face.markdown
+++ b/source/_integrations/microsoft_face.markdown
@@ -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
```
diff --git a/source/_integrations/miflora.markdown b/source/_integrations/miflora.markdown
index bd716919686..d4a41821673 100644
--- a/source/_integrations/miflora.markdown
+++ b/source/_integrations/miflora.markdown
@@ -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
diff --git a/source/_integrations/minio.markdown b/source/_integrations/minio.markdown
index 5d3457f8503..014438a248b 100644
--- a/source/_integrations/minio.markdown
+++ b/source/_integrations/minio.markdown
@@ -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 }}"
diff --git a/source/_integrations/mitemp_bt.markdown b/source/_integrations/mitemp_bt.markdown
index 4169f4bab10..4c6eb8d9ef5 100644
--- a/source/_integrations/mitemp_bt.markdown
+++ b/source/_integrations/mitemp_bt.markdown
@@ -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
diff --git a/source/_integrations/modem_callerid.markdown b/source/_integrations/modem_callerid.markdown
index 3cc85a6d979..4826136d9f7 100644
--- a/source/_integrations/modem_callerid.markdown
+++ b/source/_integrations/modem_callerid.markdown
@@ -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 %}
diff --git a/source/_integrations/mvglive.markdown b/source/_integrations/mvglive.markdown
index f74a3c6849e..976de5be66f 100644
--- a/source/_integrations/mvglive.markdown
+++ b/source/_integrations/mvglive.markdown
@@ -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.
diff --git a/source/_integrations/mysensors.markdown b/source/_integrations/mysensors.markdown
index d4b4319ca92..e682c05227a 100644
--- a/source/_integrations/mysensors.markdown
+++ b/source/_integrations/mysensors.markdown
@@ -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
diff --git a/source/_integrations/nad.markdown b/source/_integrations/nad.markdown
index e3b9f7a3bc1..324c3472b84 100644
--- a/source/_integrations/nad.markdown
+++ b/source/_integrations/nad.markdown
@@ -93,6 +93,6 @@ media_player:
min_volume: -60
max_volume: -20
sources:
- 1: 'Kodi'
- 2: 'TV'
+ 1: "Kodi"
+ 2: "TV"
```
diff --git a/source/_integrations/nederlandse_spoorwegen.markdown b/source/_integrations/nederlandse_spoorwegen.markdown
index 5ca74d2051c..fefa0b909a8 100644
--- a/source/_integrations/nederlandse_spoorwegen.markdown
+++ b/source/_integrations/nederlandse_spoorwegen.markdown
@@ -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 %}
diff --git a/source/_integrations/ness_alarm.markdown b/source/_integrations/ness_alarm.markdown
index 91fb30324d4..35aface42c4 100644
--- a/source/_integrations/ness_alarm.markdown
+++ b/source/_integrations/ness_alarm.markdown
@@ -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 (`
data:
- message: 'Flight entry of {{ trigger.event.data.callsign }}'
+ message: "Flight entry of {{ trigger.event.data.callsign }}"
```
{% endraw %}
diff --git a/source/_integrations/openuv.markdown b/source/_integrations/openuv.markdown
index 30774af808f..df98ff9c8e8 100644
--- a/source/_integrations/openuv.markdown
+++ b/source/_integrations/openuv.markdown
@@ -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
```
diff --git a/source/_integrations/panel_iframe.markdown b/source/_integrations/panel_iframe.markdown
index dece86721c2..39e8fdc77b9 100644
--- a/source/_integrations/panel_iframe.markdown
+++ b/source/_integrations/panel_iframe.markdown
@@ -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 %}
diff --git a/source/_integrations/persistent_notification.markdown b/source/_integrations/persistent_notification.markdown
index 518ca5af459..dafb1cc499d 100644
--- a/source/_integrations/persistent_notification.markdown
+++ b/source/_integrations/persistent_notification.markdown
@@ -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
diff --git a/source/_integrations/pi_hole.markdown b/source/_integrations/pi_hole.markdown
index 6471d7080fb..e10c481d485 100644
--- a/source/_integrations/pi_hole.markdown
+++ b/source/_integrations/pi_hole.markdown
@@ -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
```
diff --git a/source/_integrations/picotts.markdown b/source/_integrations/picotts.markdown
index b926724ae69..5fba5a3288c 100644
--- a/source/_integrations/picotts.markdown
+++ b/source/_integrations/picotts.markdown
@@ -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"
```
diff --git a/source/_integrations/pilight.markdown b/source/_integrations/pilight.markdown
index 080fdc99d1e..539768728b0 100644
--- a/source/_integrations/pilight.markdown
+++ b/source/_integrations/pilight.markdown
@@ -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
diff --git a/source/_integrations/plant.markdown b/source/_integrations/plant.markdown
index decf2699370..f204e7c016b 100644
--- a/source/_integrations/plant.markdown
+++ b/source/_integrations/plant.markdown
@@ -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 %}
diff --git a/source/_integrations/plex.markdown b/source/_integrations/plex.markdown
index 62247e1be6a..fcfba48279f 100644
--- a/source/_integrations/plex.markdown
+++ b/source/_integrations/plex.markdown
@@ -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
```
diff --git a/source/_integrations/plugwise.markdown b/source/_integrations/plugwise.markdown
index 6baf44ecd4d..1fd2e59cc8c 100644
--- a/source/_integrations/plugwise.markdown
+++ b/source/_integrations/plugwise.markdown
@@ -26,7 +26,7 @@ Platforms available - depending on your Smile and setup include:
- `binary_sensor` (for domestic hot water and secondary heater)
- `switch` (for Plugs connected to Adam or Stealths and Circles connected to a Stretch)
-The password can be found on the bottom of your Smile or Stretch, it should consist of 6 characters. To find your IP address use the Plugwise App:
+The password can be found on the bottom of your Smile or Stretch, the ID, it should consist of 8 characters. To find your IP address use the Plugwise App:
- Open the Plugwise App and choose the 'Settings'-icon (☰) and choose 'HTML-interface'.
- Go to the (lower) 'Settings'-icon (☰) and choose 'Preferences'.
diff --git a/source/_integrations/point.markdown b/source/_integrations/point.markdown
index fd2b0ed8d0c..4f5c0c6d4c1 100644
--- a/source/_integrations/point.markdown
+++ b/source/_integrations/point.markdown
@@ -100,7 +100,7 @@ automation:
trigger:
- platform: state
entity_id: binary_sensor.point_button_press # Change this accordingly
- to: 'on'
+ to: "on"
action:
- service: persistent_notification.create
data:
diff --git a/source/_integrations/prometheus.markdown b/source/_integrations/prometheus.markdown
index 67f96ca0e71..b7b7623abe2 100644
--- a/source/_integrations/prometheus.markdown
+++ b/source/_integrations/prometheus.markdown
@@ -157,7 +157,7 @@ You can then configure Prometheus to fetch metrics from Home Assistant by adding
```yaml
# Example Prometheus scrape_configs entry
- - job_name: 'hass'
+ - job_name: "hass"
scrape_interval: 60s
metrics_path: /api/prometheus
@@ -166,7 +166,7 @@ You can then configure Prometheus to fetch metrics from Home Assistant by adding
api_password: ['PASSWORD']
# Long-Lived Access Token
- bearer_token: 'your.longlived.token'
+ bearer_token: "your.longlived.token"
scheme: https
static_configs:
diff --git a/source/_integrations/pvoutput.markdown b/source/_integrations/pvoutput.markdown
index f8a66c1eac3..d789e214361 100644
--- a/source/_integrations/pvoutput.markdown
+++ b/source/_integrations/pvoutput.markdown
@@ -58,21 +58,21 @@ sensor:
- platform: template
sensors:
power_consumption:
- value_template: '{% if is_state_attr("sensor.pvoutput", "power_consumption", "NaN") %}0{% else %}{{ state_attr("sensor.pvoutput", "power_consumption") }}{% endif %}'
- friendly_name: 'Using'
- unit_of_measurement: 'Watt'
+ value_template: "{% if is_state_attr("sensor.pvoutput", "power_consumption", "NaN") %}0{% else %}{{ state_attr("sensor.pvoutput", "power_consumption") }}{% endif %}"
+ friendly_name: "Using"
+ unit_of_measurement: "Watt"
energy_consumption:
value_template: '{{ "%0.1f"|format(state_attr("sensor.pvoutput", "energy_consumption")|float/1000) }}'
- friendly_name: 'Used'
- unit_of_measurement: 'kWh'
+ friendly_name: "Used"
+ unit_of_measurement: "kWh"
power_generation:
value_template: '{% if is_state_attr("sensor.pvoutput", "power_generation", "NaN") %}0{% else %}{{ state_attr("sensor.pvoutput", "power_generation") }}{% endif %}'
- friendly_name: 'Generating'
- unit_of_measurement: 'Watt'
+ friendly_name: "Generating"
+ unit_of_measurement: "Watt"
energy_generation:
value_template: '{% if is_state_attr("sensor.pvoutput", "energy_generation", "NaN") %}0{% else %}{{ "%0.2f"|format(state_attr("sensor.pvoutput", "energy_generation")|float/1000) }}{% endif %}'
- friendly_name: 'Generated'
- unit_of_measurement: 'kWh'
+ friendly_name: "Generated"
+ unit_of_measurement: "kWh"
```
{% endraw %}
diff --git a/source/_integrations/qbittorrent.markdown b/source/_integrations/qbittorrent.markdown
index 22c28349065..e487643c5e5 100644
--- a/source/_integrations/qbittorrent.markdown
+++ b/source/_integrations/qbittorrent.markdown
@@ -24,7 +24,7 @@ To enable this sensor, add the following lines to your `configuration.yaml`:
# Example configuration.yaml entry
sensor:
- platform: qbittorrent
- url: 'http://:'
+ url: "http://:"
username: YOUR_USERNAME
password: YOUR_PASSWORD
```
diff --git a/source/_integrations/rainbird.markdown b/source/_integrations/rainbird.markdown
index a87ac1922be..c5529b33899 100644
--- a/source/_integrations/rainbird.markdown
+++ b/source/_integrations/rainbird.markdown
@@ -123,7 +123,7 @@ automation:
- alias: Turn irrigation on
trigger:
platform: time
- at: '5:30:00'
+ at: "5:30:00"
action:
service: rainbird.start_irrigation
entity_id: switch.sprinkler_1
diff --git a/source/_integrations/recswitch.markdown b/source/_integrations/recswitch.markdown
index 6fb3507f046..345edab92b7 100644
--- a/source/_integrations/recswitch.markdown
+++ b/source/_integrations/recswitch.markdown
@@ -24,8 +24,8 @@ To enable this switch, add the following lines to your `configuration.yaml`:
# Example configuration.yaml entry
switch:
- platform: recswitch
- host: 'IP_ADDRESS'
- mac: 'MAC_ADDRESS'
+ host: "IP_ADDRESS"
+ mac: "MAC_ADDRESS"
```
{% configuration %}
diff --git a/source/_integrations/rejseplanen.markdown b/source/_integrations/rejseplanen.markdown
index 42a52de42d1..852e1718abd 100644
--- a/source/_integrations/rejseplanen.markdown
+++ b/source/_integrations/rejseplanen.markdown
@@ -20,7 +20,7 @@ Add a sensor to your `configuration.yaml` file as shown in the example:
# Example configuration.yaml entry
sensor:
- platform: rejseplanen
- stop_id: 'YOUR_STOP_ID'
+ stop_id: "YOUR_STOP_ID"
```
{% configuration %}
@@ -94,7 +94,7 @@ A working example on how to use this sensor with direction:
# Example configuration.yaml entry with the correct use of direction.
sensor:
- platform: rejseplanen
- stop_id: '713000702'
+ stop_id: "713000702"
direction:
- 'Bjergegårdsvej/Rylevej (Favrskov Kom)'
- 'Skanderborg Busterminal (Skanderborg Kom)'
@@ -126,9 +126,9 @@ A more extensive example on how to use this sensor:
# Example configuration.yaml entry
sensor:
- platform: rejseplanen
- name: 'Elmegade 350S'
- stop_id: '000045740'
- route: 'Bus 350S'
+ name: "Elmegade 350S"
+ stop_id: "000045740"
+ route: "Bus 350S"
direction:
- 'Herlev St.'
- 'Ballerup St.'
diff --git a/source/_integrations/rest.markdown b/source/_integrations/rest.markdown
index c2b5739ce75..e8297f6bc9d 100644
--- a/source/_integrations/rest.markdown
+++ b/source/_integrations/rest.markdown
@@ -27,7 +27,7 @@ sensor:
- platform: rest
resource: http://IP_ADDRESS/ENDPOINT
method: POST
- payload: '{ "device" : "heater" }'
+ payload: "{ "device" : "heater" }"
```
or a template based request:
diff --git a/source/_integrations/rest_command.markdown b/source/_integrations/rest_command.markdown
index e5b9e51ca01..40fbbb9e388 100644
--- a/source/_integrations/rest_command.markdown
+++ b/source/_integrations/rest_command.markdown
@@ -19,7 +19,7 @@ To use this component, add the following lines to your `configuration.yaml` file
# Example configuration.yaml entry
rest_command:
example_request:
- url: 'http://example.com/'
+ url: "http://example.com/"
```
{% configuration %}
@@ -105,7 +105,7 @@ rest_command:
method: POST
headers:
authorization: !secret rest_headers_secret
- accept: 'application/json, text/html'
+ accept: "application/json, text/html"
user-agent: 'Mozilla/5.0 {{ useragent }}'
payload: '{"profile":{"status_text": "{{ status }}","status_emoji": "{{ emoji }}"}}'
content_type: 'application/json; charset=utf-8'
@@ -129,7 +129,7 @@ Call the new service from [developer tools](/docs/tools/dev-tools/) in the sideb
```yaml
automation:
-- alias: 'Arrive at Work'
+- alias: "Arrive at Work"
trigger:
platform: zone
entity_id: device_tracker.my_device
diff --git a/source/_integrations/script.markdown b/source/_integrations/script.markdown
index 6e45c642dd1..3a66e6d3a04 100644
--- a/source/_integrations/script.markdown
+++ b/source/_integrations/script.markdown
@@ -210,7 +210,7 @@ script:
sequence:
- condition: state
entity_id: switch.pushover_notifications
- state: 'on'
+ state: "on"
- service: notify.pushover
data:
title: "{% raw %}{{ title }}{% endraw %}"
diff --git a/source/_integrations/sensor.markdown b/source/_integrations/sensor.markdown
index 9e04f7c3db2..46cf2ec4191 100644
--- a/source/_integrations/sensor.markdown
+++ b/source/_integrations/sensor.markdown
@@ -19,16 +19,16 @@ The way these sensors are displayed in the frontend can be modified in the [cust
- **None**: Generic sensor. This is the default and doesn't need to be set.
- **battery**: Percentage of battery that is left.
+- **current**: Current in A.
+- **energy**: Energy in Wh or kWh.
- **humidity**: Percentage of humidity in the air.
- **illuminance**: The current light level in lx or lm.
- **signal_strength**: Signal strength in dB or dBm.
- **temperature**: Temperature in °C or °F.
- **power**: Power in W or kW.
+- **power_factor**: Power factor in %.
- **pressure**: Pressure in hPa or mbar.
- **timestamp**: Datetime object or timestamp string (ISO 8601).
-- **current**: Current in A.
-- **energy**: Energy in Wh or kWh.
-- **power_factor**: Power Factor in %.
- **voltage**: Voltage in V.
diff --git a/source/_integrations/simplisafe.markdown b/source/_integrations/simplisafe.markdown
index 203f45a6eea..689a9e6b2c0 100644
--- a/source/_integrations/simplisafe.markdown
+++ b/source/_integrations/simplisafe.markdown
@@ -105,30 +105,51 @@ following keys:
* `system_id`: the system ID to which the event belongs
* `timestamp`: the UTC datetime at which the event was received
-For example, when the system is armed by "remote" means (via the web app, etc.), a
+For example, when someone rings the doorbell, a
`SIMPLISAFE_EVENT` event will fire with the following event data:
```python
{
- "changed_by": "",
- "event_type": "armed_home",
- "info": "System Armed (Home) by Remote Management",
- "sensor_name": "",
- "sensor_serial": "",
- "sensor_type": "remote",
- "system_id": 123456,
- "timestamp": datetime.datetime(2020, 2, 13, 23, 1, 13, tzinfo=),
+ "event_type": "SIMPLISAFE_EVENT",
+ "data": {
+ "last_event_changed_by": "",
+ "last_event_type": "doorbell_detected",
+ "last_event_info": "Someone is at your \"Front Door\"",
+ "last_event_sensor_name": "Front Door",
+ "last_event_sensor_serial": "",
+ "last_event_sensor_type": "doorbell",
+ "system_id": [systemid],
+ "last_event_timestamp": "2021-01-28T22:01:32+00:00"
+ },
+ "origin": "LOCAL",
+ "time_fired": "2021-01-28T22:01:37.478539+00:00",
+ "context": {
+ "id": "[id]",
+ "parent_id": null,
+ "user_id": null
+ }
}
```
-`event_type`, being one of the key fields automations might be built from, can have the
-following values:
+`last_event_type` can have the following values:
* `camera_motion_detected`
* `doorbell_detected`
* `entry_detected`
* `motion_detected`
+To build an automation using one of these, use `SIMPLISAFE_EVENT`
+as an event trigger, with `last_event_type` as the `event_data`.
+For example, the following will trigger when the doorbell rings:
+
+```yaml
+trigger:
+ - platform: event
+ event_type: SIMPLISAFE_EVENT
+ event_data:
+ last_event_type: doorbell_detected
+```
+
### `SIMPLISAFE_NOTIFICATION`
`SIMPLISAFE_NOTIFICATION` events represent system notifications that would appear in the
diff --git a/source/_integrations/switchbot.markdown b/source/_integrations/switchbot.markdown
index d6329ca4a79..6457db41d20 100644
--- a/source/_integrations/switchbot.markdown
+++ b/source/_integrations/switchbot.markdown
@@ -24,7 +24,7 @@ switch:
{% configuration %}
mac:
- description: The device MAC address with lower-case letters.
+ description: The device MAC address with upper-case letters.
required: true
type: string
name:
diff --git a/source/_integrations/usgs_earthquakes_feed.markdown b/source/_integrations/usgs_earthquakes_feed.markdown
index 2a24463e2f9..115375269aa 100644
--- a/source/_integrations/usgs_earthquakes_feed.markdown
+++ b/source/_integrations/usgs_earthquakes_feed.markdown
@@ -118,3 +118,15 @@ geo_location:
latitude: 35.899722
longitude: -120.432778
```
+## Card Example
+
+Assuming you configure this service using `feed_type: past_week_all_earthquakes`, you can create a corresponding map card in the Lovelace UI with the following card:
+```yaml
+type: map
+name: Earthquakes
+geo_location_sources:
+ - usgs_earthquakes_feed
+entities:
+ - zone.home
+title: Nearby Earthquakes Last Week
+```
diff --git a/source/_integrations/velbus.markdown b/source/_integrations/velbus.markdown
index 9fe9f7003d7..8fe3c7f0dbe 100644
--- a/source/_integrations/velbus.markdown
+++ b/source/_integrations/velbus.markdown
@@ -125,18 +125,18 @@ The actual linking can be realized by two automation rules. One rule to control
conditions:
- condition: state
entity_id: light.led_push_button_10
- state: 'on'
+ state: "on"
- condition: state
entity_id: light.living
- state: 'off'
+ state: "off"
- condition: and
conditions:
- condition: state
entity_id: light.led_push_button_10
- state: 'off'
+ state: "off"
- condition: state
entity_id: light.living
- state: 'on'
+ state: "on"
- entity_id: light.led_push_button_10
service: light.toggle
```
diff --git a/source/_integrations/workday.markdown b/source/_integrations/workday.markdown
index dedaba4ddd4..239ce73dbda 100644
--- a/source/_integrations/workday.markdown
+++ b/source/_integrations/workday.markdown
@@ -138,7 +138,7 @@ automation:
condition:
condition: state
entity_id: 'binary_sensor.workday_sensor'
- state: 'on'
+ state: "on"
action:
service: switch.turn_on
entity_id: switch.heater
diff --git a/source/_lovelace/picture-elements.markdown b/source/_lovelace/picture-elements.markdown
index 40cdd2a0607..0141895c8c7 100644
--- a/source/_lovelace/picture-elements.markdown
+++ b/source/_lovelace/picture-elements.markdown
@@ -591,9 +591,9 @@ elements:
- type: conditional
conditions:
- entity: sensor.presence_daughter
- state: 'home'
+ state: "home"
- entity: sensor.presence_dad
- state: 'not_home'
+ state: "not_home"
elements:
- type: state-icon
entity: switch.tv
diff --git a/source/_posts/2015-06-10-release-notes.markdown b/source/_posts/2015-06-10-release-notes.markdown
index 9df261da598..1cc34717ac4 100644
--- a/source/_posts/2015-06-10-release-notes.markdown
+++ b/source/_posts/2015-06-10-release-notes.markdown
@@ -85,7 +85,7 @@ __Bitcoin sensor__
# Example configuration.yaml entry
sensor:
platform: bitcoin
- wallet: 'YOUR WALLET_ID'
+ wallet: "YOUR WALLET_ID"
password: YOUR_ACCOUNT_PASSWORD
currency: YOUR CURRENCY
display_options:
diff --git a/source/_posts/2015-08-09-mqtt-raspberry-pi-squeezebox-asuswrt-support.markdown b/source/_posts/2015-08-09-mqtt-raspberry-pi-squeezebox-asuswrt-support.markdown
index 663de9aef84..fe80c2603cf 100644
--- a/source/_posts/2015-08-09-mqtt-raspberry-pi-squeezebox-asuswrt-support.markdown
+++ b/source/_posts/2015-08-09-mqtt-raspberry-pi-squeezebox-asuswrt-support.markdown
@@ -76,7 +76,7 @@ __Slack notification support__
notify:
platform: slack
api_key: ABCDEFGHJKLMNOPQRSTUVXYZ
- default_channel: '#general'
+ default_channel: "#general"
```
__Edimax Smart Switches support__
diff --git a/source/_posts/2015-08-26-laundry-automation-with-moteino-mqtt-and-home-assistant.markdown b/source/_posts/2015-08-26-laundry-automation-with-moteino-mqtt-and-home-assistant.markdown
index 0683a8325de..3ad4c1c0218 100644
--- a/source/_posts/2015-08-26-laundry-automation-with-moteino-mqtt-and-home-assistant.markdown
+++ b/source/_posts/2015-08-26-laundry-automation-with-moteino-mqtt-and-home-assistant.markdown
@@ -81,8 +81,8 @@ automation:
platform: state
state_entity_id: sensor.dryer_status
- state_from: 'Running'
- state_to: 'Complete'
+ state_from: "Running"
+ state_to: "Complete"
execute_service: script.turn_on
service_entity_id: script.dryer_complete
@@ -92,8 +92,8 @@ automation 2:
platform: state
state_entity_id: sensor.dryer_status
- state_from: 'Complete'
- state_to: 'Empty'
+ state_from: "Complete"
+ state_to: "Empty"
execute_service: script.turn_on
service_entity_id: script.dryer_cleared
diff --git a/source/_posts/2016-08-03-laundry-automation-update.markdown b/source/_posts/2016-08-03-laundry-automation-update.markdown
index e79c21b229a..e50f95f3c6e 100644
--- a/source/_posts/2016-08-03-laundry-automation-update.markdown
+++ b/source/_posts/2016-08-03-laundry-automation-update.markdown
@@ -77,8 +77,8 @@ automation:
trigger:
platform: state
entity_id: sensor.washer_status
- from: 'Running'
- to: 'Complete'
+ from: "Running"
+ to: "Complete"
action:
service: script.turn_on
entity_id: script.washer_complete
@@ -87,8 +87,8 @@ automation:
trigger:
platform: state
entity_id: sensor.washer_status
- from: 'Complete'
- to: 'Empty'
+ from: "Complete"
+ to: "Empty"
action:
service: scene.turn_on
entity_id: scene.normal
diff --git a/source/_posts/2016-10-08-hassbian-rest-digital-ocean.markdown b/source/_posts/2016-10-08-hassbian-rest-digital-ocean.markdown
index d49233c9e4c..fbe4f362187 100644
--- a/source/_posts/2016-10-08-hassbian-rest-digital-ocean.markdown
+++ b/source/_posts/2016-10-08-hassbian-rest-digital-ocean.markdown
@@ -49,7 +49,7 @@ sensor
username: YOUR_GITHUB_USERNAME
password: YOUR_GITHUB_ACCESS_TOKEN
authentication: basic
- value_template: '{% raw %}{{ value_json.tag_name }}{% endraw %}'
+ value_template: "{% raw %}{{ value_json.tag_name }}{% endraw %}"
headers:
Accept: application/vnd.github.v3+json
Content-Type: application/json
diff --git a/source/_posts/2017-02-04-babyphone.markdown b/source/_posts/2017-02-04-babyphone.markdown
index b4fcb1d5bb1..0a13c85ae48 100644
--- a/source/_posts/2017-02-04-babyphone.markdown
+++ b/source/_posts/2017-02-04-babyphone.markdown
@@ -72,22 +72,22 @@ input_boolean:
initial: off
automation:
- - alias: 'Babyphone on'
+ - alias: "Babyphone on"
trigger:
platform: state
entity_id: input_boolean.babyphone
- from: 'off'
- to: 'on'
+ from: "off"
+ to: "on"
action:
service: ffmpeg.start
entity_id: binary_sensor.ffmpeg_noise
- - alias: 'Babyphone off'
+ - alias: "Babyphone off"
trigger:
platform: state
entity_id: input_boolean.babyphone
- from: 'on'
- to: 'off'
+ from: "on"
+ to: "off"
action:
service: ffmpeg.stop
entity_id: binary_sensor.ffmpeg_noise
@@ -99,12 +99,12 @@ Now we can make a lot stuff. Here is a simple example of an automation what shou
```yaml
automation:
- - alias: 'Babyphone alarm on'
+ - alias: "Babyphone alarm on"
trigger:
platform: state
entity_id: binary_sensor.ffmpeg_noise
- from: 'off'
- to: 'on'
+ from: "off"
+ to: "on"
action:
- service: media_player.sonos_snapshot
entity_id: media_player.bedroom
@@ -117,7 +117,7 @@ automation:
- service: media_player.play_media
entity_id: media_player.bedroom
data:
- media_content_type: 'music'
+ media_content_type: "music"
media_content_id: http://my_ip_icecast:8000/babyphone.mp3
- service: light.turn_on:
entity_id:
@@ -126,12 +126,12 @@ automation:
data:
brightness: 150
- - alias: 'Babyphone alarm off'
+ - alias: "Babyphone alarm off"
trigger:
platform: state
entity_id: binary_sensor.ffmpeg_noise
- from: 'on'
- to: 'off'
+ from: "on"
+ to: "off"
action:
- service: media_player.sonos_restore
entity_id: media_player.bedroom
diff --git a/source/_posts/2017-03-28-http-to-mqtt-bridge.markdown b/source/_posts/2017-03-28-http-to-mqtt-bridge.markdown
index dcb718b4ada..49be7e99aa7 100644
--- a/source/_posts/2017-03-28-http-to-mqtt-bridge.markdown
+++ b/source/_posts/2017-03-28-http-to-mqtt-bridge.markdown
@@ -53,11 +53,11 @@ automation:
alias: HTTP to MQTT keep alive
trigger:
platform: time_pattern
- minutes: '/10'
+ minutes: "/10"
condition:
condition: time
- after: '7:30:00'
- before: '23:59:59'
+ after: "7:30:00"
+ before: "23:59:59"
action:
service: rest_command.http_to_mqtt_keep_alive
```
diff --git a/source/_posts/2017-04-22-ikea-tradfri--spotify.markdown b/source/_posts/2017-04-22-ikea-tradfri--spotify.markdown
index 1591e2ceef5..8dd4c7aa5d3 100644
--- a/source/_posts/2017-04-22-ikea-tradfri--spotify.markdown
+++ b/source/_posts/2017-04-22-ikea-tradfri--spotify.markdown
@@ -72,13 +72,13 @@ 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']
- station: Scheidplatz
products: ['U-Bahn']
- directions: '1'
+ directions: "1"
```
## If you need help...
diff --git a/source/_posts/2017-04-25-influxdb-grafana-docker.markdown b/source/_posts/2017-04-25-influxdb-grafana-docker.markdown
index 7c4ca36bc28..689d73e5dce 100644
--- a/source/_posts/2017-04-25-influxdb-grafana-docker.markdown
+++ b/source/_posts/2017-04-25-influxdb-grafana-docker.markdown
@@ -48,8 +48,8 @@ Instead of running [InfluxDB](https://www.influxdata.com/) and Grafana on a Rasp
```yaml
panel_iframe:
router:
- title: 'Temperature'
- url: 'http://192.168.2.113:3003/dashboard/db/temperature?edit&tab=time%20range'
+ title: "Temperature"
+ url: "http://192.168.2.113:3003/dashboard/db/temperature?edit&tab=time%20range"
```
The URL can be obtained by clicking Share Dashboard link on your dashboard:
diff --git a/source/_posts/2017-10-28-demo.markdown b/source/_posts/2017-10-28-demo.markdown
index 0294193f663..ce40642b6d6 100644
--- a/source/_posts/2017-10-28-demo.markdown
+++ b/source/_posts/2017-10-28-demo.markdown
@@ -81,7 +81,7 @@ binary_sensor:
sensors:
on_tester:
value_template: "{{ states.input_boolean.on_off.state == 'on' }}"
- friendly_name: 'Movement'
+ friendly_name: "Movement"
device_class: motion
```
diff --git a/source/_posts/2018-01-14-release-61.markdown b/source/_posts/2018-01-14-release-61.markdown
index 5a5ccf108d6..1c366775108 100644
--- a/source/_posts/2018-01-14-release-61.markdown
+++ b/source/_posts/2018-01-14-release-61.markdown
@@ -97,9 +97,9 @@ Note however, that this feature was replaced by a new ignore_string config optio
alexa:
entity_config:
switch.kitchen:
- name: 'Name for Alexa'
- description: 'Description for Alexa'
- display_categories: 'LIGHT'
+ name: "Name for Alexa"
+ description: "Description for Alexa"
+ display_categories: "LIGHT"
```
([@balloob] - [#11461]) ([cloud docs]) ([alexa.smart_home docs]) (breaking change)
- The extension of the `alpha_vantage` requires an update of the configuration as now are exchange data available as well. ([@ChristianKuehnel] - [#11427]) ([sensor.alpha_vantage docs]) (breaking change)
diff --git a/source/_posts/2018-06-04-esphomelib.markdown b/source/_posts/2018-06-04-esphomelib.markdown
index 3c68102ea4a..0c1f495af26 100644
--- a/source/_posts/2018-06-04-esphomelib.markdown
+++ b/source/_posts/2018-06-04-esphomelib.markdown
@@ -43,13 +43,13 @@ esphomeyaml:
board: nodemcuv2
wifi:
- ssid: 'MySSID'
- password: 'MyPassword'
+ ssid: "MySSID"
+ password: "MyPassword"
mqtt:
- broker: '192.168.178.83'
- username: ''
- password: ''
+ broker: "192.168.178.83"
+ username: ""
+ password: ""
logger:
ota:
diff --git a/source/_posts/2019-08-28-release-98.markdown b/source/_posts/2019-08-28-release-98.markdown
index b94a38bf296..b2e139bd5ca 100644
--- a/source/_posts/2019-08-28-release-98.markdown
+++ b/source/_posts/2019-08-28-release-98.markdown
@@ -287,7 +287,7 @@ anymore. - ([@abmantis] - [#25971])
Example configuration entry:
```yaml
- platform: statistics
- name: 'MiAP2 PSI Stat'
+ name: "MiAP2 PSI Stat"
entity_id: sensor.mi_ap2_aqi
```
diff --git a/source/_posts/2020-01-15-release-104.markdown b/source/_posts/2020-01-15-release-104.markdown
index 16037541a7a..f84ee462414 100644
--- a/source/_posts/2020-01-15-release-104.markdown
+++ b/source/_posts/2020-01-15-release-104.markdown
@@ -358,8 +358,8 @@ Make sure to fill in all fields of the issue template, that is helping us a lot!
```yaml
media_player:
- platform: vizio
- host: ':'
- access_token: ''
+ host: ":"
+ access_token: ""
device_class: tv
```
diff --git a/source/_posts/2020-02-05-release-105.markdown b/source/_posts/2020-02-05-release-105.markdown
index a60f6f205c7..d726f35b697 100644
--- a/source/_posts/2020-02-05-release-105.markdown
+++ b/source/_posts/2020-02-05-release-105.markdown
@@ -436,11 +436,11 @@ Experiencing issues introduced by this release? Please report them in our [issue
```yaml
tts:
- platform: marytts
- host: 'localhost'
+ host: "localhost"
port: 59125
- codec: 'WAVE_FILE'
- voice: 'cmu-slt-hsmm'
- language: 'en_US'
+ codec: "WAVE_FILE"
+ voice: "cmu-slt-hsmm"
+ language: "en_US"
effect:
Volume: "amount:2.0;",
TractScaler: "amount:1.5;",
diff --git a/source/_posts/2020-02-11-android-16-17-release.markdown b/source/_posts/2020-02-11-android-16-17-release.markdown
index 173d6bcfc4c..c623d7ce03c 100644
--- a/source/_posts/2020-02-11-android-16-17-release.markdown
+++ b/source/_posts/2020-02-11-android-16-17-release.markdown
@@ -25,8 +25,8 @@ automation:
trigger:
platform: state
entity_id: cover.garage_door
- from: 'closed'
- to: 'open'
+ from: "closed"
+ to: "open"
for: ‘0:30:00’
action:
service: notify.mobile_app_robbies_pixel_5
diff --git a/source/_posts/2020-07-01-release-112.markdown b/source/_posts/2020-07-01-release-112.markdown
index cd5e8dbd58c..0b3511569a8 100644
--- a/source/_posts/2020-07-01-release-112.markdown
+++ b/source/_posts/2020-07-01-release-112.markdown
@@ -342,7 +342,7 @@ automation:
action:
- service: xiaomi_miio.vacuum_clean_zone
data:
- repeats: '{{states('input_number.vacuum_passes')|int}}'
+ repeats: "{{states('input_number.vacuum_passes')|int}}"
zone: [[30914,26007,35514,28807], [20232,22496,26032,26496]]
```
@@ -363,7 +363,7 @@ automation:
- service: xiaomi_miio.vacuum_clean_zone
data:
entity_id: vacuum.xiaomi_vacuum
- repeats: '{{states('input_number.vacuum_passes')|int}}'
+ repeats: "{{states('input_number.vacuum_passes')|int}}"
zone: [[30914,26007,35514,28807], [20232,22496,26032,26496]]
```
diff --git a/source/_posts/2020-10-07-release-116.markdown b/source/_posts/2020-10-07-release-116.markdown
index f4ca91afdee..dbbcd13aadb 100644
--- a/source/_posts/2020-10-07-release-116.markdown
+++ b/source/_posts/2020-10-07-release-116.markdown
@@ -433,12 +433,12 @@ Before this change:
state_address: "2/0/33"
automation:
- counter: 1
- hook: 'on'
+ hook: "on"
action:
- entity_id: cover.sonne_abstellkammer
service: cover.open_cover
- counter: 1
- hook: 'off'
+ hook: "off"
action:
- entity_id: cover.sonne_abstellkammer
service: cover.close_cover
@@ -455,7 +455,7 @@ After this change:
```yaml
# automation.yaml
automation:
- - alias: 'Binary sensor test counter=1 on'
+ - alias: "Binary sensor test counter=1 on"
trigger:
platform: numeric_state
entity_id: binary_sensor.cover_abstell
@@ -465,12 +465,12 @@ automation:
condition:
- condition: state
entity_id: binary_sensor.cover_abstell
- state: 'on'
+ state: "on"
action:
- service: cover.open_cover
entity_id: cover.sonne_abstellkammer
- - alias: 'Binary sensor test counter=1 off'
+ - alias: "Binary sensor test counter=1 off"
trigger:
platform: numeric_state
entity_id: binary_sensor.cover_abstell
@@ -480,7 +480,7 @@ automation:
condition:
- condition: state
entity_id: binary_sensor.cover_abstell
- state: 'off'
+ state: "off"
action:
- service: cover.close_cover
entity_id: cover.sonne_abstellkammer
diff --git a/source/lovelace/header-footer.markdown b/source/lovelace/header-footer.markdown
index 330a047a6d6..e44835cab33 100644
--- a/source/lovelace/header-footer.markdown
+++ b/source/lovelace/header-footer.markdown
@@ -16,7 +16,7 @@ Widget to show a picture as a header or a footer. A picture can have touch actio
```yaml
header:
type: picture
- image: 'https://www.home-assistant.io/images/lovelace/header-footer/balloons-header.png'
+ image: "https://www.home-assistant.io/images/lovelace/header-footer/balloons-header.png"
```
{% configuration header-footer %}
@@ -52,9 +52,9 @@ footer:
entities:
- script.launch_confetti
- entity: script.swirl_lights
- icon: 'mdi:track-light'
+ icon: "mdi:track-light"
- entity: script.run_siren
- icon: 'mdi:alarm-light'
+ icon: "mdi:alarm-light"
```
{% configuration header-footer %}