Merge branch 'current' into new

This commit is contained in:
Franck Nijhof 2023-04-05 20:16:16 +02:00
commit dd93a3997e
No known key found for this signature in database
GPG Key ID: D62583BA8AB11CA3
83 changed files with 4561 additions and 884 deletions

View File

@ -132,7 +132,6 @@ source/_integrations/crownstone.markdown @Crownstone @RicArch97
source/_integrations/cups.markdown @fabaff source/_integrations/cups.markdown @fabaff
source/_integrations/dacia.markdown @epenet source/_integrations/dacia.markdown @epenet
source/_integrations/daikin.markdown @fredrike source/_integrations/daikin.markdown @fredrike
source/_integrations/darksky.markdown @fabaff
source/_integrations/debugpy.markdown @frenck source/_integrations/debugpy.markdown @frenck
source/_integrations/deconz.markdown @Kane610 source/_integrations/deconz.markdown @Kane610
source/_integrations/default_config.markdown @home-assistant/core source/_integrations/default_config.markdown @home-assistant/core
@ -197,6 +196,7 @@ source/_integrations/epson.markdown @pszafer
source/_integrations/epsonworkforce.markdown @ThaStealth source/_integrations/epsonworkforce.markdown @ThaStealth
source/_integrations/eq3btsmart.markdown @rytilahti source/_integrations/eq3btsmart.markdown @rytilahti
source/_integrations/escea.markdown @lazdavila source/_integrations/escea.markdown @lazdavila
source/_integrations/esera_onewire.markdown @garbled1 @epenet
source/_integrations/esphome.markdown @OttoWinter @jesserockz source/_integrations/esphome.markdown @OttoWinter @jesserockz
source/_integrations/eufylife_ble.markdown @bdr99 source/_integrations/eufylife_ble.markdown @bdr99
source/_integrations/evil_genius_labs.markdown @balloob source/_integrations/evil_genius_labs.markdown @balloob
@ -376,7 +376,7 @@ source/_integrations/light.markdown @home-assistant/core
source/_integrations/linux_battery.markdown @fabaff source/_integrations/linux_battery.markdown @fabaff
source/_integrations/litejet.markdown @joncar source/_integrations/litejet.markdown @joncar
source/_integrations/litterrobot.markdown @natekspencer @tkdrob source/_integrations/litterrobot.markdown @natekspencer @tkdrob
source/_integrations/livisi.markdown @StefanIacobLivisi source/_integrations/livisi.markdown @StefanIacobLivisi @planbnet
source/_integrations/local_calendar.markdown @allenporter source/_integrations/local_calendar.markdown @allenporter
source/_integrations/local_ip.markdown @issacg source/_integrations/local_ip.markdown @issacg
source/_integrations/lock.markdown @home-assistant/core source/_integrations/lock.markdown @home-assistant/core
@ -447,7 +447,7 @@ source/_integrations/network.markdown @home-assistant/core
source/_integrations/nexia.markdown @bdraco source/_integrations/nexia.markdown @bdraco
source/_integrations/nexity.markdown @imicknl @vlebourl @tetienne @nyroDev source/_integrations/nexity.markdown @imicknl @vlebourl @tetienne @nyroDev
source/_integrations/nextbus.markdown @vividboarder source/_integrations/nextbus.markdown @vividboarder
source/_integrations/nextcloud.markdown @meichthys source/_integrations/nextcloud.markdown @mib1185
source/_integrations/nextdns.markdown @bieniu source/_integrations/nextdns.markdown @bieniu
source/_integrations/nfandroidtv.markdown @tkdrob source/_integrations/nfandroidtv.markdown @tkdrob
source/_integrations/nibe_heatpump.markdown @elupus source/_integrations/nibe_heatpump.markdown @elupus
@ -471,7 +471,7 @@ source/_integrations/nut.markdown @bdraco @ollo69
source/_integrations/nutrichef.markdown @bdraco source/_integrations/nutrichef.markdown @bdraco
source/_integrations/nws.markdown @MatthewFlamm @kamiyo source/_integrations/nws.markdown @MatthewFlamm @kamiyo
source/_integrations/nzbget.markdown @chriscla source/_integrations/nzbget.markdown @chriscla
source/_integrations/obihai.markdown @dshokouhi source/_integrations/obihai.markdown @dshokouhi @ejpenney
source/_integrations/octoprint.markdown @rfleming71 source/_integrations/octoprint.markdown @rfleming71
source/_integrations/ohmconnect.markdown @robbiet480 source/_integrations/ohmconnect.markdown @robbiet480
source/_integrations/ombi.markdown @larssont source/_integrations/ombi.markdown @larssont
@ -531,6 +531,7 @@ source/_integrations/qbittorrent.markdown @geoffreylagaisse
source/_integrations/qingping.markdown @bdraco @skgsergio source/_integrations/qingping.markdown @bdraco @skgsergio
source/_integrations/qld_bushfire.markdown @exxamalte source/_integrations/qld_bushfire.markdown @exxamalte
source/_integrations/qnap_qsw.markdown @Noltari source/_integrations/qnap_qsw.markdown @Noltari
source/_integrations/quadrafire.markdown @jeeftor
source/_integrations/quantum_gateway.markdown @cisasteelersfan source/_integrations/quantum_gateway.markdown @cisasteelersfan
source/_integrations/qvr_pro.markdown @oblogic7 source/_integrations/qvr_pro.markdown @oblogic7
source/_integrations/qwikswitch.markdown @kellerza source/_integrations/qwikswitch.markdown @kellerza
@ -599,7 +600,7 @@ source/_integrations/senz.markdown @milanmeu
source/_integrations/serial.markdown @fabaff source/_integrations/serial.markdown @fabaff
source/_integrations/seven_segments.markdown @fabaff source/_integrations/seven_segments.markdown @fabaff
source/_integrations/sfr_box.markdown @epenet source/_integrations/sfr_box.markdown @epenet
source/_integrations/sharkiq.markdown @JeffResc @funkybunch @AritroSaha10 source/_integrations/sharkiq.markdown @JeffResc @funkybunch
source/_integrations/shell_command.markdown @home-assistant/core source/_integrations/shell_command.markdown @home-assistant/core
source/_integrations/shelly.markdown @balloob @bieniu @thecode @chemelli74 @bdraco source/_integrations/shelly.markdown @balloob @bieniu @thecode @chemelli74 @bdraco
source/_integrations/shodan.markdown @fabaff source/_integrations/shodan.markdown @fabaff
@ -630,6 +631,7 @@ source/_integrations/smarttub.markdown @mdz
source/_integrations/smarty.markdown @z0mbieprocess source/_integrations/smarty.markdown @z0mbieprocess
source/_integrations/smhi.markdown @gjohansson-ST source/_integrations/smhi.markdown @gjohansson-ST
source/_integrations/sms.markdown @ocalvo source/_integrations/sms.markdown @ocalvo
source/_integrations/snapcast.markdown @luar123
source/_integrations/snooz.markdown @AustinBrunkhorst source/_integrations/snooz.markdown @AustinBrunkhorst
source/_integrations/solaredge.markdown @frenck source/_integrations/solaredge.markdown @frenck
source/_integrations/solaredge_local.markdown @drobtravels @scheric source/_integrations/solaredge_local.markdown @drobtravels @scheric
@ -651,7 +653,7 @@ source/_integrations/squeezebox.markdown @rajlaud
source/_integrations/srp_energy.markdown @briglx source/_integrations/srp_energy.markdown @briglx
source/_integrations/starline.markdown @anonym-tsk source/_integrations/starline.markdown @anonym-tsk
source/_integrations/starlink.markdown @boswelja source/_integrations/starlink.markdown @boswelja
source/_integrations/statistics.markdown @fabaff @ThomDietrich source/_integrations/statistics.markdown @ThomDietrich
source/_integrations/steam_online.markdown @tkdrob source/_integrations/steam_online.markdown @tkdrob
source/_integrations/steamist.markdown @bdraco source/_integrations/steamist.markdown @bdraco
source/_integrations/stiebel_eltron.markdown @fucm source/_integrations/stiebel_eltron.markdown @fucm
@ -695,7 +697,6 @@ source/_integrations/thermoplus.markdown @bdraco
source/_integrations/thermopro.markdown @bdraco source/_integrations/thermopro.markdown @bdraco
source/_integrations/thethingsnetwork.markdown @fabaff source/_integrations/thethingsnetwork.markdown @fabaff
source/_integrations/thread.markdown @home-assistant/core source/_integrations/thread.markdown @home-assistant/core
source/_integrations/threshold.markdown @fabaff
source/_integrations/tibber.markdown @danielhiversen source/_integrations/tibber.markdown @danielhiversen
source/_integrations/tile.markdown @bachya source/_integrations/tile.markdown @bachya
source/_integrations/tilt_ble.markdown @apt-itude source/_integrations/tilt_ble.markdown @apt-itude
@ -738,7 +739,8 @@ source/_integrations/vallox.markdown @andre-richter @slovdahl @viiru-
source/_integrations/velbus.markdown @Cereal2nd @brefra source/_integrations/velbus.markdown @Cereal2nd @brefra
source/_integrations/velux.markdown @Julius2342 source/_integrations/velux.markdown @Julius2342
source/_integrations/venstar.markdown @garbled1 source/_integrations/venstar.markdown @garbled1
source/_integrations/verisure.markdown @frenck source/_integrations/verisure.markdown @frenck @niro1987
source/_integrations/vermont_castings.markdown @jeeftor
source/_integrations/versasense.markdown @flamm3blemuff1n source/_integrations/versasense.markdown @flamm3blemuff1n
source/_integrations/version.markdown @ludeeus source/_integrations/version.markdown @ludeeus
source/_integrations/vesync.markdown @markperdue @webdjoe @thegardenmonkey source/_integrations/vesync.markdown @markperdue @webdjoe @thegardenmonkey
@ -747,6 +749,7 @@ source/_integrations/vilfo.markdown @ManneW
source/_integrations/vivotek.markdown @HarlemSquirrel source/_integrations/vivotek.markdown @HarlemSquirrel
source/_integrations/vizio.markdown @raman325 source/_integrations/vizio.markdown @raman325
source/_integrations/vlc_telnet.markdown @rodripf @MartinHjelmare source/_integrations/vlc_telnet.markdown @rodripf @MartinHjelmare
source/_integrations/voice_assistant.markdown @balloob @synesthesiam
source/_integrations/volumio.markdown @OnFreund source/_integrations/volumio.markdown @OnFreund
source/_integrations/volvooncall.markdown @molobrakos source/_integrations/volvooncall.markdown @molobrakos
source/_integrations/vulcan.markdown @Antoni-Czaplicki source/_integrations/vulcan.markdown @Antoni-Czaplicki
@ -771,7 +774,7 @@ source/_integrations/withings.markdown @vangorra
source/_integrations/wiz.markdown @sbidy source/_integrations/wiz.markdown @sbidy
source/_integrations/wled.markdown @frenck source/_integrations/wled.markdown @frenck
source/_integrations/wolflink.markdown @adamkrol93 source/_integrations/wolflink.markdown @adamkrol93
source/_integrations/workday.markdown @fabaff source/_integrations/workday.markdown @fabaff @gjohansson-ST
source/_integrations/worldclock.markdown @fabaff source/_integrations/worldclock.markdown @fabaff
source/_integrations/ws66i.markdown @ssaenger source/_integrations/ws66i.markdown @ssaenger
source/_integrations/xbox.markdown @hunterjm source/_integrations/xbox.markdown @hunterjm

View File

@ -121,9 +121,9 @@ social:
# Home Assistant release details # Home Assistant release details
current_major_version: 2023 current_major_version: 2023
current_minor_version: 3 current_minor_version: 4
current_patch_version: 6 current_patch_version: 0
date_released: 2023-03-22 date_released: 2023-04-05
# Either # or the anchor link to latest release notes in the blog post. # Either # or the anchor link to latest release notes in the blog post.
# Must be prefixed with a # and have double quotes around it. # Must be prefixed with a # and have double quotes around it.

View File

@ -106,6 +106,38 @@ Some color tokens are available to colorize the tile card : `primary`, `accent`,
Some entities have support for "features". These widgets add quick controls to the tile card. Some entities have support for "features". These widgets add quick controls to the tile card.
### Alarm modes
Widget that display buttons to arm and disarm an [alarm](/integrations/alarm_control_panel).
<p class='img'>
<img src='/images/dashboards/tile-features/alarm_modes.png' alt='Screenshot of the tile card with alarm modes feature'>
Screenshot of the tile card with alarm modes feature
</p>
```yaml
features:
- type: "alarm-modes"
modes:
- armed_home
- armed_away
- armed_night
- armed_vacation
- armed_custom_bypass
- disarmed
```
{% configuration %}
type:
required: true
description: "`alarm-modes`"
type: string
modes:
required: true
description: List of modes to show on the card. The list can contain `armed_home`, `armed_away`, `armed_night`, `armed_vacation`, `armed_custom_bypass` and `disarmed`.
type: list
{% endconfiguration %}
### Cover open/close ### Cover open/close
Widget that display buttons to open, close or stop a [cover](/integrations/cover). Widget that display buttons to open, close or stop a [cover](/integrations/cover).
@ -148,6 +180,27 @@ type:
type: string type: string
{% endconfiguration %} {% endconfiguration %}
### Fan speed
Widget that display speed controls for a [fan](/integrations/fan).
<p class='img'>
<img src='/images/dashboards/tile-features/fan_speed.png' alt='Screenshot of the tile card with fan speed feature'>
Screenshot of the tile card with fan speed feature
</p>
```yaml
features:
- type: "fan-speed"
```
{% configuration %}
type:
required: true
description: "`fan-speed`"
type: string
{% endconfiguration %}
### Light brightness ### Light brightness
Widget that display a slider to select the brightness for a [light](/integrations/light). Widget that display a slider to select the brightness for a [light](/integrations/light).

View File

