Merge branch 'current' into next
17
.github/ISSUE_TEMPLATE/feedback.yml
vendored
@ -2,8 +2,8 @@ name: Documentation feedback
|
||||
about: Provide feedback on a page on our website
|
||||
title: ""
|
||||
issue_body: true
|
||||
inputs:
|
||||
- type: description
|
||||
body:
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
Thanks for opening an issue to provide feedback on our website/documentation.
|
||||
@ -15,36 +15,37 @@ inputs:
|
||||
- type: textarea
|
||||
attributes:
|
||||
label: Feedback
|
||||
required: true
|
||||
description: >-
|
||||
Please be sure to provide feedback as clear as possible. Describe what
|
||||
you think is incorrect or can be improved, and try to provide a
|
||||
suggestion on how you think it can be improved or fixed.
|
||||
- type: description
|
||||
validations:
|
||||
required: true
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
## Details
|
||||
- type: input
|
||||
attributes:
|
||||
label: URL
|
||||
required: true
|
||||
placeholder: "http://www.home-assistant.io/..."
|
||||
description: >
|
||||
A URL with a link to the page you are providing feedback for.
|
||||
validations:
|
||||
required: true
|
||||
- type: input
|
||||
attributes:
|
||||
label: Version
|
||||
required: false
|
||||
placeholder: "e.g., 2021.2.0"
|
||||
description: >
|
||||
Current version of the documentation. This usually matches the Home
|
||||
Assistant Core release version, and can be found at the bottom of the
|
||||
page.
|
||||
- type: description
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: |
|
||||
## Additional information
|
||||
- type: description
|
||||
- type: markdown
|
||||
attributes:
|
||||
value: >
|
||||
If you have any additional information for us, use the field below.
|
||||
|
2
.github/workflows/stale.yml
vendored
@ -8,7 +8,7 @@ jobs:
|
||||
stale:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/stale@v3.0.16
|
||||
- uses: actions/stale@v3.0.17
|
||||
with:
|
||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||
days-before-stale: 60
|
||||
|
@ -179,7 +179,7 @@ toc:
|
||||
# Configuration for installation pages
|
||||
installation:
|
||||
versions:
|
||||
os: "5.11"
|
||||
os: "5.12"
|
||||
python: "3.8"
|
||||
types:
|
||||
odroid:
|
||||
|
@ -1,24 +1,19 @@
|
||||
module Jekyll
|
||||
class DetailsBlock < Liquid::Block
|
||||
|
||||
def render_details_block(vars:, converter:, classes: nil, parent_type: nil)
|
||||
result = Array.new
|
||||
result << vars.map do |entry|
|
||||
markup = Array.new
|
||||
markup << "<div class='details-block-item' onclick='showDetails(this)'>"
|
||||
markup << "<div class='details-block-title'>#{entry['title']}"
|
||||
markup << '<svg id="down" style="display: block;" width="24" height="24" viewBox="0 0 24 24"><path d="M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z" /></svg>'
|
||||
markup << '<svg id="up" style="display: none;" width="24" height="24" viewBox="0 0 24 24"><path d="M7.41,15.41L12,10.83L16.59,15.41L18,14L12,8L6,14L7.41,15.41Z" /></svg>'
|
||||
markup << "</div>"
|
||||
markup << "<div class='details-block-content' hidden onclick>#{converter.convert(entry['content'].to_s)}</div>"
|
||||
markup << "</div>"
|
||||
end
|
||||
result.join
|
||||
def initialize(tag_name, title, tokens)
|
||||
super
|
||||
@title = title
|
||||
end
|
||||
|
||||
def render(context)
|
||||
contents = super(context)
|
||||
vars = SafeYAML.load(contents)
|
||||
if @title.nil? || @title.empty? then
|
||||
title = "More info"
|
||||
else
|
||||
title = @title
|
||||
end
|
||||
title = title.to_s.delete("\"")
|
||||
|
||||
site = context.registers[:site]
|
||||
converter = site.find_converter_instance(::Jekyll::Converters::Markdown)
|
||||
@ -26,16 +21,23 @@ module Jekyll
|
||||
<<~MARKUP
|
||||
<script>
|
||||
function showDetails(el) {
|
||||
const content = el.querySelector(".details-block-content");
|
||||
const up = el.querySelector(".details-block-title").querySelector("svg#up");
|
||||
const down = el.querySelector(".details-block-title").querySelector("svg#down");
|
||||
const content = el.parentElement.querySelector(".details-block-content");
|
||||
const up = el.querySelector("svg#up");
|
||||
const down = el.querySelector("svg#down");
|
||||
up.style.display = up.style.display === "none" ? "block" : "none";
|
||||
down.style.display = down.style.display === "none" ? "block" : "none";
|
||||
content.hidden = !content.hidden;
|
||||
}
|
||||
</script>
|
||||
<div class="details-block">
|
||||
#{render_details_block(vars: vars, converter: converter)}
|
||||
<div class='details-block-item'>
|
||||
<div class='details-block-title' onclick='showDetails(this)'>
|
||||
#{title}
|
||||
<svg id="down" style="display: block;" width="24" height="24" viewBox="0 0 24 24"><path d="M7.41,8.58L12,13.17L16.59,8.58L18,10L12,16L6,10L7.41,8.58Z" /></svg>
|
||||
<svg id="up" style="display: none;" width="24" height="24" viewBox="0 0 24 24"><path d="M7.41,15.41L12,10.83L16.59,15.41L18,14L12,8L6,14L7.41,15.41Z" /></svg>
|
||||
</div>
|
||||
<div class='details-block-content' hidden>#{converter.convert(contents.to_s)}</div>
|
||||
</div>
|
||||
</div>
|
||||
MARKUP
|
||||
end
|
||||
|
@ -6,7 +6,6 @@ div.details-block {
|
||||
background-color: white;
|
||||
padding: 4px 16px;
|
||||
margin: 8px;
|
||||
cursor: pointer;
|
||||
box-shadow: 0px 4px 20px rgba(0, 0, 0, 0.1);
|
||||
border-radius: 16px;
|
||||
|
||||
@ -14,6 +13,7 @@ div.details-block {
|
||||
font-weight: bold;
|
||||
font-size: 18px;
|
||||
line-height: 21px;
|
||||
cursor: pointer;
|
||||
height: 54px;
|
||||
justify-content: space-between;
|
||||
display: flex;
|
||||
|
@ -109,7 +109,7 @@ automation:
|
||||
to: "None"
|
||||
action:
|
||||
service: media_player.turn_off
|
||||
data:
|
||||
target:
|
||||
entity_id: >
|
||||
{% if is_state("input_select.radio_player", "Mansarda") %}
|
||||
media_player.bed_2
|
||||
@ -133,7 +133,7 @@ automation:
|
||||
entity_id: input_select.radio_station
|
||||
action:
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
target:
|
||||
entity_id: >
|
||||
{% if is_state("input_select.radio_player", "Mansarda") %}
|
||||
media_player.bed_2
|
||||
@ -150,6 +150,7 @@ automation:
|
||||
{% else %}
|
||||
none
|
||||
{% endif %}
|
||||
data:
|
||||
media_content_id: >
|
||||
{% if is_state("input_select.radio_station", "Z88.3") %}
|
||||
http://ice.zradio.org/z/high.mp3
|
||||
|
@ -95,13 +95,14 @@ Templates can also be used for the data that you pass to the service call.
|
||||
|
||||
```yaml
|
||||
service: thermostat.set_temperature
|
||||
data:
|
||||
target:
|
||||
entity_id: >
|
||||
{% if is_state('device_tracker.paulus', 'home') %}
|
||||
thermostat.upstairs
|
||||
{% else %}
|
||||
thermostat.downstairs
|
||||
{% endif %}
|
||||
data:
|
||||
temperature: {{ 22 - distance(states.device_tracker.paulus) }}
|
||||
```
|
||||
|
||||
|
@ -112,7 +112,7 @@ Minimum recommended assignments:
|
||||
|
||||
- 2GB RAM
|
||||
- 32GB Storage
|
||||
- 1vCPU
|
||||
- 2vCPU
|
||||
|
||||
_All these can be extended if your usage calls for more resources._
|
||||
|
||||
|
@ -252,7 +252,9 @@ Some notifiers support more parameters (e.g., to set text color or action
|
||||
# Example configuration.yaml entry
|
||||
alert:
|
||||
garage_door:
|
||||
name: Garage is open
|
||||
name: "Garage is open"
|
||||
message: "The garage door is still open"
|
||||
done_message: "The garage door is closed"
|
||||
entity_id: input_boolean.garage_door
|
||||
state: "on" # Optional, 'on' is the default value
|
||||
repeat:
|
||||
@ -270,4 +272,20 @@ alert:
|
||||
This particular example relies on the `inline_keyboard` functionality of
|
||||
Telegram, where the user is presented with buttons to execute certain actions.
|
||||
|
||||
Based on the example above you can make an automation to stop further messages,
|
||||
but you will still receive the done message.
|
||||
|
||||
```yaml
|
||||
- alias: "Telegram callback to stop alerts for garage door"
|
||||
trigger:
|
||||
- platform: event
|
||||
event_type: telegram_callback
|
||||
event_data:
|
||||
data: "/garage_acknowledge"
|
||||
action:
|
||||
- service: alert.turn_off
|
||||
target:
|
||||
entity_id: alert.garage_door
|
||||
```
|
||||
|
||||
[template]: /docs/configuration/templating/
|
||||
|
@ -58,7 +58,7 @@ Enabling the battery tracking might slightly decrease the duration of the batter
|
||||
|
||||
For additional configuration variables check the [Device tracker page](/integrations/device_tracker/).
|
||||
|
||||
## Home Assistant Core installs
|
||||
{% details "Notes for Home Assistant Core Installations" %}
|
||||
|
||||
On Debian based Home Assistant Core installations, run:
|
||||
|
||||
@ -68,8 +68,8 @@ sudo apt install bluetooth
|
||||
|
||||
Before you get started with this platform, please note that:
|
||||
|
||||
- This platform is incompatible with Windows
|
||||
- This platform requires access to the Bluetooth stack, see [Rootless Setup section](#rootless-setup) for further information
|
||||
- This platform is incompatible with Windows
|
||||
- This platform requires access to the Bluetooth stack, see [Rootless Setup section](#rootless-setup) for further information
|
||||
|
||||
### Rootless Setup on Core installs
|
||||
|
||||
@ -82,3 +82,5 @@ sudo setcap 'cap_net_raw+ep' $(readlink -f $(which hcitool))
|
||||
```
|
||||
|
||||
A restart of Home Assistant is required.
|
||||
|
||||
{% enddetails %}
|
||||
|
@ -12,12 +12,16 @@ ha_platforms:
|
||||
|
||||
This tracker discovers new devices on boot and tracks Bluetooth devices periodically based on `interval_seconds` value. It is not required to pair the devices with each other! Devices discovered are stored with 'bt_' as the prefix for device MAC addresses in `known_devices.yaml`.
|
||||
|
||||
This platform requires pybluez to be installed. On Debian based installs, run
|
||||
{% details "Notes for Home Assistant Core Installations" %}
|
||||
|
||||
This platform requires `pybluez` to be installed. On Debian based installs, run
|
||||
|
||||
```bash
|
||||
sudo apt install bluetooth libbluetooth-dev
|
||||
```
|
||||
|
||||
{% enddetails %}
|
||||
|
||||
To use the Bluetooth tracker in your installation, add the following to your `configuration.yaml` file:
|
||||
|
||||
```yaml
|
||||
|
@ -45,12 +45,12 @@ automation:
|
||||
at: "07:15:00"
|
||||
action:
|
||||
- service: fan.set_percentage
|
||||
data:
|
||||
target:
|
||||
entity_id: fan.kitchen
|
||||
data:
|
||||
percentage: 33
|
||||
```
|
||||
|
||||
|
||||
### Service `fan.set_preset_mode`
|
||||
|
||||
Sets a preset mode for fan device.
|
||||
@ -69,8 +69,9 @@ automation:
|
||||
at: "07:15:00"
|
||||
action:
|
||||
- service: fan.set_preset_mode
|
||||
data:
|
||||
target:
|
||||
entity_id: fan.kitchen
|
||||
data:
|
||||
preset_mode: auto
|
||||
```
|
||||
|
||||
@ -92,8 +93,9 @@ automation:
|
||||
at: "07:15:00"
|
||||
action:
|
||||
- service: fan.set_direction
|
||||
data:
|
||||
target:
|
||||
entity_id: fan.kitchen
|
||||
data:
|
||||
direction: forward
|
||||
```
|
||||
|
||||
@ -115,8 +117,9 @@ automation:
|
||||
at: "07:15:00"
|
||||
action:
|
||||
- service: fan.oscillate
|
||||
data:
|
||||
target:
|
||||
entity_id: fan.kitchen
|
||||
data:
|
||||
oscillating: True
|
||||
```
|
||||
|
||||
@ -157,8 +160,9 @@ automation:
|
||||
at: "07:15:00"
|
||||
action:
|
||||
- service: fan.set_speed
|
||||
data:
|
||||
target:
|
||||
entity_id: fan.kitchen
|
||||
data:
|
||||
speed: low
|
||||
```
|
||||
|
||||
@ -183,7 +187,8 @@ automation:
|
||||
subtype: raise
|
||||
action:
|
||||
- service: fan.increase_speed
|
||||
entity_id: fan.dining_room_fan_by_front_door
|
||||
target:
|
||||
entity_id: fan.dining_room_fan_by_front_door
|
||||
```
|
||||
|
||||
### Service `fan.decrease_speed`
|
||||
@ -207,5 +212,6 @@ automation:
|
||||
subtype: lower
|
||||
action:
|
||||
- service: fan.decrease_speed
|
||||
entity_id: fan.dining_room_fan_by_front_door
|
||||
target:
|
||||
entity_id: fan.dining_room_fan_by_front_door
|
||||
```
|
||||
|
@ -102,8 +102,6 @@ sensor:
|
||||
monitored_conditions:
|
||||
- sensor_type: inverter
|
||||
device: 1
|
||||
- sensor_type: meter
|
||||
scope: system
|
||||
- sensor_type: meter
|
||||
device: 3
|
||||
- sensor_type: storage
|
||||
|
@ -88,7 +88,7 @@ precision:
|
||||
description: "The desired precision for this device. Can be used to match your actual thermostat's precision. Supported values are `0.1`, `0.5` and `1.0`. This value is also used as the step size for setting the target temperature."
|
||||
required: false
|
||||
type: float
|
||||
default: "`0.5` for Celsius and `1.0` for Fahrenheit."
|
||||
default: "`0.1` for Celsius and `1.0` for Fahrenheit."
|
||||
{% endconfiguration %}
|
||||
|
||||
Time for `min_cycle_duration` and `keep_alive` must be set as "hh:mm:ss" or it must contain at least one of the following entries: `days:`, `hours:`, `minutes:`, `seconds:` or `milliseconds:`. Alternatively, it can be an integer that represents time in seconds.
|
||||
|
@ -85,8 +85,9 @@ automation:
|
||||
to: "on"
|
||||
action:
|
||||
- service: light.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: light.hyperion
|
||||
data:
|
||||
effect: "Full color mood blobs"
|
||||
```
|
||||
|
||||
@ -106,8 +107,9 @@ To have the lights playing an effect when pausing, idle or turn off a media play
|
||||
to: "idle"
|
||||
action:
|
||||
- service: light.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: light.hyperion
|
||||
data:
|
||||
effect: "Full color mood blobs"
|
||||
```
|
||||
|
||||
@ -121,7 +123,8 @@ To capture the screen when playing something on a media_player you can use this
|
||||
to: "playing"
|
||||
action:
|
||||
- service: light.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: light.hyperion
|
||||
data:
|
||||
effect: V4L
|
||||
```
|
||||
|
@ -44,7 +44,7 @@ automation:
|
||||
platform: event
|
||||
condition: []
|
||||
action:
|
||||
- data:
|
||||
- target:
|
||||
entity_id: '{{ trigger.event.data.entity_id }}'
|
||||
service: '{{ trigger.event.data.service }}'
|
||||
```
|
||||
|
@ -131,8 +131,9 @@ automation:
|
||||
entity_id: input_number.bedroom_brightness
|
||||
action:
|
||||
- service: light.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: light.bedroom
|
||||
data:
|
||||
brightness: "{{ trigger.to_state.state | int }}"
|
||||
```
|
||||
|
||||
@ -170,8 +171,9 @@ automation:
|
||||
to: CUSTOM
|
||||
action:
|
||||
- service: light.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: light.bedroom
|
||||
data:
|
||||
brightness: "{{ states('input_number.bedroom_brightness') | int }}"
|
||||
```
|
||||
|
||||
@ -201,8 +203,9 @@ automation:
|
||||
topic: "setTemperature"
|
||||
action:
|
||||
service: input_number.set_value
|
||||
data:
|
||||
target:
|
||||
entity_id: input_number.target_temp
|
||||
data:
|
||||
value: "{{ trigger.payload }}"
|
||||
|
||||
# This second automation script runs when the target temperature slider is moved.
|
||||
|
@ -141,8 +141,9 @@ automation:
|
||||
event_type: MY_CUSTOM_EVENT
|
||||
action:
|
||||
- service: input_select.select_option
|
||||
data:
|
||||
target:
|
||||
entity_id: input_select.who_cooks
|
||||
data:
|
||||
option: Paulus
|
||||
```
|
||||
|
||||
@ -157,8 +158,9 @@ automation:
|
||||
event_type: MY_CUSTOM_EVENT
|
||||
action:
|
||||
- service: input_select.set_options
|
||||
data:
|
||||
target:
|
||||
entity_id: input_select.who_cooks
|
||||
data:
|
||||
options: ["Item A", "Item B", "Item C"]
|
||||
```
|
||||
|
||||
@ -189,9 +191,10 @@ input_select:
|
||||
topic: "thermostatMode"
|
||||
# entity_id: input_select.thermostat_mode
|
||||
action:
|
||||
service: input_select.select_option
|
||||
data:
|
||||
service: input_select.select_option
|
||||
target:
|
||||
entity_id: input_select.thermostat_mode
|
||||
data:
|
||||
option: "{{ trigger.payload }}"
|
||||
|
||||
# This automation script runs when the thermostat mode selector is changed.
|
||||
|
@ -133,8 +133,9 @@ automation:
|
||||
entity_id: input_select.scene_bedroom
|
||||
action:
|
||||
- service: input_text.set_value
|
||||
data:
|
||||
target:
|
||||
entity_id: input_text.bedroom
|
||||
data:
|
||||
value: "{{ states('input_select.scene_bedroom') }}"
|
||||
```
|
||||
|
||||
|
@ -116,8 +116,9 @@ automation:
|
||||
event_type: keyboard_remote_connected
|
||||
action:
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.speaker
|
||||
data:
|
||||
media_content_id: keyboard_connected.wav
|
||||
media_content_type: music
|
||||
|
||||
@ -129,8 +130,9 @@ automation:
|
||||
device_name: "00:58:56:4C:C0:91"
|
||||
action:
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.speaker
|
||||
data:
|
||||
media_content_id: keyboard_disconnected.wav
|
||||
media_content_type: music
|
||||
```
|
||||
|
@ -128,8 +128,9 @@ script:
|
||||
kodi_quit:
|
||||
sequence:
|
||||
- service: kodi.call_method
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.kodi
|
||||
data:
|
||||
method: Application.Quit
|
||||
```
|
||||
|
||||
@ -140,8 +141,9 @@ script:
|
||||
kodi_hibernate:
|
||||
sequence:
|
||||
- service: kodi.call_method
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.kodi
|
||||
data:
|
||||
method: System.Hibernate
|
||||
```
|
||||
|
||||
@ -152,8 +154,9 @@ script:
|
||||
kodi_suspend:
|
||||
sequence:
|
||||
- service: kodi.call_method
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.kodi
|
||||
data:
|
||||
method: System.Suspend
|
||||
```
|
||||
|
||||
@ -164,8 +167,9 @@ script:
|
||||
kodi_reboot:
|
||||
sequence:
|
||||
- service: kodi.call_method
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.kodi
|
||||
data:
|
||||
method: System.Reboot
|
||||
```
|
||||
|
||||
@ -176,8 +180,9 @@ script:
|
||||
kodi_shutdown:
|
||||
sequence:
|
||||
- service: kodi.call_method
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.kodi
|
||||
data:
|
||||
method: System.Shutdown
|
||||
```
|
||||
|
||||
@ -190,8 +195,9 @@ script:
|
||||
turn_on_kodi_with_cec:
|
||||
sequence:
|
||||
- service: kodi.call_method
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.kodi
|
||||
data:
|
||||
method: Addons.ExecuteAddon
|
||||
addonid: script.json-cec
|
||||
params:
|
||||
@ -200,11 +206,12 @@ script:
|
||||
turn_off_kodi_with_cec:
|
||||
sequence:
|
||||
- service: media_player.media_stop
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.kodi
|
||||
- service: kodi.call_method
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.kodi
|
||||
data:
|
||||
method: Addons.ExecuteAddon
|
||||
addonid: script.json-cec
|
||||
params:
|
||||
@ -230,12 +237,13 @@ script:
|
||||
sequence:
|
||||
- alias: "TV on"
|
||||
service: media_player.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.kodi
|
||||
- alias: "Play TV channel"
|
||||
service: media_player.play_media
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.kodi
|
||||
data:
|
||||
media_content_type: "CHANNEL"
|
||||
media_content_id: >
|
||||
{% if (now().hour < 14) or ((now().hour == 14) and (now().minute < 50)) %}
|
||||
@ -266,11 +274,12 @@ script:
|
||||
sequence:
|
||||
- alias: "TV on"
|
||||
service: media_player.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.kodi
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.kodi
|
||||
data:
|
||||
media_content_type: DIRECTORY
|
||||
media_content_id: special://profile/playlists/video/feuerwehrmann_sam.xsp
|
||||
```
|
||||
@ -286,8 +295,9 @@ script:
|
||||
sequence:
|
||||
- alias: "Call Kodi update"
|
||||
service: kodi.call_method
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.kodi
|
||||
data:
|
||||
method: VideoLibrary.Scan
|
||||
```
|
||||
|
||||
|
@ -17,7 +17,7 @@ This integration connects Brightech Kuler Sky floor lamps to Home Assistant.
|
||||
|
||||
{% include integrations/config_flow.md %}
|
||||
|
||||
## Additional information for Home Assistant Core on Python environments
|
||||
{% details "Notes for Home Assistant Core Installations" %}
|
||||
|
||||
This integration requires `pybluez` to be installed. On Debian based installs, run:
|
||||
|
||||
@ -38,3 +38,5 @@ sudo apt-get install libcap2-bin
|
||||
sudo setcap 'cap_net_raw,cap_net_admin+eip' `readlink -f \`which python3\``
|
||||
sudo setcap 'cap_net_raw+ep' `readlink -f \`which hcitool\``
|
||||
```
|
||||
|
||||
{% enddetails %}
|
||||
|
@ -31,6 +31,8 @@ Or, when using Docker containers:
|
||||
docker exec -it <containername> pylacrosse -d /dev/ttyUSB0 scan
|
||||
```
|
||||
|
||||
For TX 29 DTH-IT sensors you can also read the ID from the display and calculate the ID as followed: `hex2dec(ID_on_display) / 4`.
|
||||
|
||||
## Configuration
|
||||
|
||||
To use your `lacrosse` compatible sensor in your installation, add the following to your `configuration.yaml` file:
|
||||
|
@ -58,6 +58,6 @@ media_player:
|
||||
host: 192.168.0.20
|
||||
turn_on_action:
|
||||
service: switch.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: switch.tv_switch
|
||||
```
|
||||
|
@ -47,8 +47,9 @@ automation:
|
||||
# ...
|
||||
action:
|
||||
- service: light.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: light.office, light.kitchen
|
||||
data:
|
||||
effect: lifx_effect_pulse
|
||||
```
|
||||
|
||||
@ -59,8 +60,9 @@ script:
|
||||
alias: "Start colorloop"
|
||||
sequence:
|
||||
- service: lifx.effect_colorloop
|
||||
data:
|
||||
target:
|
||||
entity_id: group.livingroom
|
||||
data:
|
||||
brightness: 255
|
||||
period: 10
|
||||
spread: 30
|
||||
|
@ -53,7 +53,8 @@ script:
|
||||
alias: "Kitchen lights on"
|
||||
sequence:
|
||||
service: light.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: light.kitchen_lights
|
||||
data:
|
||||
brightness: 100
|
||||
```
|
||||
|
@ -59,8 +59,9 @@ automation:
|
||||
to: "on"
|
||||
action:
|
||||
- service: light.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: light.living_room
|
||||
data:
|
||||
brightness: 255
|
||||
kelvin: 2700
|
||||
```
|
||||
@ -73,8 +74,9 @@ automation:
|
||||
platform: time
|
||||
action:
|
||||
- service: light.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: light.ledliststair
|
||||
data:
|
||||
brightness: 130
|
||||
rgb_color: [255,0,0]
|
||||
```
|
||||
|
@ -178,18 +178,21 @@ light:
|
||||
{% endif %}
|
||||
turn_on:
|
||||
service: media_player.volume_mute
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.receiver
|
||||
data:
|
||||
is_volume_muted: false
|
||||
turn_off:
|
||||
service: media_player.volume_mute
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.receiver
|
||||
data:
|
||||
is_volume_muted: true
|
||||
set_level:
|
||||
service: media_player.volume_set
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.receiver
|
||||
data:
|
||||
volume_level: "{{ (brightness / 255 * 100)|int / 100 }}"
|
||||
level_template: >-
|
||||
{% if is_state('media_player.receiver', 'on') %}
|
||||
@ -235,13 +238,15 @@ light:
|
||||
{% endif %}
|
||||
turn_on:
|
||||
service: media_player.volume_mute
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.receiver
|
||||
data:
|
||||
is_volume_muted: false
|
||||
turn_off:
|
||||
service: media_player.volume_mute
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.receiver
|
||||
data:
|
||||
is_volume_muted: true
|
||||
```
|
||||
|
||||
@ -281,13 +286,15 @@ light:
|
||||
{% endif %}
|
||||
turn_on:
|
||||
service: media_player.volume_mute
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.receiver
|
||||
data:
|
||||
is_volume_muted: false
|
||||
turn_off:
|
||||
service: media_player.volume_mute
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.receiver
|
||||
data:
|
||||
is_volume_muted: true
|
||||
```
|
||||
|
||||
|
@ -111,8 +111,11 @@ automation:
|
||||
# ...
|
||||
action:
|
||||
- service: light.turn_on
|
||||
target:
|
||||
entity_id:
|
||||
- light.office
|
||||
- light.kitchen
|
||||
data:
|
||||
entity_id: light.office, light.kitchen
|
||||
effect: night
|
||||
```
|
||||
|
||||
|
@ -31,7 +31,7 @@ Lock your door, the attribute should appear under a 'data' attribute for the ser
|
||||
```yaml
|
||||
action:
|
||||
service: lock.lock
|
||||
data:
|
||||
target:
|
||||
entity_id: lock.my_place
|
||||
```
|
||||
|
||||
@ -48,7 +48,7 @@ Unlock your door, the attribute should appear under a 'data' attribute for the s
|
||||
```yaml
|
||||
action:
|
||||
service: lock.unlock
|
||||
data:
|
||||
target:
|
||||
entity_id: lock.my_place
|
||||
```
|
||||
|
||||
|
@ -31,11 +31,11 @@ lock:
|
||||
value_template: "{{ is_state('sensor.door', 'on') }}"
|
||||
lock:
|
||||
service: switch.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: switch.door
|
||||
unlock:
|
||||
service: switch.turn_off
|
||||
data:
|
||||
target:
|
||||
entity_id: switch.door
|
||||
```
|
||||
|
||||
@ -96,11 +96,11 @@ lock:
|
||||
value_template: "{{ is_state('switch.source', 'on') }}"
|
||||
lock:
|
||||
service: switch.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: switch.source
|
||||
unlock:
|
||||
service: switch.turn_off
|
||||
data:
|
||||
target:
|
||||
entity_id: switch.source
|
||||
```
|
||||
|
||||
@ -120,11 +120,11 @@ lock:
|
||||
optimistic: true
|
||||
lock:
|
||||
service: switch.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: switch.source
|
||||
unlock:
|
||||
service: switch.turn_off
|
||||
data:
|
||||
target:
|
||||
entity_id: switch.source
|
||||
```
|
||||
|
||||
@ -143,11 +143,11 @@ lock:
|
||||
value_template: "{{ is_state('sensor.skylight.state', 'on') }}"
|
||||
lock:
|
||||
service: switch.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: switch.skylight_open
|
||||
unlock:
|
||||
service: switch.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: switch.skylight_close
|
||||
```
|
||||
|
||||
|
@ -65,8 +65,9 @@ Default `media_dir`is `local`.
|
||||
Example:
|
||||
```yaml
|
||||
service: media_player.play_media
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.living_room_tv
|
||||
data:
|
||||
media_content_type: video/mp4
|
||||
media_content_id: media-source://media_source/local/videos/favourites/Epic Sax Guy 10 Hours.mp4
|
||||
```
|
||||
|
@ -63,8 +63,9 @@ The `play_media` function can be used in scripts to change channels:
|
||||
change_channel:
|
||||
sequence:
|
||||
service: media_player.play_media
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.mediaroom_stb
|
||||
data:
|
||||
media_content_id: "{{ channel_number }}"
|
||||
media_content_type: "channel"
|
||||
```
|
||||
@ -81,8 +82,9 @@ The `play_media` function can also be used to trigger actions on the set-up-box
|
||||
press_button:
|
||||
sequence:
|
||||
service: media_player.play_media
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.mediaroom_stb
|
||||
data:
|
||||
media_content_id: "{{ action }}"
|
||||
media_content_type: "mediaroom"
|
||||
```
|
||||
|
@ -50,14 +50,16 @@ Example script to load a saved playlist called "DeckMusic" and set the volume:
|
||||
relaxdeck:
|
||||
sequence:
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.main
|
||||
data:
|
||||
media_content_type: playlist
|
||||
media_content_id: DeckMusic
|
||||
|
||||
- service: media_player.volume_set
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.main
|
||||
data:
|
||||
volume_level: 0.60
|
||||
```
|
||||
|
||||
|
@ -34,14 +34,15 @@ The state is the last reading from Nightscout, and you can see other information
|
||||
alias: "overnight_low_kitchen_lights"
|
||||
description: Turn on the lights in the kitchen if my blood sugar drops low overnight
|
||||
trigger:
|
||||
- below: "65"
|
||||
- platform: numeric_state
|
||||
entity_id: sensor.blood_glucose
|
||||
platform: numeric_state
|
||||
condition: time
|
||||
after: "22:00:00"
|
||||
before: "06:00:00"
|
||||
below: "65"
|
||||
condition:
|
||||
- condition: time
|
||||
after: "22:00:00"
|
||||
before: "06:00:00"
|
||||
action:
|
||||
- service: light.turn_on
|
||||
data:
|
||||
- service: light.turn_on
|
||||
target:
|
||||
entity_id: light.kitchen
|
||||
```
|
||||
|
@ -123,11 +123,12 @@ script:
|
||||
alias: "Radio 1"
|
||||
sequence:
|
||||
- service: media_player.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.onkyo
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.onkyo
|
||||
data:
|
||||
media_content_type: "radio"
|
||||
media_content_id: "1"
|
||||
```
|
||||
|
@ -25,9 +25,9 @@ media_player:
|
||||
```yaml
|
||||
action:
|
||||
- service: media_player.play_media
|
||||
target:
|
||||
entity_id: media_player.linn_bedroom
|
||||
data:
|
||||
entity_id:
|
||||
- media_player.linn_bedroom
|
||||
media_content_id: "http://172.24.32.13/Doorbell.mp3"
|
||||
media_content_type: music
|
||||
```
|
||||
@ -36,9 +36,9 @@ action:
|
||||
|
||||
```yaml
|
||||
- service: media_player.play_media
|
||||
target:
|
||||
entity_id: media_player.linn_bedroom
|
||||
data:
|
||||
entity_id:
|
||||
- media_player.linn_bedroom
|
||||
media_content_id: "http://media-ice.musicradio.com:80/ClassicFMMP3"
|
||||
media_content_type: music
|
||||
```
|
||||
|
@ -47,6 +47,10 @@ id:
|
||||
description: "The `gateway_id` for this OpenTherm Gateway's entity IDs and services. The entered value will be slugified."
|
||||
{% endconfiguration_basic %}
|
||||
|
||||
<div class='note warning'>
|
||||
Please make sure no other device or application is connected to the OpenTherm Gateway at the same time as Home Assistant. This is not a supported scenario and may lead to unexpected results.
|
||||
</div>
|
||||
|
||||
<div class='note'>
|
||||
The precision and floor_temperature settings that were supported in configuration.yaml entries have been lost upon import of the configuration.yaml entry into the Integrations panel. You can now configure them as per the following Options paragraph.
|
||||
</div>
|
||||
|
@ -74,17 +74,18 @@ script:
|
||||
alias: "Show who's at the door"
|
||||
sequence:
|
||||
- service: media_player.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.living_room_tv
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.living_room_tv
|
||||
data:
|
||||
media_content_type: "url"
|
||||
media_content_id: YOUR_URL
|
||||
- delay:
|
||||
seconds: 5
|
||||
- service: media_player.media_stop
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.living_room_tv
|
||||
```
|
||||
|
||||
|
@ -1,7 +1,6 @@
|
||||
---
|
||||
title: Pencom
|
||||
description: How to use Pencom Designs 8 channel relay boards.
|
||||
logo: pencom.png
|
||||
ha_category:
|
||||
- Switch
|
||||
ha_release: 0.85
|
||||
|
@ -250,8 +250,9 @@ play_plex_on_tv:
|
||||
timeout: "00:00:10"
|
||||
continue_on_timeout: false
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.plex_smart_tv
|
||||
data:
|
||||
media_content_id: "{"library_name": "Movies", "title": "Zoolander"}"
|
||||
media_content_type: movie
|
||||
```
|
||||
|
@ -70,7 +70,7 @@ script:
|
||||
force_adam_update:
|
||||
sequence:
|
||||
- service: homeassistant.update_entity
|
||||
data:
|
||||
target:
|
||||
entity_id: climate.anna
|
||||
```
|
||||
|
||||
@ -89,8 +89,9 @@ script:
|
||||
lisa_reactive_last_schedule:
|
||||
sequence:
|
||||
- service: climate.set_hvac_mode
|
||||
data:
|
||||
target:
|
||||
entity_id: climate.lisa_bios
|
||||
data:
|
||||
hvac_mode: auto
|
||||
```
|
||||
|
||||
@ -113,8 +114,9 @@ script:
|
||||
anna_set_predefined_temperature:
|
||||
sequence:
|
||||
- service: climate.set_temperature
|
||||
data:
|
||||
target:
|
||||
entity_id: climate.anna
|
||||
data:
|
||||
temperature: 19.5
|
||||
```
|
||||
|
||||
|
@ -67,9 +67,10 @@ if entity_id is not None:
|
||||
The above `python_script` can be called using the following YAML as an input.
|
||||
|
||||
```yaml
|
||||
service: python_script.turn_on_light
|
||||
data:
|
||||
- service: python_script.turn_on_light
|
||||
target:
|
||||
entity_id: light.bedroom
|
||||
data:
|
||||
rgb_color: [255, 0, 0]
|
||||
```
|
||||
|
||||
|
@ -122,17 +122,6 @@ monitored_conditions:
|
||||
|
||||
If your QNAP device uses self-signed certificates, set the `verify_ssl` option to `false`.
|
||||
|
||||
### QNAP device support:
|
||||
### QNAP device support
|
||||
|
||||
This integration has been tested on the following devices:
|
||||
|
||||
- TS-231P2 (QTS 4.4.2)
|
||||
- TS-259 Pro+ (QTS 4.2.6)
|
||||
- TS-228 (QTS 4.3.6)
|
||||
- TS-410 (QTS 4.2.3)
|
||||
- TS-419 (QTS 4.2.3)
|
||||
- TS-451 (QTS 4.2.2)
|
||||
- TS-470 (QTS 4.2.2)
|
||||
- TS-639 (QTS 4.2.3)
|
||||
|
||||
Other QNAP NAS devices using similar firmware should work fine. For more information about supported devices, or to report issues with your device, please visit the [qnapstats project](https://github.com/colinodell/python-qnapstats#device-support).
|
||||
This integration works with most (but not all) QNAP devices. A complete, up-to-date [list of compatible devices can be found here](https://github.com/colinodell/python-qnapstats#device-support).
|
||||
|
@ -88,11 +88,12 @@ script:
|
||||
run_grass_zones:
|
||||
sequence:
|
||||
- service: rachio.start_multiple_zone_schedule
|
||||
data:
|
||||
target:
|
||||
entity_id:
|
||||
- switch.front_yard_west
|
||||
- switch.front_yard_east
|
||||
- switch.side_yard_west
|
||||
data:
|
||||
duration: 20, 15, 10
|
||||
```
|
||||
|
||||
@ -102,11 +103,12 @@ script:
|
||||
run_grass_zones:
|
||||
sequence:
|
||||
- service: rachio.start_multiple_zone_schedule
|
||||
data:
|
||||
target:
|
||||
entity_id:
|
||||
- switch.front_yard_west
|
||||
- switch.front_yard_east
|
||||
- switch.side_yard_west
|
||||
data:
|
||||
duration: 20
|
||||
```
|
||||
### Service `rachio.set_zone_moisture_percent`
|
||||
|
@ -319,6 +319,14 @@ Once Home Assistant finds the database, with the right level of permissions, all
|
||||
|
||||
### PostgreSQL
|
||||
|
||||
Create the PostgreSQL database with `utf8` encoding. The PostgreSQL default encoding is `SQL_ASCII`. From the `postgres` user account;
|
||||
```bash
|
||||
createdb -E utf8 DB_NAME
|
||||
```
|
||||
Where `DB_NAME` is the name of your database
|
||||
|
||||
If the Database in use is not `utf8`, adding `?client_encoding=utf8` to the `db_url` may solve any issue.
|
||||
|
||||
For PostgreSQL you may have to install a few dependencies:
|
||||
|
||||
```bash
|
||||
|
@ -453,22 +453,22 @@ switch:
|
||||
data:
|
||||
led: 6
|
||||
- service: homeassistant.update_entity
|
||||
data:
|
||||
target:
|
||||
entity_id: sensor.steam_system_data
|
||||
- delay: 00:00:15
|
||||
- service: homeassistant.update_entity
|
||||
data:
|
||||
target:
|
||||
entity_id: sensor.steam_system_data
|
||||
turn_off:
|
||||
- service: rest_command.set_steam_led
|
||||
data:
|
||||
led: 7
|
||||
- service: homeassistant.update_entity
|
||||
data:
|
||||
target:
|
||||
entity_id: sensor.steam_system_data
|
||||
- delay: 00:00:15
|
||||
- service: homeassistant.update_entity
|
||||
data:
|
||||
target:
|
||||
entity_id: sensor.steam_system_data
|
||||
friendly_name: Steam
|
||||
|
||||
|
@ -67,8 +67,9 @@ A typical service call for pressing several buttons looks like this.
|
||||
|
||||
```yaml
|
||||
service: remote.send_command
|
||||
data:
|
||||
target:
|
||||
entity_id: remote.roku
|
||||
data:
|
||||
command:
|
||||
- left
|
||||
- left
|
||||
@ -80,8 +81,9 @@ data:
|
||||
When the Home Assistant Roku integration is enabled and a Roku device has been configured, in the Home Assistant UI the Roku media player will show a listing of the installed channels, or apps, under “source”. Select one and it will attempt to launch the channel on your Roku device. This action can also be automated. Channels can be launched by `name` using a configuration similar to the one below:
|
||||
```yaml
|
||||
action:
|
||||
- data:
|
||||
entity_id: media_player.roku
|
||||
- target:
|
||||
entity_id: media_player.
|
||||
data:
|
||||
source: "Prime Video"
|
||||
service: media_player.select_source
|
||||
```
|
||||
@ -106,21 +108,23 @@ To use this information in Home Assistant, the format is as follows. Note that `
|
||||
|
||||
```yaml
|
||||
action:
|
||||
- data:
|
||||
entity_id: media_player.roku
|
||||
source: 20197
|
||||
service: media_player.select_source
|
||||
- service: media_player.select_source
|
||||
target:
|
||||
entity_id: media_player.roku
|
||||
data:
|
||||
source: 20197
|
||||
```
|
||||
|
||||
It is also possible to tune directly to specific channels if you have a Roku TV and use an OTA antenna. This service only supports `media_channel_type` of 'channel'. `media_content_id` corresponds to the TV channel, which you should see when navigating to these on your TV UI.
|
||||
|
||||
```yaml
|
||||
action:
|
||||
- data:
|
||||
entity_id: media_player.roku
|
||||
media_content_id: 5.1
|
||||
media_content_type: channel
|
||||
service: media_player.play_media
|
||||
- service: media_player.play_media
|
||||
target:
|
||||
entity_id: media_player.roku
|
||||
data:
|
||||
media_content_id: 5.1
|
||||
media_content_type: channel
|
||||
```
|
||||
|
||||
## Remote
|
||||
|
@ -173,6 +173,6 @@ For example:
|
||||
to: "on"
|
||||
action:
|
||||
service: input_boolean.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: input_boolean.movement_detected
|
||||
```
|
||||
|
@ -116,8 +116,9 @@ automation:
|
||||
to: "home"
|
||||
action:
|
||||
service: scene.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: scene.romantic
|
||||
data:
|
||||
transition: 2.5
|
||||
```
|
||||
|
||||
@ -176,11 +177,12 @@ The following example turns off some entities as soon as a window opens. The sta
|
||||
- climate.ecobee
|
||||
- light.ceiling_lights
|
||||
- service: light.turn_off
|
||||
data:
|
||||
target:
|
||||
entity_id: light.ceiling_lights
|
||||
- service: climate.set_hvac_mode
|
||||
data:
|
||||
target:
|
||||
entity_id: climate.ecobee
|
||||
data:
|
||||
hvac_mode: "off"
|
||||
- alias: "Window closed"
|
||||
trigger:
|
||||
@ -191,6 +193,6 @@ The following example turns off some entities as soon as a window opens. The sta
|
||||
condition: []
|
||||
action:
|
||||
- service: scene.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: scene.before
|
||||
```
|
||||
|
@ -139,15 +139,16 @@ script:
|
||||
domain: light
|
||||
- alias: "Bedroom lights on"
|
||||
service: light.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: group.bedroom
|
||||
data:
|
||||
brightness: 100
|
||||
- delay:
|
||||
# supports seconds, milliseconds, minutes, hours
|
||||
minutes: "{{ minutes }}"
|
||||
- alias: "Living room lights on"
|
||||
service: light.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: "{{ turn_on_entity }}"
|
||||
```
|
||||
|
||||
|
@ -66,13 +66,14 @@ switch:
|
||||
value_template: "{{ is_state('climate.ac', 'cool') or is_state('climate.ac', 'heat') or is_state('climate.ac', 'dry') or is_state('climate.ac', 'fan_only') }}"
|
||||
turn_on:
|
||||
service: climate.set_hvac_mode
|
||||
data:
|
||||
target:
|
||||
entity_id: climate.ac
|
||||
hvac_mode: cool
|
||||
turn_off:
|
||||
service: climate.set_hvac_mode
|
||||
data:
|
||||
target:
|
||||
entity_id: climate.ac
|
||||
data:
|
||||
hvac_mode: off
|
||||
```
|
||||
|
||||
|
@ -13,9 +13,7 @@ ha_codeowners:
|
||||
|
||||
The `seven_segments` image processing platform allows you to read physical seven segments displays through Home Assistant. [`ssocr`](https://www.unix-ag.uni-kl.de/~auerswal/ssocr/) is used to extract the value shown on the display which is observed by a [camera](/integrations/camera/).
|
||||
|
||||
## Home Assistant Core Requirements
|
||||
|
||||
If you are running Home Assistant Core in a Python virtual environment, you need to ensure the following requirements are met.
|
||||
{% details "Notes for Home Assistant Core Installations" %}
|
||||
|
||||
`ssocr` needs to be available on your system. Check the installation instruction below:
|
||||
|
||||
@ -30,6 +28,8 @@ sudo make PREFIX=/usr install # On most systems
|
||||
make deb # (Optional) This allows you to make a deb so that you apt is aware of ssocr
|
||||
```
|
||||
|
||||
{% enddetails %}
|
||||
|
||||
## Configuration
|
||||
|
||||
To enable the OCR of a seven segment display in your installation, add the following to your `configuration.yaml` file:
|
||||
|
@ -153,8 +153,9 @@ intent_script:
|
||||
ActivateLightColor:
|
||||
action:
|
||||
- service: light.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: 'light.{{ objectLocation | replace(" ","_") }}'
|
||||
data:
|
||||
color_name: "{{ objectColor }}"
|
||||
```
|
||||
|
||||
@ -236,7 +237,7 @@ intent_script:
|
||||
text: "OK, opening the garage door"
|
||||
action:
|
||||
- service: cover.open_cover
|
||||
data:
|
||||
target:
|
||||
entity_id: garage_door
|
||||
```
|
||||
|
||||
|
@ -164,9 +164,10 @@ condition:
|
||||
{{ trigger.from_state.attributes.queue_position < trigger.to_state.attributes.queue_position }}
|
||||
action:
|
||||
- service: sonos.remove_from_queue
|
||||
data:
|
||||
target:
|
||||
entity_id: >
|
||||
{{ trigger.entity_id }}
|
||||
data:
|
||||
queue_position: >
|
||||
{{ trigger.from_state.attributes.queue_position }}
|
||||
```
|
||||
|
@ -60,8 +60,9 @@ You can switch between one of your 6 pre-configured presets using ```media_playe
|
||||
```yaml
|
||||
# Play media preset
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.soundtouch_living_room
|
||||
data:
|
||||
media_content_id: 1..6
|
||||
media_content_type: PLAYLIST
|
||||
```
|
||||
@ -71,8 +72,9 @@ You can also play HTTP (not HTTPS) URLs:
|
||||
```yaml
|
||||
# Play media URL
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.soundtouch_living_room
|
||||
data:
|
||||
media_content_id: http://example.com/music.mp3
|
||||
media_content_type: MUSIC
|
||||
```
|
||||
|
@ -96,8 +96,9 @@ script:
|
||||
play_jazz_guitar:
|
||||
sequence:
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.spotify
|
||||
data:
|
||||
media_content_id: "https://open.spotify.com/playlist/5xddIVAtLrZKtt4YGLM1SQ?si=YcvRqaKNTxOi043Qn4LYkg"
|
||||
media_content_type: playlist
|
||||
```
|
||||
|
@ -30,8 +30,9 @@ transporter_toslink:
|
||||
target:
|
||||
entity_id: media_player.transporter
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.transporter
|
||||
data:
|
||||
media_content_id: "source:toslink"
|
||||
media_content_type: "music"
|
||||
```
|
||||
|
@ -47,8 +47,9 @@ For example, the following action in an automation would take a recording from `
|
||||
```yaml
|
||||
action:
|
||||
service: camera.record
|
||||
data:
|
||||
target:
|
||||
entity_id: camera.quintal
|
||||
data:
|
||||
filename: "/config/www/my_stream.mp4"
|
||||
duration: 30
|
||||
```
|
||||
|
@ -30,11 +30,11 @@ switch:
|
||||
value_template: "{{ is_state('sensor.skylight', 'on') }}"
|
||||
turn_on:
|
||||
service: switch.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: switch.skylight_open
|
||||
turn_off:
|
||||
service: switch.turn_off
|
||||
data:
|
||||
target:
|
||||
entity_id: switch.skylight_close
|
||||
```
|
||||
|
||||
@ -104,11 +104,11 @@ switch:
|
||||
value_template: "{{ is_state('switch.source', 'on') }}"
|
||||
turn_on:
|
||||
service: switch.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: switch.target
|
||||
turn_off:
|
||||
service: switch.turn_off
|
||||
data:
|
||||
target:
|
||||
entity_id: switch.target
|
||||
```
|
||||
|
||||
@ -129,11 +129,11 @@ switch:
|
||||
value_template: "{{ is_state_attr('switch.blind_toggle', 'sensor_state', 'on') }}"
|
||||
turn_on:
|
||||
service: switch.toggle
|
||||
data:
|
||||
target:
|
||||
entity_id: switch.blind_toggle
|
||||
turn_off:
|
||||
service: switch.toggle
|
||||
data:
|
||||
target:
|
||||
entity_id: switch.blind_toggle
|
||||
```
|
||||
|
||||
@ -155,11 +155,11 @@ switch:
|
||||
value_template: "{{ is_state('sensor.skylight', 'on') }}"
|
||||
turn_on:
|
||||
service: switch.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: switch.skylight_open
|
||||
turn_off:
|
||||
service: switch.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: switch.skylight_close
|
||||
```
|
||||
|
||||
@ -179,11 +179,11 @@ switch:
|
||||
value_template: "{{ is_state('cover.garage_door', 'on') }}"
|
||||
turn_on:
|
||||
service: cover.open_cover
|
||||
data:
|
||||
target:
|
||||
entity_id: cover.garage_door
|
||||
turn_off:
|
||||
service: cover.close_cover
|
||||
data:
|
||||
target:
|
||||
entity_id: cover.garage_door
|
||||
icon_template: >-
|
||||
{% if is_state('cover.garage_door', 'open') %}
|
||||
@ -209,11 +209,11 @@ switch:
|
||||
value_template: "{{ is_state('cover.garage_door', 'on') }}"
|
||||
turn_on:
|
||||
service: cover.open_cover
|
||||
data:
|
||||
target:
|
||||
entity_id: cover.garage_door
|
||||
turn_off:
|
||||
service: cover.close_cover
|
||||
data:
|
||||
target:
|
||||
entity_id: cover.garage_door
|
||||
entity_picture_template: >-
|
||||
{% if is_state('cover.garage_door', 'open') %}
|
||||
|
@ -152,13 +152,15 @@ script:
|
||||
boost_heating:
|
||||
sequence:
|
||||
- service: tado.set_climate_timer
|
||||
data:
|
||||
target:
|
||||
entity_id: climate.heating
|
||||
data:
|
||||
time_period: "01:30:00"
|
||||
temperature: 25
|
||||
- service: tado.set_water_heater_timer
|
||||
data:
|
||||
target:
|
||||
entity_id: water_heater.hot_water
|
||||
data:
|
||||
time_period: "01:30:00"
|
||||
```
|
||||
|
||||
@ -184,8 +186,9 @@ automation:
|
||||
# Work out what the new offset should be (tado temp less the room temp but add the current offset value) and turn that to a negative value for setting as the new offset
|
||||
action:
|
||||
- service: tado.set_climate_temperature_offset
|
||||
data:
|
||||
target:
|
||||
entity_id: climate.tado
|
||||
data:
|
||||
offset: >
|
||||
{% set tado_temp = states('sensor.tado_temperature')|float %}
|
||||
{% set room_temp = states('sensor.temp_sensor_room')|float %}
|
||||
|
@ -23,7 +23,7 @@ To make tags accessible to anyone in your house hold, there is also a [standalon
|
||||
|
||||
## Writing your first tag
|
||||
|
||||
The easiest way to get started with tags is to use NFC tags ([stickers](https://amzn.to/3bQU0nN), [cards](https://amzn.to/2RlqPzM)) with the official Home Assistant mobile apps. Once you have scanned a card, hover it with your phone to scan it.
|
||||
The easiest way to get started with tags is to use NFC tags ([stickers](https://amzn.to/3bQU0nN), [cards](https://amzn.to/2RlqPzM)) with the official Home Assistant mobile apps. Once you have written a card, hover it with your phone to scan it.
|
||||
|
||||
<div class="videoWrapper">
|
||||
<iframe width="853" height="480" src="https://www.youtube-nocookie.com/embed/Xc120lClUgA" frameborder="0" allow="autoplay; encrypted-media" allowfullscreen></iframe>
|
||||
@ -81,8 +81,9 @@ automation:
|
||||
media_content_id: "{{ tags[trigger.event.data.tag_id].media_content_id }}"
|
||||
media_content_type: "{{ tags[trigger.event.data.tag_id].media_content_type }}"
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
target:
|
||||
entity_id: "{{ media_player_entity_id }}"
|
||||
data:
|
||||
media_content_id: "{{ media_content_id }}"
|
||||
media_content_type: "{{ media_content_type }}"
|
||||
- delay: 2 # timeout before we allow processing next scan
|
||||
|
@ -10,10 +10,7 @@ ha_domain: tensorflow
|
||||
|
||||
The `tensorflow` image processing platform allows you to detect and recognize objects in a camera image using [TensorFlow](https://www.tensorflow.org/). The state of the entity is the number of objects detected, and recognized objects are listed in the `summary` attribute along with quantity. The `matches` attribute provides the confidence `score` for recognition and the bounding `box` of the object for each detection category.
|
||||
|
||||
## Home Assistant Core
|
||||
|
||||
If you are using the Home Assistant Core installation type, some additional requirements and steps apply.
|
||||
For all other installation types, this section can be skipped.
|
||||
{% details "Notes for Home Assistant Core Installations" %}
|
||||
|
||||
The following packages must be installed on Debian before following the setup for the integration to work:
|
||||
`sudo apt-get install libatlas-base-dev libopenjp2-7 libtiff5`
|
||||
@ -27,6 +24,8 @@ See [the official install guide](https://www.tensorflow.org/install/) for other
|
||||
Furthermore, the official Python TensorFlow wheels by Google, require your CPU to support the `avx` extension.
|
||||
If your CPU lacks those capabilities, Home Assistant will crash when using TensorFlow, without any message.
|
||||
|
||||
{% enddetails %}
|
||||
|
||||
## Preparation
|
||||
|
||||
This integration requires files to be downloaded, compiled on your computer, and added to the Home Assistant configuration directory. These steps can be performed by cloning [this repository](https://github.com/hunterjm/hass-tensorflow) into your configuration directory. Alternatively, if you wish to perform the process manually, the process is as follows:
|
||||
|
@ -54,7 +54,15 @@ automation:
|
||||
entity_id: scene.OnArmedAway
|
||||
```
|
||||
|
||||
If you have issues running this component, you may require `libxml2-dev` and `libxmlsec1-dev` packages. To install these on Raspbian, run the command `apt install libxml2-dev libxmlsec1-dev` with sudo.
|
||||
{% details "Notes for Home Assistant Core Installations" %}
|
||||
|
||||
If you have issues running this component, you may require `libxml2-dev` and `libxmlsec1-dev` packages. To install these on Raspbian, run the command:
|
||||
|
||||
```bash
|
||||
sudo apt install libxml2-dev libxmlsec1-dev
|
||||
```
|
||||
|
||||
{% enddetails %}
|
||||
|
||||
## Alarm Control Panel
|
||||
|
||||
|
@ -102,33 +102,35 @@ media_player:
|
||||
commands:
|
||||
turn_on:
|
||||
service: switch.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: switch.living_room_tv
|
||||
turn_off:
|
||||
service: switch.turn_off
|
||||
data:
|
||||
target:
|
||||
entity_id: switch.living_room_tv
|
||||
volume_up:
|
||||
service: switch.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: switch.living_room_volume_up
|
||||
volume_down:
|
||||
service: switch.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: switch.living_room_volume_down
|
||||
volume_mute:
|
||||
service: switch.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: switch.living_room_mute
|
||||
select_source:
|
||||
service: media_player.select_source
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.receiver
|
||||
data:
|
||||
source: "{{ source }}"
|
||||
volume_set:
|
||||
service: media_player.volume_set
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.receiver
|
||||
data:
|
||||
volume_level: "{{ volume_level }}"
|
||||
|
||||
attributes:
|
||||
@ -176,11 +178,11 @@ media_player:
|
||||
commands:
|
||||
turn_on:
|
||||
service: media_player.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.kodi
|
||||
turn_off:
|
||||
service: media_player.turn_off
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.kodi
|
||||
attributes:
|
||||
is_volume_muted: media_player.kodi|is_volume_muted
|
||||
@ -191,25 +193,27 @@ media_player:
|
||||
host: 192.168.1.10
|
||||
turn_on_action:
|
||||
- service: input_boolean.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: input_boolean.kodi_tv_state
|
||||
- service: media_player.kodi_call_method
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.kodi
|
||||
data:
|
||||
method: Addons.ExecuteAddon
|
||||
addonid: script.json-cec
|
||||
params:
|
||||
command: activate
|
||||
turn_off_action:
|
||||
- service: input_boolean.turn_off
|
||||
data:
|
||||
target:
|
||||
entity_id: input_boolean.kodi_tv_state
|
||||
- service: media_player.media_stop
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.kodi
|
||||
- service: media_player.kodi_call_method
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.kodi
|
||||
data:
|
||||
method: Addons.ExecuteAddon
|
||||
addonid: script.json-cec
|
||||
params:
|
||||
@ -281,8 +285,9 @@ media_player:
|
||||
command: VolumeDown
|
||||
select_source:
|
||||
service: remote.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: remote.alexander_down_guest
|
||||
data:
|
||||
activity: "{{ source }}"
|
||||
device_class: tv
|
||||
```
|
||||
|
@ -218,8 +218,9 @@ kitchen_fade_on:
|
||||
description: "Turn on kitchen light to 75% over a period of 10 seconds"
|
||||
sequence:
|
||||
- service: upb.light_fade_start
|
||||
data:
|
||||
target:
|
||||
entity_id: light.kitchen
|
||||
data:
|
||||
brightness_pct: 75
|
||||
rate: 10
|
||||
```
|
||||
|
@ -526,8 +526,9 @@ Service trigger example:
|
||||
entity_id: sensor.sensor
|
||||
action:
|
||||
service: vacuum.send_command
|
||||
data:
|
||||
target:
|
||||
entity_id: vacuum.vacuum_entity
|
||||
data:
|
||||
command: "custom_command"
|
||||
params:
|
||||
- key: value
|
||||
@ -601,8 +602,9 @@ Service trigger example:
|
||||
entity_id: sensor.sensor
|
||||
action:
|
||||
service: vacuum.send_command
|
||||
data:
|
||||
target:
|
||||
entity_id: vacuum.vacuum_entity
|
||||
data:
|
||||
command: "custom_command"
|
||||
params:
|
||||
- key: value
|
||||
|
@ -116,20 +116,23 @@ vacuum:
|
||||
living_room_vacuum:
|
||||
start:
|
||||
- service: remote.send_command
|
||||
data:
|
||||
target:
|
||||
entity_id: remote.harmony_hub
|
||||
data:
|
||||
command: Clean
|
||||
device: 52840686
|
||||
return_to_base:
|
||||
- service: remote.send_command
|
||||
data:
|
||||
target:
|
||||
entity_id: remote.harmony_hub
|
||||
data:
|
||||
command: Home
|
||||
device: 52840686
|
||||
clean_spot:
|
||||
- service: remote.send_command
|
||||
data:
|
||||
target:
|
||||
entity_id: remote.harmony_hub
|
||||
data:
|
||||
command: SpotCleaning
|
||||
device: 52840686
|
||||
```
|
||||
|
@ -85,8 +85,9 @@ automation:
|
||||
platform: state
|
||||
action:
|
||||
- service: input_select.select_option
|
||||
data:
|
||||
target:
|
||||
entity_id: input_select.ventilation_profile
|
||||
data:
|
||||
option: "{{ states('sensor.vallox_current_profile') }}"
|
||||
```
|
||||
|
||||
|
@ -118,8 +118,9 @@ For example, the following action in an automation would send an `hls` live stre
|
||||
```yaml
|
||||
action:
|
||||
service: camera.play_stream
|
||||
data:
|
||||
target:
|
||||
entity_id: camera.yourcamera
|
||||
data:
|
||||
media_player: media_player.chromecast
|
||||
```
|
||||
|
||||
@ -157,8 +158,9 @@ For example, the following action is an automation that would take a snapshot fr
|
||||
```yaml
|
||||
action:
|
||||
service: camera.snapshot
|
||||
data:
|
||||
target:
|
||||
entity_id: camera.front_door_camera
|
||||
data:
|
||||
filename: '/tmp/yourcamera_{{ now().strftime("%Y%m%d-%H%M%S") }}.jpg'
|
||||
```
|
||||
|
||||
|
@ -47,8 +47,9 @@ automation:
|
||||
at: "07:15:00"
|
||||
action:
|
||||
- service: water_heater.set_temperature
|
||||
data:
|
||||
target:
|
||||
entity_id: water_heater.demo
|
||||
data:
|
||||
temperature: 24
|
||||
operation_mode: eco
|
||||
```
|
||||
@ -71,8 +72,9 @@ automation:
|
||||
at: "07:15:00"
|
||||
action:
|
||||
- service: water_heater.set_operation_mode
|
||||
data:
|
||||
target:
|
||||
entity_id: water_heater.demo
|
||||
data:
|
||||
operation_mode: eco
|
||||
```
|
||||
|
||||
@ -94,7 +96,8 @@ automation:
|
||||
at: "07:15:00"
|
||||
action:
|
||||
- service: water_heater.set_away_mode
|
||||
data:
|
||||
target:
|
||||
entity_id: water_heater.demo
|
||||
data:
|
||||
away_mode: true
|
||||
```
|
||||
|
@ -85,8 +85,9 @@ Say to the `media_player.living_room` device entity:
|
||||
|
||||
```yaml
|
||||
- service: tts.watson_tts_say
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.living_room
|
||||
data:
|
||||
message: >
|
||||
<speak>
|
||||
Hello from Watson
|
||||
|
@ -149,15 +149,17 @@ The `play_media` service can be used in a script to switch to the specified TV c
|
||||
```yaml
|
||||
# Example action entry in script to switch to channel number 1
|
||||
service: media_player.play_media
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.lg_webos_smart_tv
|
||||
data:
|
||||
media_content_id: 1
|
||||
media_content_type: "channel"
|
||||
|
||||
# Example action entry in script to switch to channel including 'TF1' in its name
|
||||
service: media_player.play_media
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.lg_webos_smart_tv
|
||||
data:
|
||||
media_content_id: "TF1"
|
||||
media_content_type: "channel"
|
||||
```
|
||||
@ -207,15 +209,17 @@ script:
|
||||
home_button:
|
||||
sequence:
|
||||
- service: webostv.button
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.lg_webos_smart_tv
|
||||
data:
|
||||
button: "HOME"
|
||||
|
||||
open_google_command:
|
||||
sequence:
|
||||
- service: webostv.command
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.lg_webos_smart_tv
|
||||
data:
|
||||
command: "system.launcher/open"
|
||||
payload:
|
||||
target: https://www.google.com
|
||||
|
@ -349,8 +349,9 @@ script:
|
||||
set_dial_1_value:
|
||||
sequence:
|
||||
- service: wink.set_nimbus_dial_state
|
||||
data:
|
||||
target:
|
||||
entity_id: wink.nimbus_dial_1
|
||||
data:
|
||||
value: 150
|
||||
labels:
|
||||
- "Dial 1"
|
||||
@ -379,8 +380,9 @@ script:
|
||||
set_dial_1_value:
|
||||
sequence:
|
||||
- service: wink.set_nimbus_dial_state
|
||||
data:
|
||||
target:
|
||||
entity_id: wink.nimbus_dial_1
|
||||
data:
|
||||
rotation: "ccw"
|
||||
```
|
||||
|
||||
|
@ -121,8 +121,9 @@ You can automate changing the effect using a service call like this:
|
||||
|
||||
```yaml
|
||||
service: wled.effect
|
||||
data:
|
||||
target:
|
||||
entity_id: light.wled
|
||||
data:
|
||||
effect: "{{ state_attr('light.wled', 'effect_list') | random }}"
|
||||
```
|
||||
|
||||
@ -148,8 +149,9 @@ In this case (using WLED v0.11.0) there are 54 palettes, so the following servic
|
||||
|
||||
```yaml
|
||||
service: wled.effect
|
||||
data:
|
||||
target:
|
||||
entity_id: light.wled
|
||||
data:
|
||||
palette: "{{ range(0,53) | random }}"
|
||||
```
|
||||
|
||||
|
@ -202,7 +202,7 @@ This example toggles the living room lamp on a double click of the button.
|
||||
click_type: double
|
||||
action:
|
||||
service: light.toggle
|
||||
data:
|
||||
target:
|
||||
entity_id: light.living_room_lamp
|
||||
```
|
||||
|
||||
@ -231,16 +231,5 @@ That means that Home Assistant is not getting any response from your Xiaomi gate
|
||||
- You should generate the key again using an Android Phone or alternatively an emulator such as [bluestacks](https://www.bluestacks.com). In some instances, there is an issue with keys being generated using the iOS application.
|
||||
- You need to make sure to have multicast support on your network. If you are running Home Assistant in a virtual machine (like Proxmox), try `echo 0 >/sys/class/net/vmbr0/bridge/multicast_snooping` on the host and restart the service or reboot the host.
|
||||
- If the required library "PyXiaomiGateway" cannot be installed you will need to install some missing system dependencies `python3-dev`, `libssl-dev`, `libffi-dev` manually (e.g., `$ sudo apt-get install python3-dev libssl-dev libffi-dev`).
|
||||
- If your gateway's MAC address starts with `04:CF:8C` or `7C:49:EB`, there is a good chance that the required port `9898` is closed on your gateway (you can check it with the Nmap utility, using the command `sudo nmap -sU {gateway_ip} -p 9898`). To fix that issue, you need to do these steps:
|
||||
- Find a specific screw bit (like a fork) to open the gateway case.
|
||||
- Find a USB-UART cable/module and connect it to your computer.
|
||||
- Solder 3 wires - RX, TX and GND like [here](https://cs5-3.4pda.to/14176168/IMG_20181020_201150.jpg).
|
||||
- Turn on the gateway (220V).
|
||||
- Open a serial terminal application (e.g., PuTTY) and connect to the serial port assigned to the USB-UART module (baudrate: 115200).
|
||||
- Wait until the gateway is booted up, connect the RX, TX and GND wires to the UART module (don't connect the Vcc (power) wire!).
|
||||
- RX on UART to TX on gateway
|
||||
- TX on UART to RX on gateway
|
||||
- You will see all the messages from the gateway.
|
||||
- Send the command `psm-set network open_pf 3` (the command has to end with a `CR` newline character).
|
||||
- Check your settings executing the command `psm-get network open_pf` to be sure it's OK.
|
||||
- Restart the gateway.
|
||||
|
||||
If your gateway's MAC address starts with `04:CF:8C` or `7C:49:EB`, there is a good chance that the required port `9898` is closed on your gateway and thus, this method doesn't work. There are workarounds available online, however this requires soldering and working with electricity.
|
||||
|
@ -1259,8 +1259,9 @@ automation:
|
||||
condition: []
|
||||
action:
|
||||
- service: xiaomi_miio.vacuum_clean_zone
|
||||
data:
|
||||
target:
|
||||
entity_id: vacuum.xiaomi_vacuum
|
||||
data:
|
||||
repeats: "{{states('input_number.vacuum_passes')|int}}"
|
||||
zone: [[30914,26007,35514,28807], [20232,22496,26032,26496]]
|
||||
```
|
||||
@ -1279,8 +1280,9 @@ automation:
|
||||
condition: []
|
||||
action:
|
||||
- service: xiaomi_miio.vacuum_clean_zone
|
||||
data:
|
||||
target:
|
||||
entity_id: vacuum.xiaomi_vacuum
|
||||
data:
|
||||
repeats: "{{states('input_number.vacuum_passes')|int}}"
|
||||
zone:
|
||||
- [30914,26007,35514,28807]
|
||||
@ -1300,8 +1302,9 @@ automation:
|
||||
condition: []
|
||||
action:
|
||||
- service: xiaomi_miio.vacuum_clean_zone
|
||||
data:
|
||||
target:
|
||||
entity_id: vacuum.xiaomi_vacuum
|
||||
data:
|
||||
repeats: 1
|
||||
zone:
|
||||
- - 30914
|
||||
@ -1345,8 +1348,9 @@ automation:
|
||||
condition: []
|
||||
action:
|
||||
- service: xiaomi_miio.vacuum_clean_segment
|
||||
data:
|
||||
target:
|
||||
entity_id: vacuum.xiaomi_vacuum
|
||||
data:
|
||||
segments: [1,2]
|
||||
```
|
||||
|
||||
@ -1361,8 +1365,9 @@ automation:
|
||||
condition: []
|
||||
action:
|
||||
- service: xiaomi_miio.vacuum_clean_segment
|
||||
data:
|
||||
target:
|
||||
entity_id: vacuum.xiaomi_vacuum
|
||||
data:
|
||||
segments: 1
|
||||
```
|
||||
|
||||
@ -1411,8 +1416,9 @@ vacuum_kitchen:
|
||||
alias: "Clean the kitchen"
|
||||
sequence:
|
||||
- service: vacuum.send_command
|
||||
data:
|
||||
target:
|
||||
entity_id: vacuum.xiaomi_vacuum_cleaner
|
||||
data:
|
||||
command: app_segment_clean
|
||||
params: [18]
|
||||
```
|
||||
@ -1432,8 +1438,9 @@ reset_main_brush_left:
|
||||
alias: "Reset hours for main brush replacement"
|
||||
sequence:
|
||||
- service: vacuum.send_Command
|
||||
data:
|
||||
target:
|
||||
entity_id: vacuum.xiaomi_vacuum_cleaner
|
||||
data:
|
||||
command: reset_consumable
|
||||
params: ['main_brush_work_time']
|
||||
```
|
||||
@ -1466,8 +1473,9 @@ vacuum_kitchen:
|
||||
alias: "vacuum kitchen"
|
||||
sequence:
|
||||
- service: vacuum.send_command
|
||||
data:
|
||||
target:
|
||||
entity_id: "vacuum.xiaomi_vacuum_cleaner"
|
||||
data:
|
||||
command: app_zoned_clean
|
||||
params: [[23084,26282,27628,29727,1]]
|
||||
```
|
||||
|
@ -116,15 +116,17 @@ script:
|
||||
alias: "Radio Paradise Porch"
|
||||
sequence:
|
||||
- service: media_player.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.living_room_stereo_zone_2
|
||||
- service: media_player.volume_set
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.living_room_stereo_zone_2
|
||||
data:
|
||||
volume_level: 0.48
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
target:
|
||||
entity_id: media_player.living_room_stereo_zone_2
|
||||
data:
|
||||
media_content_type: "NET RADIO"
|
||||
media_content_id: "Bookmarks>Internet>Radio Paradise"
|
||||
|
||||
|
@ -68,7 +68,7 @@ Some other Zigbee coordinator hardware may not support a firmware that is capabl
|
||||
- Silicon Labs EmberZNet based radios using the EZSP protocol (via the [bellows](https://github.com/zigpy/bellows) library for zigpy)
|
||||
- [ITEAD Sonoff ZBBridge](https://www.itead.cc/smart-home/sonoff-zbbridge.html) (Note! This first have to be flashed with [Tasmota firmware and Silabs EmberZNet NCP EZSP UART Host firmware](https://www.digiblur.com/2020/07/how-to-use-sonoff-zigbee-bridge-with.html))
|
||||
- [Nortek GoControl QuickStick Combo Model HUSBZB-1 (Z-Wave & Zigbee Ember 3581 USB Adapter)](https://www.nortekcontrol.com/products/2gig/husbzb-1-gocontrol-quickstick-combo/) (Note! Not a must but recommend [upgrade the EmberZNet NCP application firmware](https://github.com/walthowd/husbzb-firmware))
|
||||
- [Elelabs Zigbee USB Adapter](https://elelabs.com/products/elelabs_usb_adapter.html) (Note! Not a must but recommend [upgrade the EmberZNet NCP application firmware](https://github.com/Elelabs/elelabs-zigbee-ezsp-utility))
|
||||
- [Elelabs Zigbee USB Adapter](https://elelabs.com/products/elelabs_usb_adapter.html)/[POPP ZB-Stick](https://shop.zwave.eu/detail/index/sArticle/2496) (Note! Not a must but recommend [upgrade the EmberZNet NCP application firmware](https://github.com/Elelabs/elelabs-zigbee-ezsp-utility))
|
||||
- [Elelabs Zigbee Raspberry Pi Shield](https://elelabs.com/products/elelabs_zigbee_shield.html) (Note! Not a must but recommend [upgrade the EmberZNet NCP application firmware](https://github.com/Elelabs/elelabs-zigbee-ezsp-utility))
|
||||
- Bitron Video/Smabit BV AV2010/10 USB-Stick with Silicon Labs Ember 3587
|
||||
- Telegesis ETRX357USB (Note! This first have to be [flashed with other EmberZNet firmware](https://github.com/walthowd/husbzb-firmware))
|
||||
|
@ -88,12 +88,14 @@ automation:
|
||||
at: "20:00:00"
|
||||
action:
|
||||
- service: climate.set_hvac_mode
|
||||
data:
|
||||
target:
|
||||
entity_id: climate.remotec_zxt120_heating_1_id
|
||||
data:
|
||||
hvac_mode: Heat
|
||||
- service: climate.set_temperature
|
||||
data:
|
||||
target:
|
||||
entity_id: climate.remotec_zxt120_heating_1_39
|
||||
data:
|
||||
temperature: 24
|
||||
```
|
||||
|
||||
@ -107,8 +109,9 @@ automation:
|
||||
at: "21:00:00"
|
||||
action:
|
||||
- service: climate.set_hvac_mode
|
||||
data:
|
||||
target:
|
||||
entity_id: climate.remotec_zxt120_heating_1_id
|
||||
data:
|
||||
hvac_mode: "Off"
|
||||
```
|
||||
|
||||
|
@ -41,7 +41,7 @@ automation:
|
||||
{% else %}
|
||||
switch.turn_off
|
||||
{% endif %}
|
||||
data:
|
||||
target:
|
||||
entity_id: switch.{{ states('input_select.is') }}
|
||||
```
|
||||
|
||||
|
@ -105,7 +105,7 @@ script:
|
||||
message: "The washing machine has finished its cycle, please empty it!"
|
||||
- alias: "Living Room Lights Blue"
|
||||
service: scene.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: scene.blue
|
||||
```
|
||||
|
||||
|
@ -110,7 +110,7 @@ intent_script:
|
||||
content: I have turned on the lights.
|
||||
action:
|
||||
service: light.turn_on
|
||||
data:
|
||||
target:
|
||||
entity_id: light.kitchen
|
||||
|
||||
conversation:
|
||||
|
@ -361,8 +361,9 @@ automation:
|
||||
condition: []
|
||||
action:
|
||||
- service: xiaomi_miio.vacuum_clean_zone
|
||||
data:
|
||||
target:
|
||||
entity_id: vacuum.xiaomi_vacuum
|
||||
data:
|
||||
repeats: "{{states('input_number.vacuum_passes')|int}}"
|
||||
zone: [[30914,26007,35514,28807], [20232,22496,26032,26496]]
|
||||
```
|
||||
|
@ -99,8 +99,9 @@ automation:
|
||||
media_content_id: "{{ tags[trigger.event.data.tag_id].media_content_id }}"
|
||||
media_content_type: "{{ tags[trigger.event.data.tag_id].media_content_type }}"
|
||||
- service: media_player.play_media
|
||||
data:
|
||||
target:
|
||||
entity_id: "{{ media_player_entity_id }}"
|
||||
data:
|
||||
media_content_id: "{{ media_content_id }}"
|
||||
media_content_type: "{{ media_content_type }}"
|
||||
- delay: 2 # timeout before we allow processing next scan
|
||||
|
@ -958,8 +958,9 @@ script:
|
||||
learn_tv_power:
|
||||
sequence:
|
||||
- service: remote.learn_command
|
||||
data:
|
||||
target:
|
||||
entity_id: remote.bedroom
|
||||
data:
|
||||
device: tv
|
||||
command: power
|
||||
```
|
||||
@ -983,8 +984,9 @@ script:
|
||||
send_tv_power:
|
||||
sequence:
|
||||
- service: remote.send_command
|
||||
data:
|
||||
target:
|
||||
entity_id: remote.bedroom
|
||||
data:
|
||||
command: b64:JgAcAB0dHB44HhweGx4cHR06HB0cHhwdHB8bHhwADQUAAAAAAAAAAAAAAAA=
|
||||
```
|
||||
|
||||
@ -995,8 +997,9 @@ script:
|
||||
send_tv_power:
|
||||
sequence:
|
||||
- service: remote.send_command
|
||||
data:
|
||||
target:
|
||||
entity_id: remote.bedroom
|
||||
data:
|
||||
device: tv
|
||||
command: power
|
||||
```
|
||||
|
85
source/_posts/2021-02-19-community-highlights.markdown
Normal file
@ -0,0 +1,85 @@
|
||||
---
|
||||
title: "Community Highlights: 9th edition"
|
||||
description: "Add-on for DSMR Reader and show the condition of your washing machine with a Laundry card"
|
||||
date: 2021-02-18 00:00:00
|
||||
date_formatted: "February 19, 2021"
|
||||
author: Klaas Schoute
|
||||
author_twitter: klaasnicolaas
|
||||
categories: Community
|
||||
og_image: /images/blog/2021-02-19-community-highlights/social.png
|
||||
---
|
||||
|
||||
The 9th edition of the Home Assistant Community Highlights! Some interesting
|
||||
things popped up around our community, we thought was worth sharing.
|
||||
|
||||
But before we move on to the highlights of this week, let's start with a
|
||||
little hooray because yesterday both Pascal Vizeli and I had their birthday!
|
||||
|
||||
Hip hip hooray! 🎂🥳
|
||||
|
||||
./Klaas
|
||||
|
||||
O and would you like to keep track of your birthdays in Home Assistant? Then
|
||||
try this custom integration of [Miicroo](https://github.com/Miicroo).
|
||||
|
||||
<object type="image/svg+xml" data="https://gh-card.dev/repos/Miicroo/ha-birthdays.svg?link_target=_blank"></object>
|
||||
|
||||
## Help each other with any question
|
||||
|
||||
Last week, we found a burning question on the [Home Assistant subreddit][reddit]
|
||||
forum from [Horror_Fondant_7165](https://www.reddit.com/user/Horror_Fondant_7165/).
|
||||
Some paint had gotten on his curtain and he just can't get the paint stain
|
||||
out of his curtain.
|
||||
|
||||
Maybe we can give him some community love and help with his question? 😄
|
||||
|
||||
<blockquote class="reddit-card" data-card-created="1613656706"><a href="https://www.reddit.com/r/homeassistant/comments/lixarb/i_accidentally_got_some_paint_on_a_curtain_in_my/">I accidentally got some paint on a curtain in my house, it’s oil paint, how do I get it out without taking my curtain down?</a> from <a href="http://www.reddit.com/r/homeassistant">r/homeassistant</a></blockquote>
|
||||
<script async src="//embed.redditmedia.com/widgets/platform.js" charset="UTF-8"></script>
|
||||
|
||||
## DSMR Reader add-on
|
||||
|
||||
Good news for those who would like to get started with DSMR Reader!
|
||||
[sanderdw](https://github.com/sanderdw) has made an add-on so that you can
|
||||
easily use it with Home Assistant. Please note, the add-on is still in an __Alpha__ state.
|
||||
|
||||
<object type="image/svg+xml" data="https://gh-card.dev/repos/sanderdw/hassio-addons.svg?link_target=_blank"></object>
|
||||
|
||||
<a href="https://community.home-assistant.io/t/dsmr-reader-add-on-for-home-assistant/279087" target="_blank">
|
||||
<img
|
||||
src='/images/blog/2021-02-19-community-highlights/dsmr-reader.png'
|
||||
alt="Screenshot from the DSMR Reader add-on"
|
||||
style='border: 0;box-shadow: none;'
|
||||
/>
|
||||
</a>
|
||||
|
||||
## Laundry card
|
||||
|
||||
Would you like to display the state of your smart washing machine (such as an LG ThinQ)
|
||||
in a fun way in Lovelace? Perhaps the example below could inspire you. You can find the
|
||||
Lovelace YAML code [here](https://pastebin.com/S3uVcQHT).
|
||||
|
||||
<blockquote class="reddit-card" data-card-created="1613656949"><a href="https://www.reddit.com/r/homeassistant/comments/ll5ioi/took_some_trickery_but_my_laundry_card_is_done/">Took some trickery but my laundry card is done</a> from <a href="http://www.reddit.com/r/homeassistant">r/homeassistant</a></blockquote>
|
||||
<script async src="//embed.redditmedia.com/widgets/platform.js" charset="UTF-8"></script>
|
||||
|
||||
## Got a tip for the next edition?
|
||||
|
||||
Have you seen (or made) something awesome, interesting, unique, amazing,
|
||||
inspirational, unusual or funny, using Home Assistant?
|
||||
|
||||
[Click here to send us your Community Highlight suggestion](/suggest-community-highlight).
|
||||
|
||||
Also, don't forget to share your creations with us via Social Media:
|
||||
|
||||
- Twitter it! Be sure to mention [@home_assistant][twitter]
|
||||
- Share it on our [Facebook group][facebook-group]
|
||||
- Post it to our [subreddit][reddit]
|
||||
- Tag [@homeasssistant][instagram] on Instagram
|
||||
- Or via chat, drop us a line in the [#lounge at Discord][chat]
|
||||
|
||||
See you next edition!
|
||||
|
||||
[chat]: https://www.home-assistant.io/join-chat
|
||||
[facebook-group]: https://www.facebook.com/groups/HomeAssistant/
|
||||
[instagram]: https://www.instagram.com/homeassistant/
|
||||
[reddit]: https://www.reddit.com/r/homeassistant
|
||||
[twitter]: https://www.twitter.com/home_assistant
|
@ -578,31 +578,36 @@ og_image: /images/blue/blue_hero.jpg
|
||||
|
||||
<h1 class="sub-title">FAQs</h1>
|
||||
<div class="faq-list">
|
||||
{% details %}
|
||||
- title: I already run Home Assistant. Is this for me?
|
||||
content: |
|
||||
If your Home Assistant installation has outgrown your Raspberry
|
||||
Pi or if you want a well supported, dedicated system, Home Assistant Blue is
|
||||
for you.
|
||||
<br /><br />
|
||||
Or if you are still looking for a present for friends and family.
|
||||
{% details "I already run Home Assistant. Is this for me?" %}
|
||||
|
||||
- title: What is limited about the bundle?
|
||||
content: |
|
||||
We have only created a limited amount of cases. Once they are sold out,
|
||||
we don't currently have plans to make more.
|
||||
All other parts of the bundle will remain available for purchase.
|
||||
If your Home Assistant installation has outgrown your Raspberry
|
||||
Pi or if you want a well supported, dedicated system, Home Assistant Blue is
|
||||
for you.
|
||||
<br /><br />
|
||||
Or if you are still looking for a present for friends and family.
|
||||
|
||||
- title: I already own an ODROID-N2+. Do I run the same software?
|
||||
content: |
|
||||
Yes! Home Assistant Blue runs the exact same software as that you're
|
||||
currently using and you're benefitting from all the improvements.
|
||||
|
||||
- title: Will Home Assistant drop support for the Raspberry Pi?
|
||||
content: |
|
||||
Nope! We are committed to keep supporting all platforms that are currently available.
|
||||
{% enddetails %}
|
||||
</div>
|
||||
{% details "What is limited about the bundle?" %}
|
||||
|
||||
We have only created a limited amount of cases. Once they are sold out,
|
||||
we don't currently have plans to make more.
|
||||
All other parts of the bundle will remain available for purchase.
|
||||
|
||||
{% enddetails %}
|
||||
|
||||
{% details "I already own an ODROID-N2+. Do I run the same software?" %}
|
||||
|
||||
Yes! Home Assistant Blue runs the exact same software as that you're
|
||||
currently using and you're benefitting from all the improvements.
|
||||
|
||||
{% enddetails %}
|
||||
|
||||
{% details "Will Home Assistant drop support for the Raspberry Pi?" %}
|
||||
|
||||
Nope! We are committed to keep supporting all platforms that are currently available.
|
||||
|
||||
{% enddetails %}
|
||||
</div>
|
||||
|
||||
<a class="blue3d" href="https://www.thingiverse.com/thing:4684826" target="_blank">
|
||||
<div class="material-card text blue3d-container">
|
||||
|
@ -3,7 +3,7 @@ title: "Automating Home Assistant"
|
||||
description: "A quick intro on getting your first automation going."
|
||||
---
|
||||
|
||||
Once your devices are set up, it's time to put the cherry on the pie: automation. In this guide we're going to create a simple automation rule to **turn on the lights when the sun sets**.
|
||||
Once your devices are set up, it's time to put the cherry on the pie: automation. In this guide we're going to create a simple automation rule to **turn on the lights when the sun sets**. Of course, this assumes that you have set up an integration that provides a light at this point.
|
||||
|
||||
In the user interface, click Configuration in the sidebar, then click Automation. You will now see the automation screen from which you can manage all the automations in Home Assistant.
|
||||
|
||||
|
After Width: | Height: | Size: 307 KiB |
BIN
source/images/blog/2021-02-19-community-highlights/social.png
Normal file
After Width: | Height: | Size: 241 KiB |
Before Width: | Height: | Size: 53 KiB |
Before Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 42 KiB |
Before Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 8.9 KiB |
Before Width: | Height: | Size: 7.8 KiB |
Before Width: | Height: | Size: 7.1 KiB |