@ -22,6 +22,7 @@ The following selectors are currently available:
- [Boolean selector](#boolean-selector) - [Boolean selector](#boolean-selector)
- [Color temperature selector](#color-temperature-selector) - [Color temperature selector](#color-temperature-selector)
- [Config entry selector](#config-entry-selector) - [Config entry selector](#config-entry-selector)
- [Constant selector](#constant-selector)
- [Date selector](#date-selector) - [Date selector](#date-selector)
- [Date & time selector](#date--time-selector) - [Date & time selector](#date--time-selector)
- [Device selector](#device-selector) - [Device selector](#device-selector)
@ -115,8 +116,9 @@ area:
device: device:
description: > description: >
When device options are provided, the list of areas is filtered by areas When device options are provided, the list of areas is filtered by areas
that at least provide one device that matches the given conditions. that at least provide one device that matches the given conditions. Can be
type: map either a object or a list of object.
type: list
keys: keys:
integration: integration:
description: > description: >
@ -140,8 +142,9 @@ device:
entity: entity:
description: > description: >
When entity options are provided, the list of areas is filtered by areas When entity options are provided, the list of areas is filtered by areas
that at least provide one entity that matches the given conditions. that at least provide one entity that matches the given conditions. Can be
type: map either a object or a list of object.
type: list
required: false required: false
keys: keys:
integration: integration:
@ -162,8 +165,16 @@ entity:
device_class: device_class:
description: > description: >
Limits the list of areas to areas that have entities with a certain Limits the list of areas to areas that have entities with a certain
device class, for example, `motion` or `window`. device class(es), for example, `motion` or `window`. Can be either a string
type: device_class with a single device_class, or a list of string device_class to limit
the selection to.
type: [device_class, list]
required: false
supported_features:
description: >
Limits the list of areas to areas that have entities with a certain
supported feature, for example, `light.LightEntityFeature.TRANSITION` or `climate.ClimateEntityFeature.TARGET_TEMPERATURE`. Should be a list of features.
type: list
required: false required: false
multiple: multiple:
description: > description: >
@ -208,8 +219,7 @@ integration. Multiple areas can be selected.
area: area:
multiple: true multiple: true
device: device:
multiple: true - integration: deconz
integration: deconz
manufacturer: IKEA of Sweden manufacturer: IKEA of Sweden
model: TRADFRI remote control model: TRADFRI remote control
``` ```
@ -238,12 +248,11 @@ For example: `next_dawn`.
## Boolean selector ## Boolean selector
The boolean selector shows a toggle that allows the user to turn on or off The boolean selector shows a toggle that allows the user to turn on or off
the selected option. The input's value will contain the boolean value of that the selected option.
toggle as a boolean value, being `true` or `false`.
![Screenshot of a boolean selector](/images/blueprints/selector-boolean.png) ![Screenshot of a boolean selector](/images/blueprints/selector-boolean.png)
The boolean selector can be incredibly useful for adding feature switches The boolean selector is suitable for adding feature switches
to, for example, blueprints. to, for example, blueprints.
This selector does not have any other options; therefore, it only has its key. This selector does not have any other options; therefore, it only has its key.
@ -252,7 +261,7 @@ This selector does not have any other options; therefore, it only has its key.
boolean: boolean:
``` ```
The output of this selector is `true` when the toggle was on, `false` otherwise. The output of this selector is `true` when the toggle is on, `false` otherwise.
## Color temperature selector ## Color temperature selector
@ -302,6 +311,24 @@ integration:
The output of this selector is the entry ID of the config entry, for example, `6b68b250388cbe0d620c92dd3acc93ec`. The output of this selector is the entry ID of the config entry, for example, `6b68b250388cbe0d620c92dd3acc93ec`.
## Constant selector
The constant selector shows a toggle that allows the user to enable the selected option.
This is similar to the [boolean selector](#boolean-selector), the difference
is that the constant selector has no value when it's not enabled.
![Screenshot of a constant selector](/images/blueprints/selector-constant.png)
The selector's value must be configured, and optionally, a label.
```yaml
boolean:
value: true
label: Enabled
```
The output of this selector is the configured value when the toggle is on, it has not output otherwise.
## Date selector ## Date selector
The date selector shows a date input that allows the user to specify a date. The date selector shows a date input that allows the user to specify a date.
@ -354,28 +381,12 @@ device:
``` ```
{% configuration device %} {% configuration device %}
integration:
description: >
Can be set to an integration domain. Limits the list of devices to devices
provided by the set integration domain.
type: string
required: false
manufacturer:
description: >
When set, it limits the list of devices to devices provided by the set
manufacturer name.
type: string
required: false
model:
description: >
When set, it limits the list of devices to devices that have the set model.
type: string
required: false
entity: entity:
description: > description: >
When entity options are provided, the list of devices is filtered by devices When entity options are provided, the list of devices is filtered by devices
that at least provide one entity that matches the given conditions. that at least provide one entity that matches the given conditions. Can be
type: map either a object or a list of object.
type: list
required: false required: false
keys: keys:
integration: integration:
@ -396,9 +407,42 @@ entity:
required: false required: false
device_class: device_class:
description: > description: >
Limits the list of entities to entities that have a certain device Limits the list of devices to devices that have entities with a certain device
class, for example, `motion` or `window`. class(es), for example, `motion` or `window`. Can be either a string
type: device_class with a single device_class, or a list of string device_class to limit
the selection to.
type: [device_class, list]
required: false
supported_features:
description: >
Limits the list of devices to devices that have entities with a certain
supported feature, for example, `light.LightEntityFeature.TRANSITION` or `climate.ClimateEntityFeature.TARGET_TEMPERATURE`. Should be a list of features.
type: list
required: false
filter:
description: >
When filter options are provided, the list of devices is filtered by devices
that at least provide one entity that matches the given conditions. Can be either
a object or a list of object.
type: list
required: false
keys:
integration:
description: >
Can be set to an integration domain. Limits the list of devices to devices
provided by the set integration domain.
type: string
required: false
manufacturer:
description: >
When set, it limits the list of devices to devices provided by the set
manufacturer name.
type: string
required: false
model:
description: >
When set, it limits the list of devices to devices that have the set model.
type: string
required: false required: false
multiple: multiple:
description: > description: >
@ -433,11 +477,12 @@ And this is what is looks like in YAML:
```yaml ```yaml
device: device:
integration: deconz filter:
- integration: deconz
manufacturer: Philips manufacturer: Philips
model: RWL021 model: RWL021
entity: entity:
domain: sensor - domain: sensor
device_class: battery device_class: battery
``` ```
@ -499,14 +544,22 @@ include_entities:
description: List of entity IDs to limit the selectable list to. description: List of entity IDs to limit the selectable list to.
type: list type: list
required: false required: false
integration: filter:
description: >
When filter options are provided, the entities are limited by entities
that at least match the given conditions. Can be either a object or a list of object.
Can be either a object or a list of object.
type: list
required: false
keys:
integration:
description: > description: >
Can be set to an integration domain. Limits the list of entities to entities Can be set to an integration domain. Limits the list of entities to entities
provided by the set integration domain, for example, provided by the set integration domain, for example,
[`zha`](/integrations/zha). [`zha`](/integrations/zha).
type: string type: string
required: false required: false
domain: domain:
description: > description: >
Limits the list of entities to entities of a certain domain(s), for example, Limits the list of entities to entities of a certain domain(s), for example,
[`light`](/integrations/light) or [`light`](/integrations/light) or
@ -515,11 +568,18 @@ domain:
to. to.
type: [string, list] type: [string, list]
required: false required: false
device_class: device_class:
description: > description: >
Limits the list of entities to entities that have a certain device class, Limits the list of entities to entities that have a certain device class(es),
for example, `motion` or `window`. for example, `motion` or `window`. Can be either a string with a single device_class,
type: device_class or a list of string device_class to limit the selection to.
type: [device_class, list]
required: false
supported_features:
description: >
Limits the list of entities to entities that have a certain
supported feature, for example, `light.LightEntityFeature.TRANSITION` or `climate.ClimateEntityFeature.TARGET_TEMPERATURE`. Should be a list of features.
type: list
required: false required: false
multiple: multiple:
description: > description: >
@ -556,7 +616,8 @@ And this is what it looks like in YAML:
```yaml ```yaml
entity: entity:
multiple: true multiple: true
integration: zha filter:
- integration: zha
domain: binary_sensor domain: binary_sensor
device_class: motion device_class: motion
``` ```
@ -895,8 +956,9 @@ target:
device: device:
description: > description: >
When device options are provided, the targets are limited by devices When device options are provided, the targets are limited by devices
that at least match the given conditions. that at least match the given conditions. Can be either a object or a list
type: map of object.
type: list
keys: keys:
integration: integration:
description: > description: >
@ -918,8 +980,9 @@ device:
entity: entity:
description: > description: >
When entity options are provided, the targets are limited by entities When entity options are provided, the targets are limited by entities
that at least match the given conditions. that at least match the given conditions. Can be either a object or a list
type: map of object.
type: list
required: false required: false
keys: keys:
integration: integration:
@ -940,9 +1003,10 @@ entity:
required: false required: false
device_class: device_class:
description: > description: >
Limits the targets to entities with a certain Limits the targets to entities with a certain device class(es), for example,
device class, for example, `motion` or `window`. `motion` or `window`. Can be either a string with a single device_class,
type: device_class or a list of string device_class to limit the selection to.
type: [device_class, list]
required: false required: false
{% endconfiguration %} {% endconfiguration %}
@ -967,7 +1031,7 @@ or more lights, provided by the [ZHA](/integrations/zha) integration.
```yaml ```yaml
target: target:
entity: entity:
integration: zha - integration: zha
domain: light domain: light
``` ```
@ -978,7 +1042,7 @@ provide one or more remote controls, provided by the
```yaml ```yaml
target: target:
device: device:
integration: deconz - integration: deconz
manufacturer: IKEA of Sweden manufacturer: IKEA of Sweden
model: TRADFRI remote control model: TRADFRI remote control
``` ```

View File

@ -57,6 +57,47 @@ There are a few very important rules to remember when adding templates to YAML:
Remembering these simple rules will help save you from many headaches and endless hours of frustration when using automation templates. Remembering these simple rules will help save you from many headaches and endless hours of frustration when using automation templates.
### Enabled Jinja Extensions
Jinja supports a set of language extensions that add new functionality to the language.
To improve the experience of writing Jinja templates, we have enabled the following
extensions:
- [Loop Controls](https://jinja.palletsprojects.com/en/3.0.x/extensions/#loop-controls) (`break` and `continue`)
### Reusing Templates
You can write reusable Jinja templates by adding them to a `custom_templates` folder under your
configuration directory. All template files must have the `.jinja` extension and be less than 5MiB.
Templates in this folder will be loaded at startup. To reload the templates without
restarting Home Assistant, invoke the `homeassistant.reload_custom_templates` service.
Once the templates are loaded, Jinja [includes](https://jinja.palletsprojects.com/en/3.0.x/templates/#include) and [imports](https://jinja.palletsprojects.com/en/3.0.x/templates/#import) will work
using `config/custom_templates` as the base directory.
For example, you might define a macro in a template in `config/custom_templates/formatter.jinja`:
{% raw %}
```text
{% macro format_entity(entity_id) %}
{{ state_attr(entity_id, 'friendly_name') }} - {{ states(entity_id) }}
{% endmacro %}
```
{% endraw %}
In your automations, you could then reuse this macro by importing it:
{% raw %}
```text
{% from 'formatter.jinja' import format_entity %}
{{ format_entity('sensor.temperature') }}
```
{% endraw %}
## Home Assistant template extensions ## Home Assistant template extensions
Extensions allow templates to access all of the Home Assistant specific states and adds other convenience functions and filters. Extensions allow templates to access all of the Home Assistant specific states and adds other convenience functions and filters.
@ -78,10 +119,11 @@ Not supported in [limited templates](#limited-templates).
- `is_state` compares an entity's state with a specified state or list of states and returns `True` or `False`. `is_state('device_tracker.paulus', 'home')` will test if the given entity is the specified state. `is_state('device_tracker.paulus', ['home', 'work'])` will test if the given entity is any of the states in the list. - `is_state` compares an entity's state with a specified state or list of states and returns `True` or `False`. `is_state('device_tracker.paulus', 'home')` will test if the given entity is the specified state. `is_state('device_tracker.paulus', ['home', 'work'])` will test if the given entity is any of the states in the list.
- `state_attr('device_tracker.paulus', 'battery')` will return the value of the attribute or None if it doesn't exist. - `state_attr('device_tracker.paulus', 'battery')` will return the value of the attribute or None if it doesn't exist.
- `is_state_attr('device_tracker.paulus', 'battery', 40)` will test if the given entity attribute is the specified state (in this case, a numeric value). Note that the attribute can be `None` and you want to check if it is `None`, you need to use `state_attr('sensor.my_sensor', 'attr') is none` or `state_attr('sensor.my_sensor', 'attr') == None` (note the difference in the capitalization of none in both versions). - `is_state_attr('device_tracker.paulus', 'battery', 40)` will test if the given entity attribute is the specified state (in this case, a numeric value). Note that the attribute can be `None` and you want to check if it is `None`, you need to use `state_attr('sensor.my_sensor', 'attr') is none` or `state_attr('sensor.my_sensor', 'attr') == None` (note the difference in the capitalization of none in both versions).
- `has_value('sensor.my_sensor')` will test if the given entity is not unknown or unavailable. Can be used as a filter or a test.
<div class='note warning'> <div class='note warning'>
Avoid using `states.sensor.temperature.state`, instead use `states('sensor.temperature')`. It is strongly advised to use the `states()`, `is_state()`, `state_attr()` and `is_state_attr()` as much as possible, to avoid errors and error message when the entity isn't ready yet (e.g., during Home Assistant startup). Avoid using `states.sensor.temperature.state`, instead use `states('sensor.temperature')`. It is strongly advised to use the `states()`, `is_state()`, `state_attr()` and `is_state_attr()` as much as possible, to avoid errors and error message when the entity isn't ready yet (e.g., during Home Assistant startup).
</div> </div>
@ -108,6 +150,16 @@ Print out a list of all the sensor states:
{% endfor %} {% endfor %}
``` ```
Print out a list of all the sensor states sorted by `entity_id`:
{% raw %}
```text
{% for state in states.sensor | sort(attribute='entity_id') %}
{{ state.entity_id }}={{ state.state }},
{% endfor %}
```
{% endraw %} {% endraw %}
Entities that are on: Entities that are on:
@ -134,6 +186,10 @@ Other state examples:
{% if states('sensor.train_departure_time') in ("unavailable", "unknown") %} {% if states('sensor.train_departure_time') in ("unavailable", "unknown") %}
{{ ... }} {{ ... }}
{% if has_value('sensor.train_departure_time') %}
{{ ... }}
{% set state = states('sensor.temperature') %}{{ state | float + 1 if is_number(state) else "invalid temperature" }} {% set state = states('sensor.temperature') %}{{ state | float + 1 if is_number(state) else "invalid temperature" }}
{% set state = states('sensor.temperature') %}{{ (state | float * 10) | round(2) if is_number(state)}} {% set state = states('sensor.temperature') %}{{ (state | float * 10) | round(2) if is_number(state)}}
@ -320,6 +376,21 @@ The same thing can also be expressed as a test:
{% endraw %} {% endraw %}
### Entities
- `is_hidden_entity(entity_id)` returns whether an entity has been hidden. Can also be used as a test.
### Entities examples
{% raw %}
```text
{{ area_entities('kitchen') | reject('is_hidden_entity') }} # Gets a list of visible entities in the kitchen area
```
{% endraw %}
### Devices ### Devices
- `device_entities(device_id)` returns a list of entities that are associated with a given device ID. Can also be used as a filter. - `device_entities(device_id)` returns a list of entities that are associated with a given device ID. Can also be used as a filter.
@ -361,6 +432,7 @@ The same thing can also be expressed as a test:
### Areas ### Areas
- `areas()` returns the full list of area IDs
- `area_id(lookup_value)` returns the area ID for a given device ID, entity ID, or area name. Can also be used as a filter. - `area_id(lookup_value)` returns the area ID for a given device ID, entity ID, or area name. Can also be used as a filter.
- `area_name(lookup_value)` returns the area name for a given device ID, entity ID, or area ID. Can also be used as a filter. - `area_name(lookup_value)` returns the area name for a given device ID, entity ID, or area ID. Can also be used as a filter.
- `area_entities(area_name_or_id)` returns the list of entity IDs tied to a given area ID or name. Can also be used as a filter. - `area_entities(area_name_or_id)` returns the list of entity IDs tied to a given area ID or name. Can also be used as a filter.
@ -370,6 +442,10 @@ The same thing can also be expressed as a test:
{% raw %} {% raw %}
```text
{{ areas() }} # ['area_id']
```
```text ```text
{{ area_id('Living Room') }} # 'deadbeefdeadbeefdeadbeefdeadbeef' {{ area_id('Living Room') }} # 'deadbeefdeadbeefdeadbeefdeadbeef'
``` ```
@ -488,7 +564,7 @@ For example, if you wanted to select a field from `trigger` in an automation bas
### Time ### Time
`now()` and `utcnow()` are not supported in [limited templates](#limited-templates). `now()`, `relative_time()`, `today_at()`, and `utcnow()` are not supported in [limited templates](#limited-templates).
- `now()` returns a datetime object that represents the current time in your time zone. - `now()` returns a datetime object that represents the current time in your time zone.
- You can also use: `now().second`, `now().minute`, `now().hour`, `now().day`, `now().month`, `now().year`, `now().weekday()` and `now().isoweekday()` and other [`datetime`](https://docs.python.org/3.8/library/datetime.html#datetime.datetime) attributes and functions. - You can also use: `now().second`, `now().minute`, `now().hour`, `now().day`, `now().month`, `now().year`, `now().weekday()` and `now().isoweekday()` and other [`datetime`](https://docs.python.org/3.8/library/datetime.html#datetime.datetime) attributes and functions.
@ -498,9 +574,11 @@ For example, if you wanted to select a field from `trigger` in an automation bas
- Using `utcnow()` will cause templates to be refreshed at the start of every new minute. - Using `utcnow()` will cause templates to be refreshed at the start of every new minute.
- `today_at(value)` converts a string containing a military time format to a datetime object with today's date in your time zone. - `today_at(value)` converts a string containing a military time format to a datetime object with today's date in your time zone.
- Using `today_at()` will cause templates to be refreshed at the start of every new minute.
{% raw %} {% raw %}
```yaml ```text
# Is the current time past 10:15? # Is the current time past 10:15?
{{ now() > today_at("10:15") }} {{ now() > today_at("10:15") }}
``` ```
@ -512,11 +590,12 @@ For example, if you wanted to select a field from `trigger` in an automation bas
- `as_local()` converts datetime object to local time. This function can also be used as a filter. - `as_local()` converts datetime object to local time. This function can also be used as a filter.
- `strptime(string, format, default)` parses a string based on a [format](https://docs.python.org/3.10/library/datetime.html#strftime-and-strptime-behavior) and returns a datetime object. If that fails, it returns the `default` value or, if omitted, raises an error. - `strptime(string, format, default)` parses a string based on a [format](https://docs.python.org/3.10/library/datetime.html#strftime-and-strptime-behavior) and returns a datetime object. If that fails, it returns the `default` value or, if omitted, raises an error.
- `relative_time` converts datetime object to its human-friendly "age" string. The age can be in second, minute, hour, day, month or year (but only the biggest unit is considered, e.g., if it's 2 days and 3 hours, "2 days" will be returned). Note that it only works for dates _in the past_. - `relative_time` converts datetime object to its human-friendly "age" string. The age can be in second, minute, hour, day, month or year (but only the biggest unit is considered, e.g., if it's 2 days and 3 hours, "2 days" will be returned). Note that it only works for dates _in the past_.
- Using `relative_time()` will cause templates to be refreshed at the start of every new minute.
- `timedelta` returns a timedelta object and accepts the same arguments as the Python `datetime.timedelta` function -- days, seconds, microseconds, milliseconds, minutes, hours, weeks. - `timedelta` returns a timedelta object and accepts the same arguments as the Python `datetime.timedelta` function -- days, seconds, microseconds, milliseconds, minutes, hours, weeks.
{% raw %} {% raw %}
```yaml ```text
# 77 minutes before current time. # 77 minutes before current time.
{{ now() - timedelta( hours = 1, minutes = 17 ) }} {{ now() - timedelta( hours = 1, minutes = 17 ) }}
``` ```
@ -527,7 +606,7 @@ For example, if you wanted to select a field from `trigger` in an automation bas
{% raw %} {% raw %}
```yaml ```text
# Renders to "00:10:00" # Renders to "00:10:00"
{{ as_timedelta("PT10M") }} {{ as_timedelta("PT10M") }}
``` ```
@ -566,7 +645,7 @@ To fix it, enforce the ISO conversion via `isoformat()`:
{% raw %} {% raw %}
```yaml ```text
{{ 120 | timestamp_local }} {{ 120 | timestamp_local }}
``` ```
@ -780,10 +859,8 @@ Some examples:
``` ```
This more complex example uses the `contains` filter to match the current month with a list. In this case, it's used to generate a list of light theme to give to the `Input select: Set options` service. This more complex example uses the `contains` filter to match the current month with a list. In this case, it's used to generate a list of light theme to give to the `Input select: Set options` service.
{% endraw %} {% endraw %}
### Numeric functions and filters ### Numeric functions and filters
Some of these functions can also be used in a [filter](https://jinja.palletsprojects.com/en/latest/templates/#id11). This means they can act as a normal function like this `sqrt(2)`, or as part of a filter like this `2|sqrt`. Some of these functions can also be used in a [filter](https://jinja.palletsprojects.com/en/latest/templates/#id11). This means they can act as a normal function like this `sqrt(2)`, or as part of a filter like this `2|sqrt`.
@ -808,10 +885,10 @@ The numeric functions and filters raise an error if the input is not a valid num
- `is_number` will return `True` if the input can be parsed by Python's `float` function and the parsed input is not `inf` or `nan`, in all other cases returns `False`. Note that a Python `bool` will return `True` but the strings `"True"` and `"False"` will both return `False`. Can be used as a filter. - `is_number` will return `True` if the input can be parsed by Python's `float` function and the parsed input is not `inf` or `nan`, in all other cases returns `False`. Note that a Python `bool` will return `True` but the strings `"True"` and `"False"` will both return `False`. Can be used as a filter.
- `int(value, default)` function is similar to `float`, but converts to an `int` instead. Like `float`, it has a filter form, and an error is raised if the `default` value is omitted. Fractional part is discarded: `int("1.5")` is `1`. - `int(value, default)` function is similar to `float`, but converts to an `int` instead. Like `float`, it has a filter form, and an error is raised if the `default` value is omitted. Fractional part is discarded: `int("1.5")` is `1`.
- `bool(value, default)` function converts the value to either `true` or `false`. - `bool(value, default)` function converts the value to either `true` or `false`.
The following values are considered to be `true`: boolean `true`, non-zero `int`s and `float`s, and the strings `"true"`, `"yes"`, `"on"`, `"enable"`, and `"1"` (case-insensitive). `false` is returned for the opposite values: boolean `false`, integer or floating-point `0`, and the strings `"false"`, `"no"`, `"off"`, `"disable"`, and `"0"` (also case-insensitive). The following values are considered to be `true`: boolean `true`, non-zero `int`s and `float`s, and the strings `"true"`, `"yes"`, `"on"`, `"enable"`, and `"1"` (case-insensitive). `false` is returned for the opposite values: boolean `false`, integer or floating-point `0`, and the strings `"false"`, `"no"`, `"off"`, `"disable"`, and `"0"` (also case-insensitive).
If the value is not listed here, the function returns the `default` value, or if omitted raises an error. If the value is not listed here, the function returns the `default` value, or if omitted raises an error.
This function is intended to be used on states of [binary sensors](/integrations/binary_sensor/), [switches](/integrations/switch/), or similar entities, so its behavior is different from Python's built-in `bool` conversion, which would consider e.g. `"on"`, `"off"`, and `"unknown"` all to be `true`, but `""` to be `false`; if that is desired, use `not not value` or a similar construct instead. This function is intended to be used on states of [binary sensors](/integrations/binary_sensor/), [switches](/integrations/switch/), or similar entities, so its behavior is different from Python's built-in `bool` conversion, which would consider e.g. `"on"`, `"off"`, and `"unknown"` all to be `true`, but `""` to be `false`; if that is desired, use `not not value` or a similar construct instead.
Like `float` and `int`, `bool` has a filter form. Using `none` as the default value is particularly useful in combination with the [immediate if filter](#immediate-if-iif): it can handle all three possible cases in a single line. Like `float` and `int`, `bool` has a filter form. Using `none` as the default value is particularly useful in combination with the [immediate if filter](#immediate-if-iif): it can handle all three possible cases in a single line.
- `log(value, base, default)` will take the logarithm of the input. When the base is omitted, it defaults to `e` - the natural logarithm. If `value` or `base` can't be converted to a `float`, returns the `default` value, or if omitted raises an error. Can also be used as a filter. - `log(value, base, default)` will take the logarithm of the input. When the base is omitted, it defaults to `e` - the natural logarithm. If `value` or `base` can't be converted to a `float`, returns the `default` value, or if omitted raises an error. Can also be used as a filter.
- `sin(value, default)` will return the sine of the input. If `value` can't be converted to a `float`, returns the `default` value, or if omitted raises an error. Can be used as a filter. - `sin(value, default)` will return the sine of the input. If `value` can't be converted to a `float`, returns the `default` value, or if omitted raises an error. Can be used as a filter.
@ -885,7 +962,7 @@ The other part of templating is processing incoming data. It allows you to modif
It depends per integration or platform, but it is common to be able to define a template using the `value_template` configuration key. When a new value arrives, your template will be rendered while having access to the following values on top of the usual Home Assistant extensions: It depends per integration or platform, but it is common to be able to define a template using the `value_template` configuration key. When a new value arrives, your template will be rendered while having access to the following values on top of the usual Home Assistant extensions:
| Variable | Description | | Variable | Description |
|--------------|------------------------------------| | ------------ | ---------------------------------- |
| `value` | The incoming value. | | `value` | The incoming value. |
| `value_json` | The incoming value parsed as JSON. | | `value_json` | The incoming value parsed as JSON. |
@ -903,7 +980,7 @@ The template for `on` would be:
{% raw %} {% raw %}
```yaml ```yaml
'{{value_json.on}}' "{{value_json.on}}"
``` ```
{% endraw %} {% endraw %}
@ -1002,7 +1079,7 @@ With given payload:
{ "state": "ON", "temperature": 21.902 } { "state": "ON", "temperature": 21.902 }
``` ```
Template {% raw %}```{{ value_json.temperature | round(1) }}```{% endraw %} renders to `21.9`. Template {% raw %}`{{ value_json.temperature | round(1) }}`{% endraw %} renders to `21.9`.
Additional the MQTT entity attributes `entity_id`, `name` and `this` can be used as variables in the template. The `this` attribute refers to the [entity state](/docs/configuration/state_object) of the MQTT item. Additional the MQTT entity attributes `entity_id`, `name` and `this` can be used as variables in the template. The `this` attribute refers to the [entity state](/docs/configuration/state_object) of the MQTT item.
@ -1016,7 +1093,7 @@ For service calls command templates are defined to format the outgoing MQTT payl
Example command template: Example command template:
With given value `21.9` template {% raw %}```{"temperature": {{ value }} }```{% endraw %} renders to: With given value `21.9` template {% raw %}`{"temperature": {{ value }} }`{% endraw %} renders to:
```json ```json
{ {
@ -1040,7 +1117,7 @@ The default priority of operators is that the filter (`|`) has priority over eve
{% raw %} {% raw %}
```yaml ```text
{{ states('sensor.temperature') | float / 10 | round(2) }} {{ states('sensor.temperature') | float / 10 | round(2) }}
``` ```

View File

@ -16,7 +16,7 @@ away.
{% details "Manual configuration steps" %} {% details "Manual configuration steps" %}
{% if include.discovery or page.ha_dhcp or page.ha_homekit or page.ha_ssdp or page.ha_zeroconf or page.ha_mqtt %} {% if include.discovery or page.ha_dhcp or page.ha_homekit or page.ha_ssdp or page.ha_zeroconf or page.ha_mqtt %}
If there wasn't any discovered automatically, don't worry! You can set up a If it wasn't discovered automatically, don't worry! You can set up a
manual integration entry: manual integration entry:
{% else %} {% else %}
If the above My button doesn't work, you can also perform the following steps If the above My button doesn't work, you can also perform the following steps

View File

@ -25,43 +25,64 @@ During the configuration, the user is prompted for the IP address of the device
For this integration to communicate with the device, both must be connected to the same Wi-Fi network. For this integration to communicate with the device, both must be connected to the same Wi-Fi network.
After the setup, separate entities will be created for each of the sensors, found in your device.
## Sensors ## Sensors
Currently, the integration supports the following sensors: Currently, the integration supports the following sensors:
| Sensor name | Unit of measurement | | Sensor name | Unit of measurement |
|----------------------|---------------------| |----------------------|---------------------|
| Acetaldehyde | µg/m³ |
| Ammonia | µg/m³ | | Ammonia | µg/m³ |
| Arsine | µg/m³ |
| Bromine | µg/m³ |
| CH4S | µg/m³ |
| Chlorine | µg/m³ | | Chlorine | µg/m³ |
| ClO2 | µg/m³ |
| CO | mg/m³ | | CO | mg/m³ |
| CO2 | ppm | | CO2 | ppm |
| CS2 | µg/m³ |
| Dew Point | °C | | Dew Point | °C |
| Ethanol | µg/m³ | | Ethanol | µg/m³ |
| Ethylene | µg/m³ |
| Formaldehyde | µg/m³ | | Formaldehyde | µg/m³ |
| F2 | µg/m³ |
| H2S | µg/m³ | | H2S | µg/m³ |
| HCl | µg/m³ |
| HCN | µg/m³ |
| HF | µg/m³ |
| Health Index | % | | Health Index | % |
| Humidity (relative) | % | | Humidity (relative) | % |
| Absolute Humidity | g/m³ | | Absolute Humidity | g/m³ |
| Hydrogen | µg/m³ | | Hydrogen | µg/m³ |
| Hydrogen Peroxide | µg/m³ |
| Methane | % | | Methane | % |
| N2O | µg/m³ | | N2O | µg/m³ |
| NO | µg/m³ | | NO | µg/m³ |
| NO2 | µg/m³ | | NO2 | µg/m³ |
| Ozone | µg/m³ | | Organic Acid | ppb |
| Oxygen | µg/m³ | | Oxygen | µg/m³ |
| Ozone | µg/m³ |
| Performance Index | % | | Performance Index | % |
| PM1, PM25, PM10[^pm] | µg/m³ | | PH3 | µg/m³ |
| PM1, PM25, PM10 | µg/m³ |
| Pressure | hPa | | Pressure | hPa |
| Relative Pressure | hPa | | Relative Pressure | hPa |
| Propane | % | | Propane | % |
| Refrigerant | µg/m³ |
| SiH4 | µg/m³ |
| SO2 | µg/m³ | | SO2 | µg/m³ |
| Noise | dBa | | Noise | dBa |
| Noise (Maximum) | dBa | | Noise (Maximum) | dBa |
| Radon | Bq/m³ | | Radon | Bq/m³ |
| Temperature | °C | | Temperature | °C |
| Virus Index | % |
| VOC | ppb | | VOC | ppb |
| VOC (Industrial) | ppb | | VOC (Industrial) | ppb |
PM1, PM25, and PM10 correspond to concentrations of particulates with diameter less than 1µm, 2.5µm, and 10µm respectively PM1, PM25, and PM10 correspond to concentrations of particulates with diameter less than 1µm, 2.5µm, and 10µm respectively
After the setup, separate entities will be created for each of the aforementioned sensors, found in your device. Virus Index uses CO2 as a proxy for potential aerosol load and can be seen as an indicator of ventilation sufficiency (0%: insufficient ventilation, 100%: all fine).
Virtual sensors "Relative Pressure" and "Virus Index" are introduced in firmware v1.80.0 but deactivated by default. You can activate them in the air-Q mobile application under "Advanced settings".

View File

@ -40,7 +40,7 @@ Currently, this includes support for the following product classes:
- BleBox rollerGate - BleBox rollerGate
- BleBox gateBox - BleBox gateBox
For now, only a minimum set of features are supported (e.g., no tilt support for shutterBox). Set of features includes tilt support for shutterBox.
## Binary sensors ## Binary sensors
This integration adds BleBox device as a binary_sensor in Home Assistant. This integration adds BleBox device as a binary_sensor in Home Assistant.

View File

@ -156,10 +156,11 @@ Add a new calendar event. A calendar `target` is selected with a [Target Selecto
| `summary` | no | Acts as the title of the event. | Bowling | `summary` | no | Acts as the title of the event. | Bowling
| `description` | yes | The description of the event. | Birthday bowling | `description` | yes | The description of the event. | Birthday bowling
| `start_date_time` | yes | The date and time the event should start. | 2019-03-10 20:00:00 | `start_date_time` | yes | The date and time the event should start. | 2019-03-10 20:00:00
| `end_date_time` | yes | The date and time the event should end. | 2019-03-10 23:00:00 | `end_date_time` | yes | The date and time the event should end (exclusive). | 2019-03-10 23:00:00
| `start_date` | yes | The date the whole day event should start. | 2019-03-10 | `start_date` | yes | The date the whole day event should start. | 2019-03-10
| `end_date` | yes | The date the whole day event should end. | 2019-03-11 | `end_date` | yes | The date the whole day event should end (exclusive). | 2019-03-11
| `in` | yes | Days or weeks that you want to create the event in. | "days": 2 | `in` | yes | Days or weeks that you want to create the event in. | "days": 2
| `location` | yes | The location of the event. | Bowling center
<div class='note'> <div class='note'>

View File

@ -1,250 +0,0 @@
---
title: Dark Sky
description: How to integrate Dark Sky within Home Assistant.
ha_category:
- Weather
ha_release: '0.30'
ha_iot_class: Cloud Polling
ha_codeowners:
- '@fabaff'
ha_domain: darksky
ha_platforms:
- sensor
- weather
ha_integration_type: integration
---
The `darksky` platform uses the [Dark Sky](https://darksky.net/) web service as a source for meteorological data for your location. The location is based on the `longitude` and `latitude` coordinates configured in your `configuration.yaml` file. The coordinates are auto-detected but to take advantage of the hyper-local weather reported by Dark Sky, you can refine them down to your exact home address. GPS coordinates can be found by using [Google Maps](https://www.google.com/maps) and clicking on your home or [Openstreetmap](https://www.openstreetmap.org/).
## Setup
<div class='note warning'>
On March 31, 2020 Dark Sky was [acquired by Apple](https://blog.darksky.net/dark-sky-has-a-new-home/) and is no longer allowing new API registrations. The Dark Sky API will continue to function for existing users [until March 31st, 2023](https://blog.darksky.net/), but it is no longer possible to obtain an API key for new users. Home Assistant supports many alternative [weather integrations](/integrations/#weather).
</div>
You can make up to 1000 calls per day for free which means that you could make one approximately every 86 seconds.
<div class='note warning'>
[Dark Sky](https://darksky.net/dev/) will charge you $0.0001 per API call if you enter your credit card details and create more than 1000 calls per day.
</div>
## Configuration
To add Dark Sky to your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
sensor:
- platform: darksky
api_key: YOUR_API_KEY
forecast:
- 0
hourly_forecast:
- 0
- 1
monitored_conditions:
- summary
- icon
- temperature
```
{% configuration %}
api_key:
description: Your API key.
required: true
type: string
name:
description: Additional name for the sensors.
required: false
default: Dark Sky
type: string
forecast:
description: List of days in the 7-day forecast you would like to receive data on, starting with today as day 0 and ending with day 7. Any condition from `monitored_conditions` with a daily forecast by Dark Sky will generate a sensor with entity_id `<condition>_<day>d`.
required: false
type: list
hourly_forecast:
description: List of hours in the 48-hour forecast you would like to receive data on, starting with this hour as hour 0 and ending with hour 48. Any condition from `monitored_conditions` with an hourly forecast by Dark Sky will generate a sensor with entity_id `<condition>_<hour>h`.
required: false
type: list
language:
description: The desired language of the summary properties. The valid options are further down in a table.
required: false
default: "`en`"
type: string
latitude:
description: Latitude coordinate to monitor weather of (required if **longitude** is specified).
required: false
default: coordinates from the Home Assistant configuration
type: float
longitude:
description: Longitude coordinate to monitor weather of (required if **latitude** is specified).
required: false
default: coordinates from the Home Assistant configuration
type: float
monitored_conditions:
description: Conditions to display in the frontend.
required: true
type: list
keys:
summary:
description: A human-readable text summary.
icon:
description: A machine-readable text summary, suitable for selecting an icon for display. See [Dark Sky API documentation](https://darksky.net/dev/docs) for the list of possible values.
precip_type:
description: The type of precipitation occurring at the given time. If `precip_intensity` is zero, then this property will be `unknown`. See [Dark Sky API documentation](https://darksky.net/dev/docs) for the list of possible values.
precip_intensity:
description: The intensity of precipitation occurring at the given time. This value is conditional on probability (that is, assuming any precipitation occurs at all).
precip_probability:
description: The probability of precipitation occurring, in percents.
precip_accumulation:
description: The amount of snowfall accumulation expected to occur. If no snowfall is expected, this property will be `undefined`.
temperature:
description: The air temperature.
apparent_temperature:
description: The apparent (or "feels like") temperature.
dew_point:
description: The dew point.
wind_speed:
description: The wind speed.
wind_gust:
description: The wind gust speed.
wind_bearing:
description: The direction that the wind is coming **from** in degrees, with true north at 0° and progressing clockwise. If `wind_speed` is 0, then this value is `unknown`.
cloud_cover:
description: The percentage of sky occluded by clouds.
humidity:
description: The relative humidity.
pressure:
description: The sea-level air pressure in millibars.
visibility:
description: The average visibility.
ozone:
description: The columnar density of total atmospheric ozone at the given time in Dobson units.
minutely_summary:
description: A human-readable text summary for the next hour.
hourly_summary:
description: A human-readable text summary for the next two days.
daily_summary:
description: A human-readable text summary for the next week.
temperature_high:
description: The daytime high temperature.
temperature_low:
description: The overnight low temperature.
apparent_temperature_high:
description: The daytime high apparent temperature.
apparent_temperature_low:
description: The overnight low apparent temperature.
precip_intensity_max:
description: The maximum value of `precip_intensity` during a given day.
uv_index:
description: The UV index.
moon_phase:
description: "The fractional part of the lunation number during the given day: a value of 0 corresponds to a new moon, 0.25 to a first quarter moon, 0.5 to a full moon, and 0.75 to a last quarter moon."
sunrise_time:
description: The time of when the sun will rise during a given day.
sunset_time:
description: The time of when the sun will set during a given day.
nearest_storm_distance:
description: The approximate distance to the nearest storm in miles.
nearest_storm_bearing:
description: The approximate direction of the nearest storm in degrees, with true north at 0° and progressing clockwise.
alerts:
description: Current severe weather advisories.
units:
description: Specify the unit system. Valid options are `auto`, `us`, `si`, `ca` and `uk2`. `auto` will let Dark Sky decide the unit system based on location.
required: false
default: "`si` or `us`, based on the temperature preference in Home Assistant."
type: string
scan_interval:
description: "Minimum 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: 2 minutes
type: time
{% endconfiguration %}
<div class='note'>
Please note that some monitored conditions, such as `temperature_high` or `temperature_low`, may only work when setting the `forecast` attribute to at least `0` (current day).
</div>
#### Time period dictionary example
```yaml
scan_interval:
# At least one of these must be specified:
days: 0
hours: 0
minutes: 3
seconds: 30
milliseconds: 0
```
#### Language options
All language options are described in this table that you can use for the Dark Sky sensor.
|Language|Variable Code|
|---|---|
|Arabic|`ar`|
|Azerbaijani|`az`|
|Belarusian|`be`|
|Bulgarian|`bg`|
|Bengali|`bn`|
|Bosnian|`bs`|
|Catalan|`ca`|
|Czech|`cs`|
|Danish|`da`|
|German|`de`|
|Greek|`el`|
|English|`en`|
|Esperanto|`eo`|
|Spanish|`es`|
|Estonian|`et`|
|Finnish|`fi`|
|French|`fr`|
|Hebrew|`he`|
|Hindi|`hi`|
|Croatian|`hr`|
|Hungarian|`hu`|
|Indonesian|`id`|
|Icelandic|`is`|
|Italian|`it`|
|Japanese|`ja`|
|Georgian|`ka`|
|Kannada|`kn`|
|Korean|`ko`|
|Cornish|`kw`|
|Latvian|`lv`|
|Malayam|`ml`|
|Marathi|`mr`|
|Norwegian Bokmål|`nb`|
|Dutch|`nl`|
|Punjabi|`pa`|
|Polish|`pl`|
|Portuguese|`pt`|
|Romanian|`ro`|
|Russian|`ru`|
|Slovak|`sk`|
|Slovenian|`sl`|
|Serbian|`sr`|
|Swedish|`sv`|
|Tamil|`ta`|
|Telugu|`te`|
|Tetum|`tet`|
|Turkish|`tr`|
|Ukrainian|`uk`|
|Urdu|`ur`|
|Igpay Atinlay|`x-pig-latin`|
|simplified Chinese|`zh`|
|traditional Chinese|`zh-tw`|
<div class='note warning'>
While the platform is called "darksky" the sensors will show up in Home Assistant as "dark_sky" (eg: sensor.dark_sky_summary).
</div>
More details about the API are available in the [Dark Sky API documentation](https://darksky.net/dev/docs).

View File

@ -18,7 +18,6 @@ This integration is limited to detect:
* [Bluesound speakers](/integrations/bluesound) * [Bluesound speakers](/integrations/bluesound)
* [Bose Soundtouch speakers](/integrations/soundtouch) * [Bose Soundtouch speakers](/integrations/soundtouch)
* [Enigma2 media player](/integrations/enigma2) * [Enigma2 media player](/integrations/enigma2)
* [Frontier Silicon internet radios](/integrations/frontier_silicon)
* [Linn / Openhome](/integrations/openhome) * [Linn / Openhome](/integrations/openhome)
* [SABnzbd downloader](/integrations/sabnzbd) * [SABnzbd downloader](/integrations/sabnzbd)
* [Yamaha media player](/integrations/yamaha) * [Yamaha media player](/integrations/yamaha)
@ -49,7 +48,6 @@ Valid values for ignore are:
* `bluesound`: Bluesound speakers * `bluesound`: Bluesound speakers
* `bose_soundtouch`: Bose Soundtouch speakers * `bose_soundtouch`: Bose Soundtouch speakers
* `enigma2`: Enigma2 media players * `enigma2`: Enigma2 media players
* `frontier_silicon`: Frontier Silicon internet radios
* `lg_smart_device`: LG Soundbars * `lg_smart_device`: LG Soundbars
* `openhome`: Linn / Openhome * `openhome`: Linn / Openhome
* `sabnzbd`: SABnzbd downloader * `sabnzbd`: SABnzbd downloader

View File

@ -8,7 +8,8 @@ ha_release: 0.107
ha_domain: edl21 ha_domain: edl21
ha_platforms: ha_platforms:
- sensor - sensor
ha_integration_type: integration ha_integration_type: hub
ha_config_flow: true
--- ---
The `edl21` integration lets you read German EDL21 smart meters using [SML](https://de.wikipedia.org/wiki/Smart_Message_Language) from Home Assistant. The `edl21` integration lets you read German EDL21 smart meters using [SML](https://de.wikipedia.org/wiki/Smart_Message_Language) from Home Assistant.

View File

@ -0,0 +1,23 @@
---
title: ESERA 1-Wire
description: Connect and control your ESERA 1-Wire devices using the 1-Wire integration
ha_category:
- DIY
ha_domain: esera_onewire
ha_integration_type: virtual
ha_supporting_domain: onewire
ha_supporting_integration: 1-Wire
ha_release: 0.12
ha_codeowners:
- '@garbled1'
- '@epenet'
ha_config_flow: true
ha_platforms:
- binary_sensor
- diagnostics
- sensor
- switch
ha_iot_class: Local Polling
---
{% include integrations/supported_brand.md %}

View File

@ -115,6 +115,12 @@ filters:
default: positive infinity default: positive infinity
{% endconfiguration %} {% endconfiguration %}
<div class="note warning">
When configuring a `window_size` that is not a time and with a value larger than the default of `1`, the database must examine nearly every stored state for that entity during Home Assistant startup. If you have modified the [Recorder `purge_keep_days`](/integrations/recorder/#purge_keep_days) value or have many states stored in the database for the filtered entity, this can cause your Home Assistant instance can to respond poorly during startup.
</div>
## Filters ## Filters
### Low-pass ### Low-pass

View File

@ -53,7 +53,8 @@ Additionally, we also support to trigger smarthome templates.
- [FRITZ!DECT 301](https://en.avm.de/products/fritzdect/fritzdect-301/) - [FRITZ!DECT 301](https://en.avm.de/products/fritzdect/fritzdect-301/)
- [FRITZ!DECT 500](https://en.avm.de/products/fritzdect/fritzdect-500/) - [FRITZ!DECT 500](https://en.avm.de/products/fritzdect/fritzdect-500/)
- [Eurotronic Comet DECT](https://eurotronic.org/produkte/dect-ule-heizkoerperthermostat/comet-dect/) - [Eurotronic Comet DECT](https://eurotronic.org/produkte/dect-ule-heizkoerperthermostat/comet-dect/)
- [Magenta SmartHome LED E27](https://www.smarthome.de/geraete/smarthome-led-lampe-e27-farbig-weiss) - [Magenta SmartHome LED E27 Color](https://www.smarthome.de/geraete/smarthome-led-lampe-e27-farbig-weiss)
- Magenta SmartHome LED E27 warmwhite
- [Rademacher RolloTron DECT 1213](https://www.rademacher.de/shop/rollladen-sonnenschutz/elektrischer-gurtwickler/rollotron-dect-1213) - [Rademacher RolloTron DECT 1213](https://www.rademacher.de/shop/rollladen-sonnenschutz/elektrischer-gurtwickler/rollotron-dect-1213)
{% include integrations/config_flow.md %} {% include integrations/config_flow.md %}

View File

@ -11,58 +11,37 @@ ha_platforms:
ha_integration_type: integration ha_integration_type: integration
ha_codeowners: ha_codeowners:
- '@wlcrs' - '@wlcrs'
ha_ssdp: true
ha_config_flow: true
--- ---
This integration provides support for Internet Radios based on the [Frontier Silicon chipset]. Some of the manufacturers which offer products based on these chips include: Hama, Medion, Slivercrest, Auna, Technisat, Revo, Pinnel, etc. These devices will be usually controlled by the [UNDOK] app. This integration provides support for Internet Radios based on the [Frontier Silicon chipset]. Some of the manufacturers which offer products based on these chips include: Hama, Medion, Slivercrest, Auna, Technisat, Revo, Pinnel, etc. These devices will be usually controlled by the UNDOK app.
## Supported Models ## Supported Models
Frontier Silicon is used by many different brands of radio manufacturers.
Supported devices include, but are not limited to:
* Hama: [IR50], [IR110], [DIR3110] * Hama: [IR50], [IR110], [DIR3110]
* Medion: [Medion Radios] * Medion: [Medion Radios]
* Silvercrest: [SIRD 14 C2 (archived website)] * Silvercrest: [SIRD 14 C2 (archived website)]
* Teufel: [Radio 3sixty (2019)] * Teufel: [Radio 3sixty (2019)]
* Roberts: [Roberts Stream 94i]
* Some models from: Auna, Technisat, Revo, Pinell, Como Audio * Some models from: Auna, Technisat, Revo, Pinell, Como Audio
This integration was developed and tested with a Hama [DIR3110] and a Medion [MD 87466]. This integration was developed and tested with a [Roberts Stream 94i].
## Configuration If your device is supported by the UNDOK app, then it is also supported by this integration.
Your Frontier Silicon based device should be automatically discovered by Home Assistant. The auto-discovery service assumes that the device uses the default PIN code: *1234*. If you have changed the PIN code, the auto-discovery will fail as Home Assistant will not be able to connect to the device. You can set the PIN code of your device (depending on manufacturer) under: ## Prerequisites
The integration supports automatic discovery of your Internet Radio. If you need to set up the device manually, please provide the device IP-address. Some models use a separate port (2244) for API access, this can be verified by visiting `http://[host]:[port]/device`.
The default PIN for Frontier Silicon-based devices is 1234. You can set the PIN code of your device (depending on manufacturer) under:
*MENU button > Main Menu > System setting > Network > NetRemote PIN setup* *MENU button > Main Menu > System setting > Network > NetRemote PIN setup*
If your device was not automatically discovered or you have changed the PIN you can alternatively add the following to your `configuration.yaml` file: {% include integrations/config_flow.md %}
```yaml
# Example configuration.yaml entry
media_player:
- platform: frontier_silicon
host: IP_ADDRESS
```
{% configuration %}
host:
description: The host name or the IP address of the device.
required: true
default: 192.168.1.11
type: string
port:
description: The port number of the device.
required: false
default: 80
type: integer
password:
description: PIN code of the Internet Radio.
required: false
default: 1234
type: string
name:
description: Friendly name of the Internet Radio. If present this will override the friendly name reported by the radio itself.
required: false
default: empty
type: string
{% endconfiguration %}
Some models use a separate port (2244) for API access, this can be verified by visiting http://[host]:[port]/device.
In case your device (friendly name) is called *badezimmer*, an example automation can look something like this: In case your device (friendly name) is called *badezimmer*, an example automation can look something like this:
@ -81,6 +60,7 @@ action:
``` ```
## Screenshots: ## Screenshots:
Overview DAB+ (Badezimmer) and Spotify (Küche): Overview DAB+ (Badezimmer) and Spotify (Küche):
<p class='img'> <p class='img'>
<img src='/images/screenshots/frontier_silicon_overview.png' /> <img src='/images/screenshots/frontier_silicon_overview.png' />
@ -91,17 +71,13 @@ Overview of the info dialog:
<img src='/images/screenshots/frontier_silicon_info_dialog.png' /> <img src='/images/screenshots/frontier_silicon_info_dialog.png' />
</p> </p>
## Development
Support is provided through the Python [fsapi] module. The Python module was developed by using the documentation provided by [flammy] and
is based on [tiwillam]'s fsapi project. Special thanks to both developers, this integration would have not been possible without their work.
## Notes and Limitations ## Notes and Limitations
<div class='note warning'> <div class='note warning'>
The Frontier Silicon API does not provide a multi-user environment. There is always a single user (session) controlling a device, which means that once Home Assistant connects to a device all other sessions will be invalidated. This renders the usage of [UNDOK] almost impossible, as the Home Assistant integration polls the device state every 30 seconds or issues a command by creating a new session. Some older devices may require setting up a session to process requests. This is automatically detected by the underlying library. There is always a single user (session) controlling a device, which means that once Home Assistant connects to a device all other sessions will be invalidated.
*If you want to prevent Home Assistant to auto connect to your device, simply change the PIN code of the device to something else than: 1234*
This renders the usage of [UNDOK] almost impossible for these older devices, as the Home Assistant integration polls the device state every 30 seconds or issues a command by creating a new session. In that case, you have to disable the integration if you want to use UNDOK.
</div> </div>
@ -113,7 +89,4 @@ The Frontier Silicon API does not provide a multi-user environment. There is alw
[MD 87466]: https://www.conrad.com/p/medion-p83302-md-87466-internet-kitchen-radio-dab-fm-aux-internet-radio-dlna-compatible-white-1434428 [MD 87466]: https://www.conrad.com/p/medion-p83302-md-87466-internet-kitchen-radio-dab-fm-aux-internet-radio-dlna-compatible-white-1434428
[Radio 3sixty (2019)]: https://teufel.de/radio-3sixty-2019-105437000 [Radio 3sixty (2019)]: https://teufel.de/radio-3sixty-2019-105437000
[SIRD 14 C2 (archived website)]: https://web.archive.org/web/20191011141311/https://www.silvercrest-multiroom.de/produkte/stereo-internet-radio/ [SIRD 14 C2 (archived website)]: https://web.archive.org/web/20191011141311/https://www.silvercrest-multiroom.de/produkte/stereo-internet-radio/
[fsapi]: https://github.com/zhelev/python-fsapi [Roberts Stream 94i]: https://www.robertsradio.com/en-gb/stream-94i
[UNDOK]: https://www.frontiersmart.com/product/undok/
[flammy]: https://github.com/flammy/fsapi/
[tiwillam]: https://github.com/tiwilliam/fsapi

View File

@ -146,6 +146,7 @@ A calendar `target` is selected with a [Target Selector](/docs/blueprint/selecto
| `start_date` | yes | The date the whole day event should start. | 2019-03-10 | `start_date` | yes | The date the whole day event should start. | 2019-03-10
| `end_date` | yes | The date the whole day event should end. | 2019-03-11 | `end_date` | yes | The date the whole day event should end. | 2019-03-11
| `in` | yes | Days or weeks that you want to create the event in. | "days": 2 | `in` | yes | Days or weeks that you want to create the event in. | "days": 2
| `location` | yes | The location of the event. | Bowling center
<div class='note'> <div class='note'>

View File

@ -102,7 +102,7 @@ In short, when any group member entity is `unlocked`, the group will also be `un
### Sensor groups ### Sensor groups
- The group state is combined / calculated based on `type` selected to determine the minimum, maximum, latest (last), mean, median, range or sum of the collected states. - The group state is combined / calculated based on `type` selected to determine the minimum, maximum, latest (last), mean, median, range, product or sum of the collected states.
- Members can be any `sensor`, `number` or `input_number` holding numeric states. - Members can be any `sensor`, `number` or `input_number` holding numeric states.
- The group state is `unavailable` if all group members are `unavailable`. - The group state is `unavailable` if all group members are `unavailable`.
- If `ignore_non_numeric` is `false` then group state will be `unavailable` if one member is `unavailable` or does not have a numeric state. - If `ignore_non_numeric` is `false` then group state will be `unavailable` if one member is `unavailable` or does not have a numeric state.
@ -241,7 +241,7 @@ all:
type: boolean type: boolean
default: false default: false
type: type:
description: "Only available for `sensor` group. The type of sensor: `min`, `max`, `last`, `mean`, `median`, `range`, or `sum`." description: "Only available for `sensor` group. The type of sensor: `min`, `max`, `last`, `mean`, `median`, `range`, `product` or `sum`."
type: string type: string
required: true required: true
ignore_non_numeric: ignore_non_numeric:
@ -296,7 +296,7 @@ services:
required: true required: true
type: string type: string
data: data:
description: A dictionary containing parameters to add to all notify payloads. This can be anything that is valid to use in a payload, such as `data`, `message`, `target` or `title`. description: A dictionary containing parameters to add to all notify payloads. This can be anything that is valid to use in a payload, such as `data`, `message`, `target` or `title`. Parameters specified by the action will override the values configured here.
required: false required: false
type: string type: string
{% endconfiguration %} {% endconfiguration %}

View File

@ -24,7 +24,7 @@ This integration is already installed if you run Home Assistant OS or Supervised
## Sensor entities ## Sensor entities
For each installed add-on Supervisor provides following sensors: For each installed add-on, the following sensors are available:
| Sensor | Enabled by default | Description | | Sensor | Enabled by default | Description |
| ------- | ------------------ | ----------- | | ------- | ------------------ | ----------- |
@ -33,13 +33,37 @@ For each installed add-on Supervisor provides following sensors:
| CPU Percent| no | The CPU Percent usage of the add-on | CPU Percent| no | The CPU Percent usage of the add-on
| Memory Percent| no | The Memory (RAM) Percent usage of the add-on | Memory Percent| no | The Memory (RAM) Percent usage of the add-on
For Home Assistant OS Supervisor provides following sensors: For Home Assistant OS, the following sensors are available:
| Sensor | Enabled by default | Description | | Sensor | Enabled by default | Description |
| ------- | ------------------ | ----------- | | ------- | ------------------ | ----------- |
| Version | no | Current version of the Home Assistant OS | Version | no | Current version of the Home Assistant OS
| Newest Version | no | Latest version of the Home Assistant OS currently available | Newest Version | no | Latest version of the Home Assistant OS currently available
For Home Assistant Core, the following sensors are available:
| Sensor | Enabled by default | Description |
| ------- | ------------------ | ----------- |
| CPU Percent| no | The CPU Percent usage of the core
| Memory Percent| no | The Memory (RAM) Percent usage of the core
For Home Assistant Supervisor, the following sensors are available:
| Sensor | Enabled by default | Description |
| ------- | ------------------ | ----------- |
| CPU Percent| no | The CPU Percent usage of the supervisor
| Memory Percent| no | The Memory (RAM) Percent usage of the supervisor
For Home Assistant Host, the following sensors are available:
| Sensor | Enabled by default | Description |
| ------- | ------------------ | ----------- |
| OS Agent Version | no | The version of the installed OS Agent
| Apparmor Version | no | The version of apparmor
| Disk Free | no | Free space (in GB) left on the device
| Disk Total | no | Total space (in GB) on the device
| Disk Used | no | Used space (in GB) on the device
## Binary Sensor entities ## Binary Sensor entities
For each installed add-on Supervisor provides following binary sensors: For each installed add-on Supervisor provides following binary sensors:

View File

@ -29,11 +29,16 @@ Reload all YAML configuration that can be reloaded without restarting Home Assis
It calls the `reload` service on all domains that have it available. Additionally, It calls the `reload` service on all domains that have it available. Additionally,
it reloads the core configuration (equivalent to calling it reloads the core configuration (equivalent to calling
`homeassistant.reload_core_config`) and themes (`frontend.reload_themes`). `homeassistant.reload_core_config`), themes (`frontend.reload_themes`), and custom Jinja (`homeassistant.reload_custom_templates`).
Prior to reloading, a basic configuration check is performed. If that fails, the reload Prior to reloading, a basic configuration check is performed. If that fails, the reload
will not be performed and will raise an error. will not be performed and will raise an error.
### Service `homeassistant.reload_custom_templates`
Reload all Jinja templates in the `config/custom_templates` directory. Changes to these templates
will take effect the next time an importing template is rendered.
### Service `homeassistant.reload_config_entry` ### Service `homeassistant.reload_config_entry`
Reloads an integration config entry. Reloads an integration config entry.

View File

@ -396,6 +396,7 @@ The following integrations are currently supported:
| climate | Thermostat | All climate devices. | | climate | Thermostat | All climate devices. |
| cover | GarageDoorOpener | All covers that support `open` and `close` and have `garage` or `gate` as their `device_class`. | | cover | GarageDoorOpener | All covers that support `open` and `close` and have `garage` or `gate` as their `device_class`. |
| cover | WindowCovering | All covers that support `set_cover_position`. | | cover | WindowCovering | All covers that support `set_cover_position`. |
| cover | Door | All covers that support `set_cover_position` and have `door` as their `device_class`. |
| cover | WindowCovering | All covers that support `open_cover` and `close_cover` through value mapping. (`open` -> `>=50`; `close` -> `<50`) | | cover | WindowCovering | All covers that support `open_cover` and `close_cover` through value mapping. (`open` -> `>=50`; `close` -> `<50`) |
| cover | WindowCovering | All covers that support `open_cover`, `stop_cover` and `close_cover` through value mapping. (`open` -> `>70`; `close` -> `<30`; `stop` -> every value in between) | | cover | WindowCovering | All covers that support `open_cover`, `stop_cover` and `close_cover` through value mapping. (`open` -> `>70`; `close` -> `<30`; `stop` -> every value in between) |
| device_tracker / person | Sensor | Support for `occupancy` device class. | | device_tracker / person | Sensor | Support for `occupancy` device class. |

View File

@ -9,6 +9,7 @@ ha_category:
- Cover - Cover
- Hub - Hub
- Light - Light
- Lock
- Sensor - Sensor
- Switch - Switch
ha_iot_class: Cloud Push ha_iot_class: Cloud Push
@ -23,6 +24,7 @@ ha_platforms:
- climate - climate
- cover - cover
- light - light
- lock
- sensor - sensor
- switch - switch
- weather - weather
@ -39,6 +41,7 @@ There is currently support for the following device types within Home Assistant:
* Climate * Climate
* Cover * Cover
* Light * Light
* Lock
* Sensor * Sensor
* Switch * Switch
* Weather * Weather
@ -153,6 +156,9 @@ Within this delay the device registration should be completed in the App, otherw
* Switch Actuator for brand switches with signal lamp (*HmIP-BSL*) * Switch Actuator for brand switches with signal lamp (*HmIP-BSL*)
* Wired Dimmer module 3x channels (*HMIPW-DRD3*) * Wired Dimmer module 3x channels (*HMIPW-DRD3*)
* homematicip_cloud.lock
* Door Lock Drive - currently, usage just without a pin is possible (*HmIP-DLD*)
* homematicip_cloud.sensor * homematicip_cloud.sensor
* Access Point Duty Cycle (*HmIP-HAP, HmIP-HAP-B1*) * Access Point Duty Cycle (*HmIP-HAP, HmIP-HAP-B1*)
* Wall Mounted Thermostat (*HmIP-WTH, HmIP-WTH2, HmIP-WTH-B*) * Wall Mounted Thermostat (*HmIP-WTH, HmIP-WTH2, HmIP-WTH-B*)

View File

@ -0,0 +1,36 @@
---
title: HomeSeer
description: Connect and control your HomeSeer Z-Wave devices using the Z-Wave integration
ha_release: '2023.4'
ha_iot_class: Local Push
ha_category:
- Binary Sensor
- Light
- Sensor
- Switch
ha_domain: homeseer
ha_integration_type: brand
works_with:
- zwave
ha_platforms:
- binary_sensor
- light
- sensor
- switch
ha_iot_standard: zwave
ha_brand: true
---
[HomeSeer](https://homeseer.com/) is a member of the Works with Home Assistant partner program for their Z-Wave products. Despite offering their own Home Automation software HomeSeer is committed to making sure their products are up-to-date and ready to use in Home Assistant.
HomeSeer products are all Z-Wave Plus certified. Their wall switches and dimmers offer convenient additional status LEDs that can signal events happening in your home and double-tap actions for triggering automations and scenes. Their water valves will stop the water flow when leaks are detected and notify you.
HomeSeer Z-Wave devices work locally and integrate seamlessly with the Z-Wave integration in Home Assistant (Z-Wave stick required). As all connectivity is happening locally, status updates and controlling your devices happen instantly in Home Assistant.
### Firmware updates
HomeSeer periodically releases new firmware with additional features and functionality which can be sent to devices via an encrypted OTA (Over-The-Air) update process. In Home Assistant, you can navigate to your device page and use the Update Device Firmware option to upload the firmware from HomeSeer for your device.
{% my add_zwave_device badge domain=page.ha_domain %}
[Learn more about Z-Wave in Home Assistant.](/integrations/zwave_js/)

View File

@ -14,7 +14,7 @@ ha_codeowners:
ha_config_flow: true ha_config_flow: true
--- ---
The IMAP integration is observing your [IMAP server](https://en.wikipedia.org/wiki/Internet_Message_Access_Protocol) and reporting the number of unread emails. Other search criteria can be used, as shown in the example below. The IMAP integration is observing your [IMAP server](https://en.wikipedia.org/wiki/Internet_Message_Access_Protocol). It can report the number of unread emails and can send a custom event that can be used to trigger an automation. Other search criteria can be used, as shown in the example below.
{% include integrations/config_flow.md %} {% include integrations/config_flow.md %}
@ -48,3 +48,136 @@ Below is an example for setting up the integration to connect to your Microsoft
- Username: Your full email address - Username: Your full email address
- Password: Your password - Password: Your password
- Charset: `US-ASCII` - Charset: `US-ASCII`
### Using events
When a new message arrives that meets the search criteria the `imap` integration will send a custom [event](/docs/automation/trigger/#event-trigger) that can be used to trigger an automation.
It is also possible to use to create a template [`binary_sensor` or `sensor`](/integrations/template/#trigger-based-template-binary-sensors-buttons-numbers-selects-and-sensors) based the [event data](/docs/automation/templating/#event).
The table below shows what attributes come with `trigger.event.data`. The data is a dictionary that has the keys that are shown below:
{% configuration_basic %}
server:
description: The IMAP server name
username:
description: The IMAP user name
search:
description: The IMAP search configuration
folder:
description: The IMAP folder configuration
text:
description: The email body `text` of the the message
sender:
description: The `sender` of the message
subject:
description: The `subject` of the message
date:
description: A `datetime` object of the `date` sent
headers:
description: The `headers` of the message in the for of a dictionary. The values are iterable as headers can occur more than once.
{% endconfiguration_basic %}
The `event_type` for the custom event should be set to `imap_content`. The configuration below shows how you can use the event data in a template `sensor`.
{% raw %}
```yaml
template:
- trigger:
- platform: event
event_type: "imap_content"
id: "custom_event"
sensor:
- name: imap_content
state: "{{ trigger.event.data['subject'] }}"
attributes:
Message: "{{ trigger.event.data['text'] }}"
Server: "{{ trigger.event.data['server'] }}"
Username: "{{ trigger.event.data['username'] }}"
Search: "{{ trigger.event.data['search'] }}"
Folder: "{{ trigger.event.data['folder'] }}"
Sender: "{{ trigger.event.data['sender'] }}"
Date: "{{ trigger.event.data['date'] }}"
Subject: "{{ trigger.event.data['subject'] }}"
To: "{{ trigger.event.data['headers']['Delivered-To'][0] }}"
Subject: "{{ trigger.event.data['headers']['Subject'][0] }}"
Return_Path: "{{ trigger.event.data['headers']['Return-Path'][0] }}"
Received-first: "{{ trigger.event.data['headers']['Received'][0] }}"
Received-last: "{{ trigger.event.data['headers']['Received'][-1] }}"
```
{% endraw %}
## Example - keyword spotting
The following example shows the usage of the IMAP email content sensor to scan the subject of an email for text, in this case, an email from the APC SmartConnect service, which tells whether the UPS is running on battery or not.
{% raw %}
```yaml
template:
- trigger:
- platform: event
event_type: "imap_content"
id: "custom_event"
event_data:
sender: "no-reply@smartconnect.apc.com"
sensor:
- name: house_electricity
state: >-
{% if 'UPS On Battery' in trigger.event.data["subject"] %}
power_out
{% elif 'Power Restored' in trigger.event.data["subject"] %}
power_on
{% endif %}
```
{% endraw %}
## Example - extracting formatted text from an email using template sensors
This example shows how to extract numbers or other formatted data from an email to change the value of a template sensor to a value extracted from the email. In this example, we will be extracting energy use, cost, and billed amount from an email (from Georgia Power) and putting it into sensor values using a template sensor that runs against our IMAP email sensor already set up. A sample of the body of the email used is below:
```text
Yesterday's Energy Use: 76 kWh
Yesterday's estimated energy cost: $8
Monthly Energy use-to-date for 23 days: 1860 kWh
Monthly estimated energy cost-to-date for 23 days: $198
To view your account for details about your energy use, please click here.
```
Below is the template sensor which extracts the information from the body of the email in our IMAP email sensor (named sensor.energy_email) into 3 sensors for the energy use, daily cost, and billing cycle total.
{% raw %}
```yaml
template:
- trigger:
- platform: event
event_type: "imap_content"
id: "custom_event"
event_data:
sender: "no-reply@smartconnect.apc.com"
- sensor:
- name: "Previous Day Energy Use"
unit_of_measurement: "kWh"
state: >
{{ trigger.event.data["text"]
| regex_findall_index("\*Yesterday's Energy Use:\* ([0-9]+) kWh") }}
- name: "Previous Day Cost"
unit_of_measurement: "$"
state: >
{{ trigger.event.data["text"]
| regex_findall_index("\*Yesterday's estimated energy cost:\* \$([0-9.]+)") }}
- name: "Billing Cycle Total"
unit_of_measurement: "$"
state: >
{{ trigger.event.data["text"]
| regex_findall_index("\ days:\* \$([0-9.]+)") }}
```
{% endraw %}
By making small changes to the regular expressions defined above, a similar structure can parse other types of data out of the body text of other emails.

View File

@ -134,7 +134,8 @@ Insteon devices will include entities for setting the device On Level, Ramp Rate
Once loaded, the following services will be exposed with the `isy994.` prefix, to allow advanced control over the ISY and its connected devices: Once loaded, the following services will be exposed with the `isy994.` prefix, to allow advanced control over the ISY and its connected devices:
- Entity services for Home Assistant-connected entities: `send_node_command`, `send_raw_node_command`, and `set_ramp_rate`. - Entity services for all Home Assistant-connected entities: `send_node_command`, `send_raw_node_command`.
- ISY Z-Wave Node services: `get_zwave_parameter`, `set_zwave_parameter`, `set_zwave_lock_user_code`, `delete_zwave_lock_user_code`
- Generic ISY services: `send_program_command` - Generic ISY services: `send_program_command`
#### Service `isy994.send_node_command` #### Service `isy994.send_node_command`
@ -178,6 +179,26 @@ Update a Z-Wave Device parameter via the ISY. The parameter value will also be r
| `value` | no | The value to set for the parameter. May be an integer or byte string (e.g. "0xFFFF"). | | `value` | no | The value to set for the parameter. May be an integer or byte string (e.g. "0xFFFF"). |
| `size` | no | The size of the parameter, either 1, 2, or 4 bytes. | | `size` | no | The size of the parameter, either 1, 2, or 4 bytes. |
#### Service `isy994.set_zwave_lock_user_code`
Set a Z-Wave Lock User Code via the ISY.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------------------------------------------------------------------------------------------- |
| `entity_id` | no | Name of target entity for the command, e.g., `lock.front_door`. The entity must be an ISY Z-Wave Lock entity. |
| `user_num` | no | The user slot number to set on the end device. |
| `code` | no | The lock code to set for the user slot. |
#### Service `isy994.delete_zwave_lock_user_code`
Delete a Z-Wave Lock User Code via the ISY.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------------------------------------------------------------------------------------------- |
| `entity_id` | no | Name of target entity for the command, e.g., `lock.front_door`. The entity must be an ISY Z-Wave Lock entity. |
| `user_num` | no | The user slot number to delete the code on the end device. |
#### Service `isy994.rename_node` #### Service `isy994.rename_node`
Rename a node or group (scene) on the ISY994. Note: this will not automatically change the Home Assistant Entity Name or Entity ID to match. The entity name and ID will only be updated after calling `isy994.reload` or restarting Home Assistant, and ONLY IF you have not already customized the name within Home Assistant. Rename a node or group (scene) on the ISY994. Note: this will not automatically change the Home Assistant Entity Name or Entity ID to match. The entity name and ID will only be updated after calling `isy994.reload` or restarting Home Assistant, and ONLY IF you have not already customized the name within Home Assistant.

View File

@ -56,7 +56,7 @@ Most lights do not support all attributes. You can check the integration documen
| `brightness_pct`| yes | Alternatively, you can specify brightness in percent (a number between 0 and 100), where 0 means the light is off, 1 is the minimum brightness and 100 is the maximum brightness supported by the light. | `brightness_pct`| yes | Alternatively, you can specify brightness in percent (a number between 0 and 100), where 0 means the light is off, 1 is the minimum brightness and 100 is the maximum brightness supported by the light.
| `brightness_step` | yes | Change brightness by an amount. Should be between -255..255. | `brightness_step` | yes | Change brightness by an amount. Should be between -255..255.
| `brightness_step_pct` | yes | Change brightness by a percentage. Should be between -100..100. | `brightness_step_pct` | yes | Change brightness by a percentage. Should be between -100..100.
| `white` | yes | Set the light to white mode and change its brightness, where 0 means the light is off, 1 is the minimum brightness and 255 is the maximum brightness supported by the light. Note that `white` does not have a corresponding state attribute, the `color_mode` state attribute will to `white` and the `brightness` state attribute will be set to the requested brightness. | `white` | yes | Set the light to white mode by setting this to `True`. Note that `white` does not have a corresponding state attribute, so the `color_mode` state attribute will be set to `white`.
| `flash` | yes | Tell light to flash, can be either value `short` or `long`. | `flash` | yes | Tell light to flash, can be either value `short` or `long`.
| `effect`| yes | Applies an effect such as `colorloop` or `random`. | `effect`| yes | Applies an effect such as `colorloop` or `random`.

View File

@ -16,7 +16,8 @@ ha_platforms:
- switch - switch
ha_codeowners: ha_codeowners:
- '@joncar' - '@joncar'
ha_integration_type: integration ha_integration_type: hub
ha_quality_scale: platinum
--- ---
LiteJet is a centralized lighting system that predates most home automation technology. All lights and wall switches are wired to a central panel. This central panel has a serial port interface that allows a computer to control the system via LiteJet's third party protocol. Home Assistant integrates the LiteJet 3rd party protocol and allows you to get the status and control the connected lights. This integration also supports the Centralite Elegance and Centralite Jetstream. LiteJet is a centralized lighting system that predates most home automation technology. All lights and wall switches are wired to a central panel. This central panel has a serial port interface that allows a computer to control the system via LiteJet's third party protocol. Home Assistant integrates the LiteJet 3rd party protocol and allows you to get the status and control the connected lights. This integration also supports the Centralite Elegance and Centralite Jetstream.

View File

@ -45,12 +45,13 @@ You will need a Litter-Robot account as well as a Wi-Fi-enabled Litter-Robot or
| Last seen | `sensor` | Displays the time the unit was last seen / reported an update. | | Last seen | `sensor` | Displays the time the unit was last seen / reported an update. |
| Litter level | `sensor` | Displays the litter level, only for Litter-Robot 4. | | Litter level | `sensor` | Displays the litter level, only for Litter-Robot 4. |
| Pet weight | `sensor` | Displays the last measured pet weight, only for Litter-Robot 4. | | Pet weight | `sensor` | Displays the last measured pet weight, only for Litter-Robot 4. |
| Sleep mode start time | `sensor` | When sleep mode is enabled, displays the current or next sleep mode start time. | | Sleep Mode Start Time | `sensor` | When sleep mode is enabled, displays the current or next sleep mode start time. |
| Sleep mode end time | `sensor` | When sleep mode is enabled, displays the current or last sleep mode end time. | | Sleep Mode End Time | `sensor` | When sleep mode is enabled, displays the current or last sleep mode end time. |
| Status code | `sensor` | Displays the status code (Clean Cycle in Progress, Ready, Drawer Full, etc). | | Status Code | `sensor` | Displays the status code (Clean Cycle in Progress, Ready, Drawer Full, etc). |
| Waste drawer | `sensor` | Displays the current waste drawer level. | | Waste Drawer | `sensor` | Displays the current waste drawer level. |
| Clean cycle wait time minutes | `select` | View and select the clean cycle wait time. | | Clean Cycle Wait Time Minutes | `select` | View and select the clean cycle wait time. |
| Reset waste drawer | `button` | Button to reset the waste drawer level to 0%, only for Litter-Robot 3. | | Panel brightness | `select` | View and select the panel brightness, only for Litter-Robot 4. |
| Reset Waste Drawer | `button` | Button to reset the waste drawer level to 0%, only for Litter-Robot 3. |
| Firmware | `update` | View and update to the latest firmware, only for Litter-Robot 4. | | Firmware | `update` | View and update to the latest firmware, only for Litter-Robot 4. |
### Feeder-Robot ### Feeder-Robot

View File

@ -2,14 +2,19 @@
title: LIVISI Smart Home title: LIVISI Smart Home
description: Access and control your LIVISI Smart Home Controller (SHC) and its connected RWE/innogy devices. description: Access and control your LIVISI Smart Home Controller (SHC) and its connected RWE/innogy devices.
ha_category: ha_category:
- Binary Sensor
- Climate
- Switch - Switch
ha_iot_class: Local Polling ha_iot_class: Local Polling
ha_release: 2022.12 ha_release: 2022.12
ha_config_flow: true ha_config_flow: true
ha_codeowners: ha_codeowners:
- '@StefanIacobLivisi' - '@StefanIacobLivisi'
- '@planbnet'
ha_domain: livisi ha_domain: livisi
ha_platforms: ha_platforms:
- binary_sensor
- climate
- switch - switch
ha_integration_type: integration ha_integration_type: integration
--- ---
@ -18,7 +23,12 @@ The LIVISI Smart Home integration allows you to connect your LIVISI Smart Home C
The following devices are currently supported by this integration: The following devices are currently supported by this integration:
- RWE/innogy Smart Plug (PSS) - Indoor Smart Plug (PSS)
- Inwall Switch (ISSx)
- Outdoor Smart Plug (PSSO)
- Room Heating Control (VRCC) that includes support for physical heating devices such as Radiator Thermostat (RSTx), Room Thermostat (WRT) or Floor Heating Control (FSC8)
- Wall Switches (ISS, ISS2)
- Window-Door Sensor (WDS)
## Prequisites ## Prequisites

View File

@ -9,6 +9,7 @@ ha_config_flow: true
ha_domain: local_calendar ha_domain: local_calendar
ha_platforms: ha_platforms:
- calendar - calendar
- diagnostics
ha_codeowners: ha_codeowners:
- '@allenporter' - '@allenporter'
ha_integration_type: integration ha_integration_type: integration

View File

@ -1,92 +0,0 @@
---
title: Magicseaweed
description: How to integrate Magicseaweed within Home Assistant.
ha_category:
- Sensor
ha_release: 0.75
ha_iot_class: Cloud Polling
ha_domain: magicseaweed
ha_platforms:
- sensor
ha_integration_type: integration
---
<div class='note warning'>
This integration is pending removal from Home Assistant and will be no longer available as of Home Assistant 2023.2.
</div>
The `magicseaweed` platform uses the [Magicseaweed Forecast API](https://magicseaweed.com/docs/developers/59/) as a source for surf forecasting data for the surf spots of your choice.
## Setup
You need an API key which is free but requires [registration](https://magicseaweed.com/docs/developers/59/sign-up/9908/). Magicseaweed is limiting users of the API to 1 spot for the free plan.
## Configuration
To add Magicseaweed forecasts to your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
sensor:
- platform: magicseaweed
api_key: YOUR_API_KEY
spot_id: 1092
monitored_conditions:
- max_breaking_swell
```
{% configuration %}
api_key:
description: The API key to access the service.
required: true
type: string
name:
description: Spot nickname for the sensors.
required: false
default: MSW.
type: string
hours:
description: List of hours you would like to receive data for.
required: false
default: Defaults to current forecast.
type: list
keys:
3AM:
description: Display forecast for 3AM.
6AM:
description: Display forecast for 6AM.
9AM:
description: Display forecast for 9AM.
12PM:
description: Display forecast for 12PM.
3PM:
description: Display forecast for 3PM.
6PM:
description: Display forecast for 6PM.
9PM:
description: Display forecast for 9PM.
12AM:
description: Display forecast for 12AM.
spot_id:
description: ID of the surf spot. Details for getting spot id available at [Magicseaweed](https://magicseaweed.com/docs/developers/59/)
required: true
type: string
monitored_conditions:
description: Type of data to display.
required: true
type: list
keys:
swell_forecast:
description: List of forecast summaries as attributes with current summary as state.
min_breaking_swell:
description: The minimum wave height as the state with a detailed list of forecast attributes.
max_breaking_swell:
description: The maximum wave height as the state with a detailed list of forecast attributes.
units:
description: Specify the unit system. Either `uk`, `eu` or `us`.
required: false
default: Default to `uk` or `us` based on the temperature preference in Home Assistant.
type: string
{% endconfiguration %}
Details about the API are available in the [Magicseaweed documentation](https://magicseaweed.com/docs/developers/59/).

View File

@ -4,6 +4,7 @@ description: Instructions on how to integrate Matter with Home Assistant.
ha_category: ha_category:
- Binary Sensor - Binary Sensor
- Light - Light
- Lock
- Sensor - Sensor
- Switch - Switch
ha_release: '2022.12' ha_release: '2022.12'
@ -16,6 +17,7 @@ ha_platforms:
- binary_sensor - binary_sensor
- diagnostics - diagnostics
- light - light
- lock
- sensor - sensor
- switch - switch
ha_integration_type: integration ha_integration_type: integration

View File

@ -426,7 +426,9 @@ modbus:
state_fan_only: 3 state_fan_only: 3
state_dry: 4 state_dry: 4
state_off: 5 state_off: 5
write_registers: true
hvac_onoff_register: 11 hvac_onoff_register: 11
write_registers: true
``` ```
{% details "Previous configuration format" %} {% details "Previous configuration format" %}
@ -488,6 +490,11 @@ climates:
description: The address of the HVAC mode register. description: The address of the HVAC mode register.
required: true required: true
type: integer type: integer
write_registers:
description: if true use write_registers
required: false
type: boolean
default: false
values: values:
description: A mapping between the register values and HVAC modes description: A mapping between the register values and HVAC modes
required: true required: true
@ -529,6 +536,11 @@ climates:
value 1 is written. value 1 is written.
required: false required: false
type: integer type: integer
write_registers:
description: if true use write_registers for hvac_onoff.
required: false
type: boolean
default: false
unique_id: unique_id:
description: An ID that uniquely identifies this sensor. If two sensors have the same unique ID, Home Assistant will raise an exception. description: An ID that uniquely identifies this sensor. If two sensors have the same unique ID, Home Assistant will raise an exception.
required: false required: false

View File

@ -15,7 +15,6 @@ ha_platforms:
- cover - cover
- device_tracker - device_tracker
- light - light
- notify
- remote - remote
- sensor - sensor
- switch - switch
@ -841,93 +840,6 @@ void send_status_message()
} }
``` ```
## Notify
<div class='note warning'>
The Notify platform is deprecated and replaced with the [Text platform](#text).
</div>
Setting the `target` key in the service call will target the name of the MySensors device in Home Assistant. MySensors device names follow the notation: "[Child description]" or alternatively "[Sketch name] [Node id] [Child id]".
#### Notify automation example
```yaml
...
action:
service: notify.mysensors
data:
message: Welcome home!
target: "TextSensor 254 1"
```
The following sensor types are supported:
#### MySensors version 2.0 and higher
| S_TYPE | V_TYPE |
| ------ | ------ |
| S_INFO | V_TEXT |
#### Notify example sketch
```cpp
/*
* Documentation: https://www.mysensors.org
* Support Forum: https://forum.mysensors.org
*/
// Enable debug prints to serial monitor
#define MY_DEBUG
#define MY_RADIO_NRF24
#include <MySensors.h>
#include <SPI.h>
#define SN "TextSensor"
#define SV "1.0"
#define CHILD_ID 1
MyMessage textMsg(CHILD_ID, V_TEXT);
bool initialValueSent = false;
void setup(void) {
}
void presentation() {
sendSketchInfo(SN, SV);
present(CHILD_ID, S_INFO, "TextSensor1");
}
void loop() {
if (!initialValueSent) {
Serial.println("Sending initial value");
// Send initial values.
send(textMsg.set("-"));
Serial.println("Requesting initial value from controller");
request(CHILD_ID, V_TEXT);
wait(2000, C_SET, V_TEXT);
}
}
void receive(const MyMessage &message) {
if (message.type == V_TEXT) {
if (!initialValueSent) {
Serial.println("Receiving initial value from controller");
initialValueSent = true;
}
// Dummy print
Serial.print("Message: ");
Serial.print(message.sensor);
Serial.print(", Message: ");
Serial.println(message.getString());
// Send message to controller
send(textMsg.set(message.getString()));
}
}
```
## Remote ## Remote
The following type combinations are supported: The following type combinations are supported:

View File

@ -7,8 +7,9 @@ ha_category:
ha_iot_class: Cloud Polling ha_iot_class: Cloud Polling
ha_release: 0.108 ha_release: 0.108
ha_domain: nextcloud ha_domain: nextcloud
ha_config_flow: true
ha_codeowners: ha_codeowners:
- '@meichthys' - '@mib1185'
ha_platforms: ha_platforms:
- binary_sensor - binary_sensor
- sensor - sensor
@ -31,28 +32,4 @@ This integration has the following Nextcloud Server prerequisites:
- The Nextcloud 'Monitoring' app must be installed (__*Nextcloud*__ > __*Apps*__ > 🔍(Search Icon) > __*Monitoring*__ > __*Enable*__) - The Nextcloud 'Monitoring' app must be installed (__*Nextcloud*__ > __*Apps*__ > 🔍(Search Icon) > __*Monitoring*__ > __*Enable*__)
- (Recommended) A Nextcloud App password should be generated for use in Home Assistant (__*Nextcloud*__ > __*Settings*__ > __*Personal*__ > __*Security*__ > __*Devices & sessions*__ > __*Create new app password*__) - (Recommended) A Nextcloud App password should be generated for use in Home Assistant (__*Nextcloud*__ > __*Settings*__ > __*Personal*__ > __*Security*__ > __*Devices & sessions*__ > __*Create new app password*__)
To enable the Nextcloud integration, add the following lines to your `configuration.yaml`: {% include integrations/config_flow.md %}
```yaml
# Example configuration.yaml entry
nextcloud:
url: https://YOUR_NEXTCLOUD_URL
username: YOUR_USERNAME
password: YOUR_APP_PASSWORD
```
{% configuration %}
url:
description: The full URL to your Nextcloud instance.
required: true
type: string
username:
description: The username of a Nextcloud user that has access to the Nextcloud monitor API.
required: true
type: string
password:
description: The app password generated from the Nextcloud security settings page.
required: true
type: string
{% endconfiguration %}

View File

@ -24,9 +24,19 @@ The Nuki integration allows you to control [Nuki Smart Locks](https://nuki.io/en
## Prerequisites ## Prerequisites
To add a Nuki bridge to your installation, you need to enable developer mode on your bridge and define a port and an access token. This can be achieved using the [Android app](https://play.google.com/store/apps/details?id=io.nuki) or [iPhone app](https://apps.apple.com/app/nuki-smart-lock/id1044998081). Go to manage my devices, and select the bridge. Within the bridge configuration turn on the HTTP API and check the details in the screen. Please note that the API token should be 6-20 characters long, even though the app allows you to set a longer one. To add a Nuki bridge to your installation, you need to enable developer mode on your bridge and define a port and an access token. This can be achieved using the [Android app](https://play.google.com/store/apps/details?id=io.nuki) or [iPhone app](https://apps.apple.com/app/nuki-smart-lock/id1044998081). Go to manage my devices, and select the bridge. Within the bridge configuration turn on the HTTP API and check the details in the screen. Please note that the API token should be 6-20 characters long, even though the app allows you to set a longer one.
For faster updates, the callback function of the Nuki bridge can be used. This requires your Home Assistant to be reachable via HTTP by the Nuki bridge, as HTTPS is not supported by the Nuki bridge.
{% include integrations/config_flow.md %} {% include integrations/config_flow.md %}
{% configuration_basic %}
Host:
description: Hostname or IP address of your Nuki bridge, e.g., `192.168.1.25`.
Port:
description: Port of the Nuki bridge HTTP API, default is `8080`.
Token:
description: Token to authenticate against the Nuki bridge HTTP API.
{% endconfiguration_basic %}
## Services ## Services
### Service `nuki.lock_n_go` ### Service `nuki.lock_n_go`

View File

@ -34,6 +34,7 @@ The type of data a number represents impacts how it is displayed in the frontend
- **data_size**: Data size in bit, kbit, Mbit, Gbit, B, kB, MB, GB, TB, PB, EB, ZB, YB, KiB, MiB, GiB, TiB, PiB, EiB, ZiB, or YiB - **data_size**: Data size in bit, kbit, Mbit, Gbit, B, kB, MB, GB, TB, PB, EB, ZB, YB, KiB, MiB, GiB, TiB, PiB, EiB, ZiB, or YiB
- **distance**: Generic distance in km, m, cm, mm, mi, yd, or in - **distance**: Generic distance in km, m, cm, mm, mi, yd, or in
- **energy**: Energy in Wh, kWh, MWh, MJ, or GJ - **energy**: Energy in Wh, kWh, MWh, MJ, or GJ
- **energy_storage**: Stored energy in Wh, kWh, MWh, MJ, or GJ
- **frequency**: Frequency in Hz, kHz, MHz, or GHz - **frequency**: Frequency in Hz, kHz, MHz, or GHz
- **gas**: Gasvolume in m³, ft³, or CCF - **gas**: Gasvolume in m³, ft³, or CCF
- **humidity**: Percentage of humidity in the air - **humidity**: Percentage of humidity in the air
@ -62,6 +63,7 @@ The type of data a number represents impacts how it is displayed in the frontend
- **volatile_organic_compounds**: Concentration of volatile organic compounds in µg/m³ - **volatile_organic_compounds**: Concentration of volatile organic compounds in µg/m³
- **voltage**: Voltage in V, mV - **voltage**: Voltage in V, mV
- **volume**: Generic volume in L, mL, gal, fl. oz., m³, ft³, or CCF - **volume**: Generic volume in L, mL, gal, fl. oz., m³, ft³, or CCF
- **volume_storage**: Generic stored volume in L, mL, gal, fl. oz., m³, ft³, or CCF
- **water**: Water consumption in L, gal, m³, ft³, or CCF - **water**: Water consumption in L, gal, m³, ft³, or CCF
- **weight**: Generic mass in kg, g, mg, µg, oz, lb, or st - **weight**: Generic mass in kg, g, mg, µg, oz, lb, or st
- **wind_speed**: Wind speed in ft/s, km/h, kn, m/s, or mph - **wind_speed**: Wind speed in ft/s, km/h, kn, m/s, or mph

View File

@ -4,42 +4,30 @@ description: Instructions on how to integrate your Obihai device into Home Assis
ha_iot_class: Local Polling ha_iot_class: Local Polling
ha_category: ha_category:
- Sensor - Sensor
ha_config_flow: true
ha_release: 0.99 ha_release: 0.99
ha_codeowners: ha_codeowners:
- '@dshokouhi' - '@dshokouhi'
- '@ejpenney'
ha_domain: obihai ha_domain: obihai
ha_platforms: ha_platforms:
- button
- sensor - sensor
ha_integration_type: integration ha_integration_type: integration
--- ---
The `obihai` integration allows you to view the call status for your [Obihai devices](https://www.obitalk.com/info/products#home_section). The `obihai` integration allows you to view the call status for your [Obihai devices](https://www.obitalk.com/info/products#home_section).
To enable `obihai` in your installation, add the following to your `configuration.yaml` file: {% include integrations/config_flow.md %}
```yaml {% configuration_basic %}
# Example configuration.yaml entry
sensor:
- platform: obihai
host: 192.168.1.x
```
{% configuration %}
host: host:
description: IP Address of Obihai device description: IP Address of Obihai device
required: true
type: string
username: username:
description: Username for the Obihai device. description: Username for the Obihai device.
required: false
type: string
default: admin
password: password:
description: Password for the Obihai device. description: Password for the Obihai device.
required: false {% endconfiguration_basic %}
type: string
default: admin
{% endconfiguration %}
The following is a list of expected sensors and their expected states when using the `user` account: The following is a list of expected sensors and their expected states when using the `user` account:
@ -53,3 +41,5 @@ In addition to the above list the `admin` account can expect to see the followin
- Obihai service status (`Normal`, `Down` or other states from Obihais network) - Obihai service status (`Normal`, `Down` or other states from Obihais network)
- Sensors for each phone port in use (`On Hook`, `Off Hook` and `Ringing`) - Sensors for each phone port in use (`On Hook`, `Off Hook` and `Ringing`)
- Sensors for last caller name and number (this is also the current incoming call, will also show `--` if no data provided) - Sensors for last caller name and number (this is also the current incoming call, will also show `--` if no data provided)
You will also see a reboot button for each configured Obihai, this button will restart the Obihai when pressed.

View File

@ -16,7 +16,7 @@ The Profiler integration provides a profile which is a set of statistics that id
{% include integrations/config_flow.md %} {% include integrations/config_flow.md %}
### Service `profiler.start` ### Service {% my developer_call_service service="profiler.start" %}
Start the profiler for the specified number of seconds. Start the profiler for the specified number of seconds.
@ -51,7 +51,7 @@ dot callgrind.dot -Tpng -o callgrind.png
gprof2dot -f pstats profile.1234567890123456.cprof | dot -Tsvg -o profile.svg gprof2dot -f pstats profile.1234567890123456.cprof | dot -Tsvg -o profile.svg
``` ```
### Service `profiler.memory` ### Service {% my developer_call_service service="profiler.memory" %}
<div class='note warning'> <div class='note warning'>
This service is unavailable when using Python 3.11 as the underlying guppy3 library does not yet support Python 3.11. This service is unavailable when using Python 3.11 as the underlying guppy3 library does not yet support Python 3.11.
@ -73,7 +73,7 @@ from guppy import hpy
hpy().pb() hpy().pb()
``` ```
### Service `profiler.start_log_objects` ### Service {% my developer_call_service service="profiler.start_log_objects" %}
Start logging the growth of objects in memory. Start logging the growth of objects in memory.
@ -81,13 +81,30 @@ Start logging the growth of objects in memory.
| ---------------------- | -------- | ----------- | | ---------------------- | -------- | ----------- |
| `scan_interval` | yes | The the frequency between logging objects. Defaults to 30.0 | `scan_interval` | yes | The the frequency between logging objects. Defaults to 30.0
Periodically log the growth of new objects in memory. This service's primary use case is finding memory leaks. Periodically log the growth of new objects in memory. This service's primary use case is finding memory leaks. This service can be run for long periods to find slow leaks. For finding fast leaks, `profiler.start_log_object_sources` is preferred; however, it is much more CPU intensive.
### Service `profiler.stop_log_objects` ### Service {% my developer_call_service service="profiler.stop_log_objects" %}
Stop logging the growth of objects in memory. Stop logging the growth of objects in memory.
### Service `profiler.dump_log_objects` ### Service {% my developer_call_service service="profiler.start_log_object_sources" %}
Start logging the growth of objects in memory and attempt to find the source of the new objects.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `scan_interval` | yes | The the frequency between logging objects. Defaults to 30.0
| `max_objects` | yes | The number of new objects to examine for source information. Defaults to 5
Periodically log the growth of new objects in memory. This service's primary use case is finding memory leaks.
This service is similar to `start_log_objects` except that it is much more CPU intensive since it will attempt to locate the source of each new object up to `max_objects` each time it logs.
### Service {% my developer_call_service service="profiler.stop_log_object_sources" %}
Stop logging the growth of objects with sources in memory.
### Service {% my developer_call_service service="profiler.dump_log_objects" %}
| Service data attribute | Optional | Description | | Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- | | ---------------------- | -------- | ----------- |
@ -95,7 +112,20 @@ Stop logging the growth of objects in memory.
When `start_log_objects` highlights the growth of a collection of objects in memory, this service can help investigate. The `repr` of each object that matches `type` will be logged. When `start_log_objects` highlights the growth of a collection of objects in memory, this service can help investigate. The `repr` of each object that matches `type` will be logged.
### Service `profiler.log_thread_frames` This service is useful for investigating the state of objects in memory. For example, if your system has templates that are rendering too frequently, the below example service calls shows how to find which templates are the source of the problem:
```yaml
service: profiler.dump_log_objects
data:
type: RenderInfo
```
```yaml
service: profiler.dump_log_objects
data:
type: Template
```
### Service {% my developer_call_service service="profiler.log_thread_frames" %}
To help discover run away threads, why the executor is overloaded, or other threading problems, the current frames for each running thread will be logged when this service is called. To help discover run away threads, why the executor is overloaded, or other threading problems, the current frames for each running thread will be logged when this service is called.
@ -130,10 +160,14 @@ An example is below:
sock.connect(address) sock.connect(address)
``` ```
### Service `profiler.log_event_loop_scheduled` ### Service {% my developer_call_service service="profiler.log_event_loop_scheduled" %}
Log what is scheduled in the event loop. This can be helpful in tracking down integrations that do not stop listeners when Home Assistant stops or do not have sufficient locking to avoid scheduling updates before the previous update is finished. Log what is scheduled in the event loop. This can be helpful in tracking down integrations that do not stop listeners when Home Assistant stops or do not have sufficient locking to avoid scheduling updates before the previous update is finished.
Each upcoming scheduled item is logged similar to the below example: Each upcoming scheduled item is logged similar to the below example:
`[homeassistant.components.profiler] Scheduled: <TimerHandle when=1528307.1818668307 async_track_point_in_utc_time.<locals>.run_action(<Job HassJobType.Coroutinefunction <bound method DataUpdateCoordinator._handle_refresh_interval of <homeassistant.components.screenlogic.ScreenlogicDataUpdateCoordinator object at 0x7f985d896d30>>>) at /usr/src/homeassistant/homeassistant/helpers/event.py:1175>` `[homeassistant.components.profiler] Scheduled: <TimerHandle when=1528307.1818668307 async_track_point_in_utc_time.<locals>.run_action(<Job HassJobType.Coroutinefunction <bound method DataUpdateCoordinator._handle_refresh_interval of <homeassistant.components.screenlogic.ScreenlogicDataUpdateCoordinator object at 0x7f985d896d30>>>) at /usr/src/homeassistant/homeassistant/helpers/event.py:1175>`
### Service {% my developer_call_service service="profiler.lru_stats" %}
Logs statistics from [lru_cache](https://docs.python.org/3/library/functools.html#functools.lru_cache) and [lru-dict](https://pypi.org/project/lru-dict/) to help tune Home Assistant and locate memory leaks.

View File

@ -3,6 +3,7 @@ title: Prosegur Alarm
description: Instructions on how to integrate Prosegur Smart Alarms into Home Assistant. description: Instructions on how to integrate Prosegur Smart Alarms into Home Assistant.
ha_category: ha_category:
- Alarm - Alarm
- Camera
ha_release: 2021.8 ha_release: 2021.8
ha_codeowners: ha_codeowners:
- '@dgomes' - '@dgomes'
@ -11,9 +12,23 @@ ha_domain: prosegur
ha_config_flow: true ha_config_flow: true
ha_platforms: ha_platforms:
- alarm_control_panel - alarm_control_panel
- camera
- diagnostics
ha_integration_type: integration ha_integration_type: integration
--- ---
Integrate [Prosegur](https://www.prosegur.com/) Smart Alarms into Home Assistant. Prosegur is company providing intruder protection and detection systems to ensure the security of your home in Iberia, South America and RSA. They have a line of connected alarm systems that can be controlled remotely through a cloud service. This integration taps in to the cloud service API providing functionalities such as ARM_HOME, ARM_AWAY and DISARM. Integrate [Prosegur](https://www.prosegur.com/) Smart Alarms into Home Assistant.
Prosegur is a company providing intruder protection and detection systems to ensure the security of your home in Iberia, South America and RSA.
Prosegur has a line of connected alarm systems that can be controlled remotely through a cloud service. This integration taps into the cloud service API, providing functionalities similar to their mobile app.
There is currently support for the following device types within Home Assistant:
- Alarm
- Camera
{% include integrations/config_flow.md %} {% include integrations/config_flow.md %}
### Service `camera.request_image`
This service will have Prosegur cloud service "Request image" from your local camera. This service should only be called seldom, as Prosegur tends to throttle this service for long periods of time, resulting in errors for both this integration and your Prosegur mobile application.

View File

@ -97,7 +97,10 @@ action:
priority: "2" priority: "2"
retry: "60" retry: "60"
expire: "600" expire: "600"
confirm: "10"
answer: "1" answer: "1"
answeroptions: "yes|no|maybe"
answerforce: "1"
picture1: { picture1: {
path: "C:\\Users\\Kevin\\AppData\\Roaming\\.homeassistant\\image-760-testimage.jpg" path: "C:\\Users\\Kevin\\AppData\\Roaming\\.homeassistant\\image-760-testimage.jpg"
``` ```

View File

@ -10,7 +10,7 @@ ha_codeowners:
- '@geoffreylagaisse' - '@geoffreylagaisse'
ha_platforms: ha_platforms:
- sensor - sensor
ha_integration_type: integration ha_integration_type: service
--- ---
The `qbittorrent` platform allows you to monitor your downloads with [qBittorrent](https://www.qbittorrent.org/) from within Home Assistant and setup automations based on the information. The `qbittorrent` platform allows you to monitor your downloads with [qBittorrent](https://www.qbittorrent.org/) from within Home Assistant and setup automations based on the information.

View File

@ -0,0 +1,32 @@
---
title: Quadra-Fire
description: Connect and control your Quadra-Fire devices using the IntelliFire integration
ha_category:
- Binary Sensor
- Climate
- Fan
- Light
- Number
- Sensor
- Switch
ha_domain: quadrafire
ha_integration_type: virtual
ha_supporting_domain: intellifire
ha_supporting_integration: IntelliFire
ha_release: 2022.2
ha_codeowners:
- '@jeeftor'
ha_config_flow: true
ha_platforms:
- binary_sensor
- climate
- fan
- light
- number
- sensor
- switch
ha_iot_class: Local Polling
ha_dhcp: true
---
{% include integrations/supported_brand.md %}

View File

@ -216,9 +216,28 @@ Call the service `recorder.purge_entities` to start a task that purges events an
| `entity_id` | yes<sup>*</sup> | A list of entity_ids that should be purged from the recorder database. | | `entity_id` | yes<sup>*</sup> | A list of entity_ids that should be purged from the recorder database. |
| `domains` | yes | A list of domains that should be purged from the recorder database. | | `domains` | yes | A list of domains that should be purged from the recorder database. |
| `entity_globs` | yes | A list of regular expressions that identify entities to purge from the recorder database. | | `entity_globs` | yes | A list of regular expressions that identify entities to purge from the recorder database. |
| `keep_days` | yes | Number of history days to keep in the database of matching rows. The default of 0 days will remove all matching rows. |
Note: The `entity_id` is only optional when used in `automations.yaml` or `scripts.yaml`. When using the UI to call this service then it is mandatory to specify at least one `entity_id` using the Target Picker or via YAML mode. Note: The `entity_id` is only optional when used in `automations.yaml` or `scripts.yaml`. When using the UI to call this service then it is mandatory to specify at least one `entity_id` using the Target Picker or via YAML mode.
#### Example automation to remove data rows for specific entities
The below automation will remove history for `sensor.power_sensor_0` older than 5 days at `04:15:00` every day.
```yaml
alias: "Purge noisy power sensors"
trigger:
- platform: time
at: "04:15:00"
action:
- service: recorder.purge_entities
data:
keep_days: 5
target:
entity_id: sensor.power_sensor_0
mode: single
```
### Service `disable` ### Service `disable`
Call the service `recorder.disable` to stop saving events and states to the database. Call the service `recorder.disable` to stop saving events and states to the database.

View File

@ -30,6 +30,7 @@ This integration provides the following platforms:
- Binary sensors - such as plug and charge status. - Binary sensors - such as plug and charge status.
- Device tracker - to track location of your car. - Device tracker - to track location of your car.
- Buttons - to start air conditioning or start/stop the charge. Please note that although available these actions do not work on all vehicles.
- Selectors - to change the charge mode. - Selectors - to change the charge mode.
- Sensors - such as battery level, outside temperature, odometer, estimated range, and charging rate. - Sensors - such as battery level, outside temperature, odometer, estimated range, and charging rate.

View File

@ -12,8 +12,13 @@ ha_codeowners:
ha_config_flow: true ha_config_flow: true
ha_platforms: ha_platforms:
- binary_sensor - binary_sensor
- button
- camera - camera
- light
- number - number
- select
- siren
- switch
- update - update
ha_integration_type: integration ha_integration_type: integration
ha_dhcp: true ha_dhcp: true
@ -39,7 +44,7 @@ The Images stream provides a sequence of image snapshots giving very low latency
## Binary sensors ## Binary sensors
Depending on the supported features of the camera binary sensors are added for: Depending on the supported features of the camera, binary sensors are added for:
- Motion detection - Motion detection
- Doorbell presses - Doorbell presses
@ -54,10 +59,99 @@ For list of Reolink products that support ONVIF see the [Reolink Support Site](h
## Number entities ## Number entities
Depending on the supported features of the camera number entities are added for: Depending on the supported features of the camera, number entities are added for:
- Optical zoom control - Optical zoom control
- Focus control - Focus control
- Floodlight turn on brightness
- Volume
- Guard return time
- Motion sensitivity
- AI face sensitivity
- AI people sensitivity
- AI vehicle sensitivity
- AI pet sensitivity
- Auto quick reply time
- Auto track limit left
- Auto track limit right
- Auto track disappear time
- Auto track stop time
"Floodlight turn on brightness" controls the brightness of the floodlight when it is turned on internally by the camera (see "Floodlight mode" select entity) or when using the "Floodlight" light entity.
When the camera is not moved and no person/pet/vehicle is detected for the "Guard return time" in seconds, and the "Guard return" switch is ON, the camera will move back to the guard position.
When a Reolink doorbell is pressed the quick reply message from the "Auto quick reply message" select entity will be played after "Auto quick reply time" seconds, unless the "Auto quick reply message" is set to off.
If the "Auto tracking" switch entity is enabled, and a object disappears from view OR stops moving for the "Auto track disappear time"/"Auto track stop time", the camera goes back to its original position.
## Button entities
Depending on the supported features of the camera, button entities are added for:
- PTZ stop
- PTZ left
- PTZ right
- PTZ up
- PTZ down
- PTZ calibrate
- Guard go to
- Guard set current position
PTZ left, right, up and down will continually move the camera in the respective position until the PTZ stop is called or the hardware limit is reached.
"Guard set current position" will set the current position as the new guard position.
## Select entities
Depending on the supported features of the camera, select entities are added for:
- Floodlight mode (Off, Auto, Schedule)
- Day night mode (Auto, Color, Black&White)
- PTZ preset
- Auto quick reply message
- Auto track method (Digital, Digital first, Pan/Tilt first)
PTZ preset positions can be set in the Reolink app/windows/web client, the names of the presets will be loaded into Home Assistant at the start of the integration. When adding new preset positions, please restart the Reolink integration.
Auto quick reply messages can be recorded in the Reolink app where a name is also supplied. New or updated quick reply messages will be loaded into Home Assistant at the start of the integration. When adding new quick reply messages, please restart the Reolink integration.
## Siren entities
If the camera supports a siren, a siren entity will be created.
When using the siren turn-on service, the siren will continue to sound until the siren turn-off service is called.
In some camera models, there is a delay of up to 5 seconds between the turn-off command and the sound stopping. The siren turn-on service supports setting a volume and a duration (no turn-off service call is needed in that case).
## Switch entities
Depending on the supported features of the camera, switch entities are added for:
- Record audio
- Siren on event
- Auto tracking
- Auto focus
- Guard return
Depending on the supported features of the NVR/host, global switch entities are added for:
- Record
- Push notifications
- Buzzer on event
- Email on event
- FTP upload
## Light entities
Depending on the supported features of the camera, light entities are added for:
- Floodlight
- Infra red lights in night mode
- Status LED
When the floodlight entity is ON always ON, when OFF controlled based on the internal camera floodlight mode (Off, Auto, Schedule), see the "Floodlight mode" select entity.
When IR light entity is OFF always OFF, when ON IR LEDs will be on when the camera is in night vision mode, see the "Day night mode" select entity.
## Update entity ## Update entity

View File

@ -162,6 +162,11 @@ scan_interval:
required: false required: false
type: integer type: integer
default: 30 default: 30
encoding:
description: The character encoding to use if none provided in the header of the shared data.
required: false
type: string
default: UTF-8
sensor: sensor:
description: A list of sensors to create from the shared data. All configuration settings that are supported by [RESTful Sensor](/integrations/sensor.rest#configuration-variables) not listed above can be used here. description: A list of sensors to create from the shared data. All configuration settings that are supported by [RESTful Sensor](/integrations/sensor.rest#configuration-variables) not listed above can be used here.
required: false required: false

View File

@ -10,6 +10,7 @@ ha_codeowners:
- '@bachya' - '@bachya'
ha_config_flow: true ha_config_flow: true
ha_platforms: ha_platforms:
- calendar
- diagnostics - diagnostics
- sensor - sensor
- switch - switch

View File

@ -48,31 +48,34 @@ name:
description: The name you would like to give to the Samsung Smart TV. description: The name you would like to give to the Samsung Smart TV.
required: false required: false
type: string type: string
turn_on_action:
description: "Defines an [action](/docs/automation/action/) to turn the TV on."
required: false
type: list
{% endconfiguration %} {% endconfiguration %}
After saving the YAML configuration, the TV must be turned on _before_ launching Home Assistant in order for the TV to be registered the first time. After saving the YAML configuration, the TV must be turned on _before_ launching Home Assistant in order for the TV to be registered the first time.
#### Wake up TV / TV does not turn on ### Turn on action
If the integration knows the MAC address of the TV from discovery, it will attempt to wake it using wake on LAN when calling turn on. Wake on LAN must be enabled on the TV for this to work. If the TV is connected to a smart strip or requires a more complex turn-on process, a `turn_on_action` can be provided that will take precedence over the built-in wake on LAN functionality. If the integration knows the MAC address of the TV from discovery, it will attempt to wake it using wake on LAN when calling turn on. Wake on LAN must be enabled on the TV for this to work. If the TV is connected to a smart strip or requires a more complex turn-on process, a `turn_on` action can be provided that will take precedence over the built-in wake on LAN functionality.
To wake up the TV when switched off you can use the [wake-on-lan](/integrations/wake_on_lan/) integration and call a service. You can create an automation from the user interface, from the device create a new automation and select the **Device is requested to turn on** automation.
Automations can also be created using an automation action:
```yaml ```yaml
wake_on_lan: # Example configuration.yaml entry
wake_on_lan: # enables `wake_on_lan` integration
samsungtv: automation:
- host: IP_ADDRESS - alias: "Turn On Living Room TV with WakeOnLan"
turn_on_action: trigger:
- platform: samsungtv.turn_on
entity_id: media_player.samsung_smart_tv
action:
- service: wake_on_lan.send_magic_packet - service: wake_on_lan.send_magic_packet
data: data:
mac: MAC_ADDRESS mac: aa:bb:cc:dd:ee:ff
``` ```
Any other [actions](/docs/automation/action/) to power on the device can be configured.
### Usage ### Usage
#### Changing channels #### Changing channels

View File

@ -92,6 +92,11 @@ scan_interval:
required: false required: false
type: integer type: integer
default: 600 default: 600
encoding:
description: The character encoding to use if none provided in the header of the shared data.
required: false
type: string
default: UTF-8
sensor: sensor:
description: A list of sensors to create from the shared data. All configuration settings that are supported by [RESTful Sensor](/integrations/sensor.rest#configuration-variables) not listed above can be used here. description: A list of sensors to create from the shared data. All configuration settings that are supported by [RESTful Sensor](/integrations/sensor.rest#configuration-variables) not listed above can be used here.
required: true required: true

View File

@ -33,6 +33,7 @@ The type of data a sensor returns impacts how it is displayed in the frontend. T
- **distance**: Generic distance in km, m, cm, mm, mi, yd, or in - **distance**: Generic distance in km, m, cm, mm, mi, yd, or in
- **duration**: Duration in d, h, min, or s - **duration**: Duration in d, h, min, or s
- **energy**: Energy in Wh, kWh, MWh, MJ, or GJ - **energy**: Energy in Wh, kWh, MWh, MJ, or GJ
- **energy_storage**: Stored energy in Wh, kWh, MWh, MJ, or GJ
- **enum**: Has a limited set of (non-numeric) states - **enum**: Has a limited set of (non-numeric) states
- **frequency**: Frequency in Hz, kHz, MHz, or GHz - **frequency**: Frequency in Hz, kHz, MHz, or GHz
- **gas**: Gasvolume in m³, ft³ or CCF - **gas**: Gasvolume in m³, ft³ or CCF
@ -63,6 +64,7 @@ The type of data a sensor returns impacts how it is displayed in the frontend. T
- **volatile_organic_compounds**: Concentration of volatile organic compounds in µg/m³ - **volatile_organic_compounds**: Concentration of volatile organic compounds in µg/m³
- **voltage**: Voltage in V, mV - **voltage**: Voltage in V, mV
- **volume**: Generic volume in L, mL, gal, fl. oz., m³, ft³, or CCF - **volume**: Generic volume in L, mL, gal, fl. oz., m³, ft³, or CCF
- **volume_storage**: Generic stored volume in L, mL, gal, fl. oz., m³, ft³, or CCF
- **water**: Water consumption in L, gal, m³, ft³, or CCF - **water**: Water consumption in L, gal, m³, ft³, or CCF
- **weight**: Generic mass in kg, g, mg, µg, oz, lb, or st - **weight**: Generic mass in kg, g, mg, µg, oz, lb, or st
- **wind_speed**: Wind speed in ft/s, km/h, kn, m/s, or mph - **wind_speed**: Wind speed in ft/s, km/h, kn, m/s, or mph

View File

@ -9,6 +9,8 @@ ha_domain: snapcast
ha_platforms: ha_platforms:
- media_player - media_player
ha_integration_type: integration ha_integration_type: integration
ha_codeowners:
- '@luar123'
--- ---
The `snapcast` platform allows you to control [Snapcast](https://github.com/badaix/snapcast) from Home Assistant. The `snapcast` platform allows you to control [Snapcast](https://github.com/badaix/snapcast) from Home Assistant.

View File

@ -25,4 +25,3 @@ The SolarEdge Monitoring API has a daily rate limit of 300 requests. In order to
</div> </div>
{% include integrations/config_flow.md %} {% include integrations/config_flow.md %}

View File

@ -35,11 +35,26 @@ To enable it, add the following lines to your `configuration.yaml` file (example
sql: sql:
- name: Sun state - name: Sun state
query: > query: >
SELECT * SELECT
FROM states states.state
WHERE entity_id = 'sun.sun' FROM
ORDER BY state_id states
DESC LIMIT 1; LEFT JOIN state_attributes ON (
states.attributes_id = state_attributes.attributes_id
)
WHERE
metadata_id = (
SELECT
metadata_id
FROM
states_meta
where
entity_id = 'sun.sun'
)
ORDER BY
state_id DESC
LIMIT
1;
column: "state" column: "state"
``` ```
{% endraw %} {% endraw %}
@ -79,13 +94,21 @@ sql:
description: Provide a unique id for this sensor. description: Provide a unique id for this sensor.
required: false required: false
type: string type: string
device_class:
description: "Provide [device class](/integrations/sensor#device-class) for this sensor."
required: false
type: string
state_class:
description: "Provide [state class](https://developers.home-assistant.io/docs/core/entity/sensor/#available-state-classes) for this sensor."
required: false
type: string
{% endconfiguration %} {% endconfiguration %}
## Information ## Information
See [supported engines](/integrations/recorder/#custom-database-engines) for which you can connect with this integration. See [supported engines](/integrations/recorder/#custom-database-engines) for which you can connect with this integration.
The SQL integration will connect to the default SQLite if "Database URL" has not been specified. If you use a different database recorder (eg MariaDB or others), you will have to specify the "Database URL" manually during integration setup. The SQL integration will connect to the Home Assistant Recorder database if "Database URL" has not been specified.
There is no explicit configuration required for attributes. The integration will set all additional columns returned by the query as attributes. There is no explicit configuration required for attributes. The integration will set all additional columns returned by the query as attributes.
@ -109,7 +132,23 @@ sensor:
The query will look like this: The query will look like this:
```sql ```sql
SELECT * FROM states WHERE entity_id = 'sensor.temperature_in' ORDER BY state_id DESC LIMIT 1; SELECT
states.state
FROM
states
WHERE
metadata_id = (
SELECT
metadata_id
FROM
states_meta
WHERE
entity_id = 'sensor.temperature_in'
)
ORDER BY
state_id DESC
LIMIT
1;
``` ```
Use `state` as column for value. Use `state` as column for value.
@ -118,7 +157,31 @@ Use `state` as column for value.
Based on previous example with temperature, the query to get the former state is : Based on previous example with temperature, the query to get the former state is :
```sql ```sql
SELECT * FROM (SELECT * FROM states WHERE entity_id = 'sensor.temperature_in' ORDER BY state_id DESC LIMIT 2) two_entity ORDER BY state_id ASC LIMIT 1; SELECT
states.state
FROM
states
WHERE
state_id = (
SELECT
states.old_state_id
FROM
states
WHERE
metadata_id = (
SELECT
metadata_id
FROM
states_meta
WHERE
entity_id = 'sensor.temperature_in'
)
AND old_state_id IS NOT NULL
ORDER BY
last_updated_ts DESC
LIMIT
1
);
``` ```
Use `state` as column for value. Use `state` as column for value.

View File

@ -16,6 +16,7 @@ ha_domain: starlink
ha_platforms: ha_platforms:
- binary_sensor - binary_sensor
- button - button
- diagnostics
- sensor - sensor
- switch - switch
ha_integration_type: integration ha_integration_type: integration

View File

@ -11,6 +11,8 @@ ha_iot_class: Calculated
ha_domain: sun ha_domain: sun
ha_config_flow: true ha_config_flow: true
ha_integration_type: integration ha_integration_type: integration
ha_platforms:
- sensor
--- ---
The sun integration will use the location as The sun integration will use the location as
@ -73,14 +75,18 @@ which event (sunset or sunrise) and the offset.
| `above_horizon` | When the sun is above the horizon. | `above_horizon` | When the sun is above the horizon.
| `below_horizon` | When the sun is below the horizon. | `below_horizon` | When the sun is below the horizon.
| State Attributes | Description | ## Sensors
The sensors are also available as attributes on the `sun.sun` entity for backwards compatibility reasons.
| Sensors | Description |
| --------- | ----------- | | --------- | ----------- |
| `next_rising` | Date and time of the next sun rising (in UTC). | Next rising | Date and time of the next sun rising (in UTC).
| `next_setting` | Date and time of the next sun setting (in UTC). | Next setting | Date and time of the next sun setting (in UTC).
| `next_dawn` | Date and time of the next dawn (in UTC). | Next dawn | Date and time of the next dawn (in UTC).
| `next_dusk` | Date and time of the next dusk (in UTC). | Next dusk | Date and time of the next dusk (in UTC).
| `next_noon` | Date and time of the next solar noon (in UTC). | Next noon | Date and time of the next solar noon (in UTC).
| `next_midnight` | Date and time of the next solar midnight (in UTC). | Next midnight | Date and time of the next solar midnight (in UTC).
| `elevation` | Solar elevation. This is the angle between the sun and the horizon. Negative values mean the sun is below the horizon. | Elevation | Solar elevation. This is the angle between the sun and the horizon. Negative values mean the sun is below the horizon.
| `azimuth` | Solar azimuth. The angle is shown clockwise from north. | Azimuth | Solar azimuth. The angle is shown clockwise from north.
| `rising` | True if the Sun is currently rising, after solar midnight and before solar noon. | `rising` | True if the Sun is currently rising, after solar midnight and before solar noon.

View File

@ -8,8 +8,6 @@ ha_category:
ha_iot_class: Local Polling ha_iot_class: Local Polling
ha_release: 0.34 ha_release: 0.34
ha_quality_scale: internal ha_quality_scale: internal
ha_codeowners:
- '@fabaff'
ha_domain: threshold ha_domain: threshold
ha_config_flow: true ha_config_flow: true
ha_platforms: ha_platforms:

View File

@ -3,6 +3,7 @@ title: TP-Link Omada
description: Instructions on integrating TP-Link Omada SDN networking devices to Home Assistant. description: Instructions on integrating TP-Link Omada SDN networking devices to Home Assistant.
ha_category: ha_category:
- Hub - Hub
- Update
ha_release: 2023.3 ha_release: 2023.3
ha_iot_class: Local Polling ha_iot_class: Local Polling
ha_config_flow: true ha_config_flow: true
@ -11,6 +12,7 @@ ha_codeowners:
ha_domain: tplink_omada ha_domain: tplink_omada
ha_platforms: ha_platforms:
- switch - switch
- update
ha_integration_type: hub ha_integration_type: hub
--- ---
@ -25,6 +27,7 @@ The integration provides basic configuration and status of Omada devices control
- Username/Password: A user account with permissions to view & configure the site is required. - Username/Password: A user account with permissions to view & configure the site is required.
### Multiple Sites ### Multiple Sites
If you have multiple sites managed by your controller, you will be prompted to choose which site to manage. If you have multiple sites managed by your controller, you will be prompted to choose which site to manage.
## Supported Controllers ## Supported Controllers
@ -42,14 +45,15 @@ Controller versions 5.0.0 and later are supported.
### Network Switches ### Network Switches
- Support for enabling/disabling Power over Ethernet on a per-port basis. - Support for enabling/disabling Power over Ethernet on a per-port basis.
- Firmware Update entities.
### Access Points ### Access Points
- Not currently supported. - Firmware Update entities.
### Internet Gateways ### Internet Gateways
- Not currently supported. - Firmware Update entities.
## Device Trackers ## Device Trackers

View File

@ -57,6 +57,7 @@ media_player:
attributes: attributes:
is_volume_muted: ENTITY_ID|ATTRIBUTE is_volume_muted: ENTITY_ID|ATTRIBUTE
state: ENTITY_ID|ATTRIBUTE state: ENTITY_ID|ATTRIBUTE
browse_media_entity: media_player.CHILD_2_ID
device_class: tv device_class: tv
unique_id: a_unique_string unique_id: a_unique_string
``` ```
@ -82,6 +83,10 @@ attributes:
description: "Attributes that can be overridden. Most, if not all, media player attributes can be overridden. Example entries are `is_volume_muted`, `state`, `source`, `source_list` and `volume_level`. The values should be an entity ID and state attribute separated by a pipe character (|). If the entity ID's state should be used, then only the entity id needs to be provided." description: "Attributes that can be overridden. Most, if not all, media player attributes can be overridden. Example entries are `is_volume_muted`, `state`, `source`, `source_list` and `volume_level`. The values should be an entity ID and state attribute separated by a pipe character (|). If the entity ID's state should be used, then only the entity id needs to be provided."
required: false required: false
type: string type: string
browse_media_entity:
description: Allows override the browse media entity to desired media player.
required: false
type: string
device_class: device_class:
description: The device class that this entity represents. Can be `tv`, `speaker`, or `receiver`. description: The device class that this entity represents. Can be `tv`, `speaker`, or `receiver`.
required: false required: false
@ -102,6 +107,8 @@ When providing `select_source` as a command, it is recommended to also provide t
When using `state_template`, if you use a template that depends on the current time it is recommended to use `now()`. Using `now()` will cause templates to be refreshed at the start of every new minute. For more information see the [time](/docs/configuration/templating/#time) section in the template documentation. When using `state_template`, if you use a template that depends on the current time it is recommended to use `now()`. Using `now()` will cause templates to be refreshed at the start of every new minute. For more information see the [time](/docs/configuration/templating/#time) section in the template documentation.
The `browse_media_entity` parameter allows you to specify which media player will be used in media browser.
## Usage examples ## Usage examples
### Chromecast & Kodi control with switches ### Chromecast & Kodi control with switches

View File

@ -55,6 +55,10 @@ Net consumption:
Delta values: Delta values:
description: > description: >
Enable this if the source values are delta values since the last reading instead of absolute values. When this option is enabled, each new value received will be added as-is to the utility meter instead of adding the _difference_ between the new value and previous value. Enable this if the source values are delta values since the last reading instead of absolute values. When this option is enabled, each new value received will be added as-is to the utility meter instead of adding the _difference_ between the new value and previous value.
Periodically resetting:
description: >
Enable this if the source sensor state is expected to reset to 0, for example, a smart plug that resets on boot.
When this option is disabled (for example, if the source sensor is a domestic utility meter that never resets during the device's lifetime), the _difference_ between the new value and the last valid value is added to the utility meter, which avoids the loss of a meter reading after the source sensor becomes available after being unavailable.
{% endconfiguration_basic %} {% endconfiguration_basic %}
If the meter reset cycle and reset offsets are to limited for your use case, If the meter reset cycle and reset offsets are to limited for your use case,
@ -117,6 +121,11 @@ tariffs:
required: false required: false
default: [] default: []
type: list type: list
periodically_resetting:
description: Enable this if the source sensor state is expected to reset to 0, for example, a smart plug that resets on boot. When this option is disabled (for example, if the source sensor is a domestic utility meter that never resets during the device's lifetime), the _difference_ between the new value and the last valid value is added to the utility meter, which avoids the loss of a meter reading after the source sensor becomes available after being unavailable.
required: false
default: true
type: boolean
{% endconfiguration %} {% endconfiguration %}
<p class='note warning'> <p class='note warning'>

View File

@ -23,6 +23,7 @@ ha_platforms:
- cover - cover
- diagnostics - diagnostics
- light - light
- select
- sensor - sensor
- switch - switch
ha_integration_type: hub ha_integration_type: hub
@ -30,15 +31,6 @@ ha_integration_type: hub
The `velbus` integration is used to control [Velbus](https://www.velbus.eu/?lang=en) modules. It supports the Velbus USB, Velbus serial and a TCP/IP gateway. The `velbus` integration is used to control [Velbus](https://www.velbus.eu/?lang=en) modules. It supports the Velbus USB, Velbus serial and a TCP/IP gateway.
There is currently support for the following device types within Home Assistant:
- Binary Sensor
- Climate
- Sensor
- Switch
- Cover
- Light
The pushbutton LEDs of input modules are disabled by default. These can be enabled from the `Devices` panel in the `Configuration` page of the web interface. The pushbutton LEDs of input modules are disabled by default. These can be enabled from the `Devices` panel in the `Configuration` page of the web interface.
{% include integrations/config_flow.md %} {% include integrations/config_flow.md %}

View File

@ -14,6 +14,7 @@ ha_iot_class: Cloud Polling
ha_domain: verisure ha_domain: verisure
ha_codeowners: ha_codeowners:
- '@frenck' - '@frenck'
- '@niro1987'
ha_platforms: ha_platforms:
- alarm_control_panel - alarm_control_panel
- binary_sensor - binary_sensor
@ -34,7 +35,7 @@ There is currently support for the following device types within Home Assistant:
- Alarm - Alarm
- Camera - Camera
- Switch (Smartplug) - Switch (Smartplug)
- Sensor (Thermometers, Hygrometers and Mouse detectors) - Sensor (Thermometers and Hygrometers)
- Lock - Lock
- Binary Sensor (Door & Window) - Binary Sensor (Door & Window)

View File

@ -0,0 +1,32 @@
---
title: Vermont Castings
description: Connect and control your Vermont Castings devices using the IntelliFire integration
ha_category:
- Binary Sensor
- Climate
- Fan
- Light
- Number
- Sensor
- Switch
ha_domain: vermont_castings
ha_integration_type: virtual
ha_supporting_domain: intellifire
ha_supporting_integration: IntelliFire
ha_release: 2022.2
ha_codeowners:
- '@jeeftor'
ha_config_flow: true
ha_platforms:
- binary_sensor
- climate
- fan
- light
- number
- sensor
- switch
ha_iot_class: Local Polling
ha_dhcp: true
---
{% include integrations/supported_brand.md %}

View File

@ -14,6 +14,7 @@ ha_codeowners:
- '@thegardenmonkey' - '@thegardenmonkey'
ha_domain: vesync ha_domain: vesync
ha_platforms: ha_platforms:
- diagnostics
- fan - fan
- light - light
- sensor - sensor

View File

@ -0,0 +1,16 @@
---
title: Voice Assistant
description: Voice Assistant Integration.
ha_category:
- Voice
ha_iot_class: Local Push
ha_release: '2023.4'
ha_codeowners:
- '@balloob'
- '@synesthesiam'
ha_domain: voice_assistant
ha_integration_type: integration
ha_quality_scale: internal
---
The Voice Assistant integration contains logic for running *pipelines*, which perform the common steps of a voice assistant like [Assist](/docs/assist/).

View File

@ -1,78 +0,0 @@
---
title: "Dark Sky"
description: "Instructions on how to integrate Dark Sky within Home Assistant."
featured: false
logo: dark_sky.png
ha_category:
- Weather
ha_release: 0.61
ha_iot_class: Cloud Polling
ha_domain: darksky
---
The `darksky` platform uses the [Dark Sky](https://darksky.net/) web service as a source for meteorological data for your location.
## Configuration
<div class='note warning'>
On March 31, 2020 Dark Sky was [acquired by Apple](https://blog.darksky.net/dark-sky-has-a-new-home/) and is no longer allowing new API registrations. The Dark Sky API will continue to function for existing users [until March 31st, 2023](https://blog.darksky.net/), but it is no longer possible to obtain an API key for new users. Home Assistant supports many alternative [weather integrations](/integrations/#weather).
</div>
The free tier allows up to 1000 calls per day, this platform updates at most every 3 minutes, using up to 480 of those calls.
<div class='note warning'>
[Dark Sky](https://darksky.net/dev/) will charge you $0.0001 per API call if you enter your credit card details and create more than 1000 calls per day.
</div>
To add Dark Sky to your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
weather:
- platform: darksky
api_key: YOUR_API_KEY
```
{% configuration %}
api_key:
description: "Your API key for [Dark Sky](https://darksky.net/dev/)."
required: true
type: string
latitude:
description: Manually specify latitude. By default the value will be taken from the Home Assistant configuration.
required: false
type: float
default: Provided by Home Assistant configuration
longitude:
description: Manually specify longitude. By default the value will be taken from the Home Assistant configuration.
required: false
type: float
default: Provided by Home Assistant configuration
units:
description: "Manually specify unit system. Valid values are: `auto`, `us`, `si`, `ca`, `uk` and `uk2`."
required: false
type: string
default: "`si` if Home Assistant unit system is metric, `us` if imperial."
name:
description: Name to use in the frontend.
required: false
type: string
default: Dark Sky
mode:
description: "The forecast type. Can be `hourly` or `daily`."
required: false
type: string
default: hourly
{% endconfiguration %}
<div class='note'>
This platform is an alternative to the [`darksky`](/integrations/darksky) sensor.
</div>
Details about the API are available in the [Dark Sky documentation](https://darksky.net/dev/docs).

View File

@ -88,6 +88,7 @@ This integration provides sensors for the following information from WLED:
- Wi-Fi Signal Strength (RSSI in dBm, disabled by default). - Wi-Fi Signal Strength (RSSI in dBm, disabled by default).
- Wi-Fi Channel (disabled by default). - Wi-Fi Channel (disabled by default).
- Wi-Fi BSSID (disabled by default). - Wi-Fi BSSID (disabled by default).
- IP.
## Switches ## Switches

View File

@ -9,6 +9,7 @@ ha_release: 0.41
ha_quality_scale: internal ha_quality_scale: internal
ha_codeowners: ha_codeowners:
- '@fabaff' - '@fabaff'
- '@gjohansson-ST'
ha_domain: workday ha_domain: workday
ha_platforms: ha_platforms:
- binary_sensor - binary_sensor

View File

@ -372,6 +372,51 @@ Child Lock | Turn on/off the child lock
Learn Mode | Turn on/off the learn mode Learn Mode | Turn on/off the learn mode
LED | Turn on/off the LED LED | Turn on/off the LED
### Air Purifier MA2 (zhimi.airpurifier.ma2)
- Power (on, off)
- Operation modes (Auto, Silent, Favorite)
- Attributes (fan platform)
- `extra_features`
- `turbo_mode_supported`
- `button_pressed`
- `preset_modes`
- `preset_mode`
- `sleep_time`
- `sleep_mode_learn_count`
- `use_time`
- `sleep_mode`
- `friendly_name`
- `supported_features`
Number | Description
----------------------- | -----------------------
Favorite Level | Set the favorite level
- Sensor entities
Sensor | Description | Enabled by default
----------------------- | ----------------------- | -----------------------
Filter Life Remaining | The remaining life of the filter | True
Filter Use | Filter usage time in hours | True
Humidity | The current humidity measured | True
Motor Speed | The current motor speed measured in rpm | True
PM2.5 | The current particulate matter 2.5 measured | True
Temperature | The current temperature measured | True
Illuminance | The current illuminance meassured on top of the device 0-200lux| True
Use Time | The accumulative number of seconds the device has been in use | False
- Switch entities
Switch | Description
----------------------- | -----------------------
Buzzer | Turn on/off the buzzer
Child Lock | Turn on/off the child lock
Learn Mode | Turn on/off the learn mode
LED | Turn on/off the LED
### Air Purifier 2S (zhimi.airpurifier.mc1) ### Air Purifier 2S (zhimi.airpurifier.mc1)
- Power (on, off) - Power (on, off)

View File

@ -55,3 +55,4 @@ The integration is tested and verified for the following devices from YoLink:
* YS4906/8 (Garage Door Sensor/ Garage Door Controller) * YS4906/8 (Garage Door Sensor/ Garage Door Controller)
* YS5707 (Dimmer) * YS5707 (Dimmer)
* YS6801/2 (MultiOutlet) * YS6801/2 (MultiOutlet)
* YS3604 (FlexFob)

View File

@ -44,18 +44,56 @@ ha_integration_type: hub
ha_zeroconf: true ha_zeroconf: true
--- ---
This integration allows you to control a Z-Wave network via the [Z-Wave JS](https://zwave-js.github.io/node-zwave-js/#/) driver. The Z-Wave integration allows you to control a Z-Wave network via the [Z-Wave JS](https://zwave-js.github.io/node-zwave-js/#/) driver.
To Run Z-Wave you will need a [Supported Z-Wave dongle](/docs/z-wave/controllers/#supported-z-wave-usb-sticks--hardware-modules), a running Z-Wave JS server (using only **one** of the add-ons or installation methods described below), and the Z-Wave integration. ## Overview
{% include integrations/config_flow.md %} To run a Z-Wave network, you need the following elements:
If you run Home Assistant Container, Home Assistant Core, or you don't want to use the built-in Z-Wave JS Server add-on, please see the [advanced installation instructions](#advanced-installation-instructions). * A [supported Z-Wave controller](/docs/z-wave/controllers/#supported-z-wave-usb-sticks--hardware-modules). First-time user? For recommendations on what to buy, go [here](integrations/zwave_js/#which-z-wave-controller-should-i-buy).
* A running Z-Wave JS server.
* An installed Z-Wave integration in Home Assistant.
For new installations, network security keys will be automatically generated for you. If this Z-Wave stick has already been paired with secure devices, you need to enter the previously used network key as the S0 network key. S2 security keys will be automatically generated for you. Make sure that you keep a backup of these keys in a safe place in case you need to move your Z-Wave stick to another device. ## Setting up a Z-Wave JS server
The easiest way to get started is by using the built-in Z-Wave JS add-on in Home Assistant.
For other ways to setup a Z-Wave server, refer to the [advanced installation instructions](#advanced-installation-instructions).
Follow these steps:
1. Open the Home Assistant user interface.
1. Plug the Z-Wave dongle into the device running Home Assistant.
* Most likely, your dongle will be recognized automatically. On the user interface, you will be asked if you want to set up this device with the Z-Wave JS add-on. Select **Submit**.
* If your dongle is not recognized, follow these steps:
{% details "Manual setup steps" %}
Use this My button:
{% my config_flow_start badge domain="zwave_js" %}, or follow these steps:
* Browse to your Home Assistant instance.
* In the sidebar click on _**{% my config icon %}**_.
* From the configuration menu select: _**{% my integrations %}**_.
* In the bottom right, click on the
_**{% my config_flow_start icon domain="zwave_js" %}**_ button.
* From the list, search and select _**"Z-Wave"**_.
* Follow the instructions on screen to complete the set up.
{% enddetails %}
3. Wait for the installation to complete.
1. You are prompted for network security keys.
* If you are using Z-Wave for the first time, leave all the fields empty and select **Submit**. The system will generate network security keys for you.
* If this Z-Wave dongle has already been paired with secure devices, you need to enter the previously used network key as the S0 network key. S2 security keys will be automatically generated for you.
* Make sure that you keep a backup of these keys in a safe place in case you need to move your Z-Wave dongle to another device. Copy and paste them somewhere safe.
1. Wait for the Z-Wave JS add-on to start up.
1. Once the installation is complete, the **Device info** of the Z-Wave controller is shown.
* You successfully installed the Z-Wave integration and the Z-Wave JS add-on.
* You can now add devices to the Z-Wave network.
<p class='note'> <p class='note'>
While your Z-Wave mesh is permanently stored on your stick, the additional metadata is not. When the Z-Wave integration starts up the first time, it will interview your entire Z-Wave network. Depending on the number of devices paired with the Z-Wave stick, this can take a while. You can speed up this process by manually waking up your battery-powered devices. Most of the time this is a press on the button on those devices (see their manual). It is not necessary to exclude/re-include devices from the mesh. While your Z-Wave mesh is permanently stored on your dongle, the additional metadata is not. When the Z-Wave integration starts up the first time, it will interview your entire Z-Wave network. Depending on the number of devices paired with the Z-Wave dongle, this can take a while. You can speed up this process by manually waking up your battery-powered devices. Most of the time, this is a button press on those devices (see their manual). It is not necessary to exclude and re-include devices from the mesh.
</p> </p>
## Services ## Services
@ -335,6 +373,7 @@ These are notification events fired by devices using the Notification command cl
These are notification events fired by devices using the Multilevel Switch command class. There are events for start level change and stop level change. These would typically be used in a device like the Aeotec Nano Dimmer with an external switch to respond to long button presses. These are notification events fired by devices using the Multilevel Switch command class. There are events for start level change and stop level change. These would typically be used in a device like the Aeotec Nano Dimmer with an external switch to respond to long button presses.
##### Start Level Change ##### Start Level Change
```json ```json
{ {
"domain": "zwave_js", "domain": "zwave_js",
@ -350,6 +389,7 @@ These are notification events fired by devices using the Multilevel Switch comma
``` ```
##### Stop Level Change ##### Stop Level Change
```json ```json
{ {
"domain": "zwave_js", "domain": "zwave_js",
@ -557,28 +597,28 @@ All of these features can be accessed either in the Z-Wave integration configura
The following features can be accessed from the integration configuration panel: The following features can be accessed from the integration configuration panel:
- **Add device:** Allows you to pre-provision a SmartStart device or start the inclusion process for adding a new device to your network. * **Add device:** Allows you to pre-provision a SmartStart device or start the inclusion process for adding a new device to your network.
- **Remove device:** Starts the exclusion process for removing a device from your network. * **Remove device:** Starts the exclusion process for removing a device from your network.
- **Heal network:** Forces your network to rediscover routes to the controller from each device. This is useful when devices or the controller have moved to a new location, or if you are having significant problems with your network, but it also generates a lot of network traffic and should be used sparingly. * **Heal network:** Forces your network to rediscover routes to the controller from each device. This is useful when devices or the controller have moved to a new location, or if you are having significant problems with your network, but it also generates a lot of network traffic and should be used sparingly.
- **Third party data opt-in/out:** Allows you to opt-in or out of telemetry that the zwave-js project collects to help inform development decisions, influence manufacturers, etc. This telemetry is disabled by default and has to be opted in to be activated. * **Third-party data opt-in/out:** Allows you to opt-in or out of telemetry that the Z-Wave JS project collects to help inform development decisions, influence manufacturers, etc. This telemetry is disabled by default and has to be opted in to be activated.
- **[Controller statistics](https://zwave-js.github.io/node-zwave-js/#/api/controller?id=quotstatistics-updatedquot):** Provides statistics about communication between the controller and other devices, allowing you to troubleshoot your network's RF quality. * **[Controller statistics](https://zwave-js.github.io/node-zwave-js/#/api/controller?id=quotstatistics-updatedquot):** Provides statistics about communication between the controller and other devices, allowing you to troubleshoot your network's RF quality.
### Device Panel ### Device Panel
The following features can be accessed from the device panel of a Z-Wave device: The following features can be accessed from the device panel of a Z-Wave device:
- **Configure:** Provides an easy way to look up and update configuration parameters for the device. While there is an existing service for setting configuration parameter values, this UI may sometimes be quicker to use for one off changes. * **Configure:** Provides an easy way to look up and update configuration parameters for the device. While there is an existing service for setting configuration parameter values, this UI may sometimes be quicker to use for one off changes.
- **Re-interview:** Forces the device to go through the interview process again so that zwave-js can discover all of its capabilities. Can be helpful if you don't see all the expected entities for your device. * **Re-interview:** Forces the device to go through the interview process again so that zwave-js can discover all of its capabilities. Can be helpful if you don't see all the expected entities for your device.
- **Heal:** Forces the device to rediscover its optimal route back to the controller. Use this if you think you are experiencing unexpected delays or RF issues with your device. Your device may be less responsive during this process. * **Heal:** Forces the device to rediscover its optimal route back to the controller. Use this if you think you are experiencing unexpected delays or RF issues with your device. Your device may be less responsive during this process.
- **Remove failed:** Forces the controller to remove the device from the controller. Can be used when a device has failed and it can't go through the normal exclusion process. * **Remove failed:** Forces the controller to remove the device from the controller. Can be used when a device has failed and it can't go through the normal exclusion process.
- **[Statistics](https://zwave-js.github.io/node-zwave-js/#/api/node?id=quotstatistics-updatedquot):** Provides statistics about communication between this device and the controller, allowing you to troubleshoot RF issues with the device. * **[Statistics](https://zwave-js.github.io/node-zwave-js/#/api/node?id=quotstatistics-updatedquot):** Provides statistics about communication between this device and the controller, allowing you to troubleshoot RF issues with the device.
- **Update firmware:** Updates a device's firmware using a manually uploaded firmware file. Only some devices support this feature (controllers and devices with the Firmware Update Metadata Command Class). * **Update firmware:** Updates a device's firmware using a manually uploaded firmware file. Only some devices support this feature (controllers and devices with the Firmware Update Metadata Command Class).
## Advanced installation instructions ## Advanced installation instructions
If you are using Home Assistant Container, Home Assistant Core, or you don't want to use the built-in Z-Wave JS Server add-on, you will need to run the Z-Wave JS server yourself, to which the Z-Wave integration will connect. If you are using Home Assistant Container, Home Assistant Core, or you don't want to use the built-in Z-Wave JS Server add-on, you will need to run the Z-Wave JS server yourself, to which the Z-Wave integration will connect.
### Running [Z-Wave JS Server](https://github.com/zwave-js/zwave-js-server). ### Running [Z-Wave JS Server](https://github.com/zwave-js/zwave-js-server)
This application provides the connection between your Z-Wave USB stick and Home Assistant. The Home Assistant Z-Wave integration connects to this server via a websocket connection. You need to run this Z-Wave JS server before you can use the integration. This application provides the connection between your Z-Wave USB stick and Home Assistant. The Home Assistant Z-Wave integration connects to this server via a websocket connection. You need to run this Z-Wave JS server before you can use the integration.
@ -654,10 +694,10 @@ Some Z-Wave USB sticks can be auto-discovered, which can simplify the Z-Wave set
| Device | Identifier | Vendor | | Device | Identifier | Vendor |
| -------| ---------- | ------ | | -------| ---------- | ------ |
| Aeotec Z-Stick Gen5+ | 0658:0200 | https://aeotec.com/products/aeotec-z-stick-gen5/ | | Aeotec Z-Stick Gen5+ | 0658:0200 | <https://aeotec.com/products/aeotec-z-stick-gen5/> |
| Nortek HUSBZB-1 | 10C4:8A2A | https://www.nortekcontrol.com/products/2gig/husbzb-1-gocontrol-quickstick-combo/ | | Nortek HUSBZB-1 | 10C4:8A2A | <https://www.nortekcontrol.com/products/2gig/husbzb-1-gocontrol-quickstick-combo/> |
| Zooz ZST10 | 10C4:EA60 | https://www.getzooz.com/zooz-zst10-s2-stick/ | | Zooz ZST10 | 10C4:EA60 | <https://www.getzooz.com/zooz-zst10-s2-stick/> |
| Z-WaveMe UZB | 0658:0200 | https://z-wave.me/products/uzb/ | | Z-WaveMe UZB | 0658:0200 | <https://z-wave.me/products/uzb/> |
Additional devices may be discoverable, however only devices that have been confirmed discoverable are listed above. Additional devices may be discoverable, however only devices that have been confirmed discoverable are listed above.
@ -767,9 +807,9 @@ Your device might not send automatic status updates to the controller. While the
Z-Wave does not automatically poll devices on a regular basis. Polling can quickly lead to network congestion and should be used very sparingly and only where necessary. Z-Wave does not automatically poll devices on a regular basis. Polling can quickly lead to network congestion and should be used very sparingly and only where necessary.
- We provide a `zwave_js.refresh_value` service to allow you to manually poll a value, for example from an automation that only polls a device when there is motion in that same room. If you **really** need polling, you can enable this in Z-Wave JS UI but not in the official add-on. * We provide a `zwave_js.refresh_value` service to allow you to manually poll a value, for example from an automation that only polls a device when there is motion in that same room. If you **really** need polling, you can enable this in Z-Wave JS UI but not in the official add-on.
- Z-Wave JS UI allows you to configure scheduled polling on a per-value basis, which you can use to keep certain values updated. It also allows you to poll individual values on-demand from your automations, which should be preferred over blindly polling all the time if possible. * Z-Wave JS UI allows you to configure scheduled polling on a per-value basis, which you can use to keep certain values updated. It also allows you to poll individual values on-demand from your automations, which should be preferred over blindly polling all the time if possible.
<div class='note warning'> <div class='note warning'>
Polling should only be used as a last resort. You must use it with care and accept the negative impact on your network. Z-Wave is a very low speed network and poll requests can easily flood your network and slow down your commands. Polling should only be used as a last resort. You must use it with care and accept the negative impact on your network. Z-Wave is a very low speed network and poll requests can easily flood your network and slow down your commands.

File diff suppressed because it is too large Load Diff

View File

@ -434,6 +434,7 @@
/integrations/ciscospark /more-info/removed-integration 301 /integrations/ciscospark /more-info/removed-integration 301
/integrations/coinmarketcap /more-info/removed-integration 301 /integrations/coinmarketcap /more-info/removed-integration 301
/integrations/crimereports /more-info/removed-integration 301 /integrations/crimereports /more-info/removed-integration 301
/integrations/darksky /more-info/removed-integration 301
/integrations/deutsche_bahn /more-info/removed-integration 301 /integrations/deutsche_bahn /more-info/removed-integration 301
/integrations/device_tracker.trackr /more-info/removed-integration 301 /integrations/device_tracker.trackr /more-info/removed-integration 301
/integrations/dht /more-info/removed-integration 301 /integrations/dht /more-info/removed-integration 301
@ -467,6 +468,7 @@
/integrations/loop_energy /more-info/removed-integration 301 /integrations/loop_energy /more-info/removed-integration 301
/integrations/loopenergy /more-info/removed-integration 301 /integrations/loopenergy /more-info/removed-integration 301
/integrations/lyft /more-info/removed-integration 301 /integrations/lyft /more-info/removed-integration 301
/integrations/magicseaweed /more-info/removed-integration 301
/integrations/mcp23017 /more-info/removed-integration 301 /integrations/mcp23017 /more-info/removed-integration 301
/integrations/mhz19 /more-info/removed-integration 301 /integrations/mhz19 /more-info/removed-integration 301
/integrations/miflora /integrations/xiaomi_ble /integrations/miflora /integrations/xiaomi_ble
@ -518,6 +520,7 @@
/integrations/ups /more-info/removed-integration 301 /integrations/ups /more-info/removed-integration 301
/integrations/uscis /more-info/removed-integration 301 /integrations/uscis /more-info/removed-integration 301
/integrations/usps /more-info/removed-integration 301 /integrations/usps /more-info/removed-integration 301
/integrations/weather.darksky /more-info/removed-integration 301
/integrations/weblink /more-info/removed-integration 301 /integrations/weblink /more-info/removed-integration 301
/integrations/wink /more-info/removed-integration 301 /integrations/wink /more-info/removed-integration 301
/integrations/wunderground /more-info/removed-integration 301 /integrations/wunderground /more-info/removed-integration 301

File diff suppressed because it is too large Load Diff

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 107 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 48 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 55 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB