Merge remote-tracking branch 'upstream/current' into new

This commit is contained in:
c0ffeeca7 2023-05-12 15:08:43 +02:00
commit c45b4c3ca4
314 changed files with 6830 additions and 2124 deletions

View File

@ -8,7 +8,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out files from GitHub
uses: actions/checkout@v3.5.0
uses: actions/checkout@v3.5.2
- name: Setting up Node.js
uses: actions/setup-node@v3.6.0
with:
@ -25,7 +25,7 @@ jobs:
runs-on: ubuntu-latest
steps:
- name: Check out files from GitHub
uses: actions/checkout@v3.5.0
uses: actions/checkout@v3.5.2
- name: Setting up Node.js
uses: actions/setup-node@v3.6.0
with:

View File

@ -40,6 +40,8 @@ source/_integrations/amp_motorization.markdown @starkillerOG
source/_integrations/analytics.markdown @home-assistant/core @ludeeus
source/_integrations/android_ip_webcam.markdown @engrbm87
source/_integrations/androidtv.markdown @JeffLIrion @ollo69
source/_integrations/androidtv_remote.markdown @tronikos
source/_integrations/anova.markdown @Lash-L
source/_integrations/anthemav.markdown @hyralex
source/_integrations/anwb_energie.markdown @klaasnicolaas
source/_integrations/apache_kafka.markdown @bachya
@ -53,6 +55,7 @@ source/_integrations/aranet.markdown @aschmitz
source/_integrations/arcam_fmj.markdown @elupus
source/_integrations/arris_tg2492lg.markdown @vanbalken
source/_integrations/aseko_pool_live.markdown @milanmeu
source/_integrations/assist_pipeline.markdown @balloob @synesthesiam
source/_integrations/asuswrt.markdown @kennedyshead @ollo69
source/_integrations/atag.markdown @MatsNL
source/_integrations/aten_pe.markdown @mtdcr
@ -94,6 +97,7 @@ source/_integrations/braviatv.markdown @bieniu @Drafteed
source/_integrations/brel_home.markdown @starkillerOG
source/_integrations/broadlink.markdown @danielhiversen @felipediel @L-I-Am
source/_integrations/brother.markdown @bieniu
source/_integrations/brottsplatskartan.markdown @gjohansson-ST
source/_integrations/brunt.markdown @eavanvalkenburg
source/_integrations/bsblan.markdown @liudger
source/_integrations/bswitch.markdown @jafar-atili
@ -123,7 +127,6 @@ source/_integrations/configurator.markdown @home-assistant/core
source/_integrations/control4.markdown @lawtancool
source/_integrations/conversation.markdown @home-assistant/core @synesthesiam
source/_integrations/coolmaster.markdown @OnFreund
source/_integrations/coronavirus.markdown @home-assistant/core
source/_integrations/counter.markdown @fabaff
source/_integrations/cover.markdown @home-assistant/core
source/_integrations/cozytouch.markdown @imicknl @vlebourl @tetienne @nyroDev
@ -163,7 +166,7 @@ source/_integrations/dormakaba_dkey.markdown @emontnemery
source/_integrations/dsmr.markdown @Robbie1221 @frenck
source/_integrations/dsmr_reader.markdown @depl0y @glodenox
source/_integrations/dunehd.markdown @bieniu
source/_integrations/dwd_weather_warnings.markdown @runningman84 @stephan192 @Hummel95
source/_integrations/dwd_weather_warnings.markdown @runningman84 @stephan192 @Hummel95 @andarotajo
source/_integrations/dynalite.markdown @ziv1234
source/_integrations/easyenergy.markdown @klaasnicolaas
source/_integrations/ecobee.markdown @marthoc @marcolivierarsenault
@ -312,7 +315,7 @@ source/_integrations/icloud.markdown @Quentame @nzapponi
source/_integrations/ign_sismologia.markdown @exxamalte
source/_integrations/image_processing.markdown @home-assistant/core
source/_integrations/image_upload.markdown @home-assistant/core
source/_integrations/imap.markdown @engrbm87
source/_integrations/imap.markdown @engrbm87 @jbouwh
source/_integrations/incomfort.markdown @zxdavb
source/_integrations/influxdb.markdown @mdegat01
source/_integrations/inkbird.markdown @bdraco
@ -371,7 +374,7 @@ source/_integrations/leviton_z_wave.markdown @home-assistant/z-wave
source/_integrations/lg_netcast.markdown @Drafteed
source/_integrations/lidarr.markdown @tkdrob
source/_integrations/life360.markdown @pnbruckner
source/_integrations/lifx.markdown @bdraco @Djelibeybi
source/_integrations/lifx.markdown @bdraco
source/_integrations/light.markdown @home-assistant/core
source/_integrations/linux_battery.markdown @fabaff
source/_integrations/litejet.markdown @joncar
@ -421,6 +424,7 @@ source/_integrations/modbus.markdown @adamchengtkc @janiversen @vzahradnik
source/_integrations/modem_callerid.markdown @tkdrob
source/_integrations/modern_forms.markdown @wonderslug
source/_integrations/moehlenhoff_alpha2.markdown @j-a-n
source/_integrations/monessen.markdown @jeeftor
source/_integrations/monoprice.markdown @etsinko @OnFreund
source/_integrations/moon.markdown @fabaff @frenck
source/_integrations/mopeka.markdown @bdraco
@ -467,7 +471,7 @@ source/_integrations/nuheat.markdown @tstabrawa
source/_integrations/nuki.markdown @pschmitt @pvizeli @pree
source/_integrations/numato.markdown @clssn
source/_integrations/number.markdown @home-assistant/core @Shulyaka
source/_integrations/nut.markdown @bdraco @ollo69
source/_integrations/nut.markdown @bdraco @ollo69 @pestevez
source/_integrations/nutrichef.markdown @bdraco
source/_integrations/nws.markdown @MatthewFlamm @kamiyo
source/_integrations/nzbget.markdown @chriscla
@ -508,7 +512,7 @@ source/_integrations/picnic.markdown @corneyl
source/_integrations/pilight.markdown @trekky12
source/_integrations/plaato.markdown @JohNan
source/_integrations/plex.markdown @jjlawren
source/_integrations/plugwise.markdown @CoMPaTech @bouwew @brefra @frenck
source/_integrations/plugwise.markdown @CoMPaTech @bouwew @frenck
source/_integrations/plum_lightpad.markdown @ColinHarrington @prystupa
source/_integrations/point.markdown @fredrike
source/_integrations/poolsense.markdown @haemishkyd
@ -544,6 +548,7 @@ source/_integrations/raincloud.markdown @vanstinator
source/_integrations/rainforest_eagle.markdown @gtdiehl @jcalbert @hastarin
source/_integrations/rainmachine.markdown @bachya
source/_integrations/random.markdown @fabaff
source/_integrations/rapt_ble.markdown @sairon
source/_integrations/raven_rock_mfg.markdown @starkillerOG
source/_integrations/rdw.markdown @frenck
source/_integrations/recollect_waste.markdown @bachya
@ -554,6 +559,7 @@ source/_integrations/renault.markdown @epenet
source/_integrations/reolink.markdown @starkillerOG
source/_integrations/repairs.markdown @home-assistant/core
source/_integrations/repetier.markdown @MTrab @ShadowBr0ther
source/_integrations/rest.markdown @epenet
source/_integrations/rexel.markdown @imicknl @vlebourl @tetienne @nyroDev
source/_integrations/rflink.markdown @javicalle
source/_integrations/rfxtrx.markdown @danielhiversen @elupus @RobBie1221
@ -562,7 +568,7 @@ source/_integrations/ridwell.markdown @bachya
source/_integrations/risco.markdown @OnFreund
source/_integrations/rituals_perfume_genie.markdown @milanmeu
source/_integrations/rmvtransport.markdown @cgtobi
source/_integrations/roborock.markdown @rytilahti @syssi @starkillerOG
source/_integrations/roborock.markdown @humbertogontijo @Lash-L
source/_integrations/roku.markdown @ctalkington
source/_integrations/roomba.markdown @pschmitt @cyr-ius @shenxn
source/_integrations/roon.markdown @pavoni
@ -648,7 +654,7 @@ source/_integrations/speedtestdotnet.markdown @rohankapoorcom @engrbm87
source/_integrations/spider.markdown @peternijssen
source/_integrations/splunk.markdown @Bre77
source/_integrations/spotify.markdown @frenck
source/_integrations/sql.markdown @dgomes @gjohansson-ST
source/_integrations/sql.markdown @dgomes @gjohansson-ST @dougiteixeira
source/_integrations/squeezebox.markdown @rajlaud
source/_integrations/srp_energy.markdown @briglx
source/_integrations/starline.markdown @anonym-tsk
@ -660,7 +666,7 @@ source/_integrations/stiebel_eltron.markdown @fucm
source/_integrations/stookalert.markdown @fwestenberg @frenck
source/_integrations/stookwijzer.markdown @fwestenberg
source/_integrations/stream.markdown @hunterjm @uvjustin @allenporter
source/_integrations/stt.markdown @pvizeli
source/_integrations/stt.markdown @home-assistant/core @pvizeli
source/_integrations/subaru.markdown @G-Two
source/_integrations/suez_water.markdown @ooii
source/_integrations/sun.markdown @Swamp-Ig
@ -714,7 +720,7 @@ source/_integrations/trafikverket_ferry.markdown @gjohansson-ST
source/_integrations/trafikverket_train.markdown @endor-force @gjohansson-ST
source/_integrations/trafikverket_weatherstation.markdown @endor-force @gjohansson-ST
source/_integrations/transmission.markdown @engrbm87 @JPHutchins
source/_integrations/tts.markdown @pvizeli
source/_integrations/tts.markdown @home-assistant/core @pvizeli
source/_integrations/tuya.markdown @Tuya @zlinoliver @frenck
source/_integrations/twentemilieu.markdown @frenck
source/_integrations/twinkly.markdown @dr1rrb @Robbie1221
@ -722,7 +728,7 @@ source/_integrations/ubiwizz.markdown @imicknl @vlebourl @tetienne @nyroDev
source/_integrations/ukraine_alarm.markdown @PaulAnnekov
source/_integrations/unifi.markdown @Kane610
source/_integrations/unifiled.markdown @florisvdk
source/_integrations/unifiprotect.markdown @briis @AngellusMortis @bdraco
source/_integrations/unifiprotect.markdown @AngellusMortis @bdraco
source/_integrations/upb.markdown @gwww
source/_integrations/upc_connect.markdown @pvizeli @fabaff
source/_integrations/upcloud.markdown @scop
@ -744,12 +750,12 @@ source/_integrations/vermont_castings.markdown @jeeftor
source/_integrations/versasense.markdown @flamm3blemuff1n
source/_integrations/version.markdown @ludeeus
source/_integrations/vesync.markdown @markperdue @webdjoe @thegardenmonkey
source/_integrations/vicare.markdown @oischinger
source/_integrations/vilfo.markdown @ManneW
source/_integrations/vivotek.markdown @HarlemSquirrel
source/_integrations/vizio.markdown @raman325
source/_integrations/vlc_telnet.markdown @rodripf @MartinHjelmare
source/_integrations/voice_assistant.markdown @balloob @synesthesiam
source/_integrations/voip.markdown @balloob @synesthesiam
source/_integrations/volumio.markdown @OnFreund
source/_integrations/volvooncall.markdown @molobrakos
source/_integrations/vulcan.markdown @Antoni-Czaplicki
@ -777,8 +783,8 @@ source/_integrations/wolflink.markdown @adamkrol93
source/_integrations/workday.markdown @fabaff @gjohansson-ST
source/_integrations/worldclock.markdown @fabaff
source/_integrations/ws66i.markdown @ssaenger
source/_integrations/wyoming.markdown @balloob @synesthesiam
source/_integrations/xbox.markdown @hunterjm
source/_integrations/xbox_live.markdown @MartinHjelmare
source/_integrations/xiaomi_aqara.markdown @danielhiversen @syssi
source/_integrations/xiaomi_ble.markdown @Jc2k @Ernst79
source/_integrations/xiaomi_miio.markdown @rytilahti @syssi @starkillerOG

View File

@ -5,7 +5,7 @@ ruby '> 2.5.0'
group :development do
gem 'rake', '13.0.6'
gem 'jekyll', '4.3.2'
gem 'stringex', '2.8.5'
gem 'stringex', '2.8.6'
end
group :jekyll_plugins do
@ -16,8 +16,8 @@ group :jekyll_plugins do
gem 'jekyll-postcss', '0.5.0'
end
gem 'sinatra', '3.0.5'
gem 'nokogiri', '1.14.2'
gem 'sinatra', '3.0.6'
gem 'nokogiri', '1.14.3'
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
# and associated library

View File

@ -1,7 +1,7 @@
GEM
remote: https://rubygems.org/
specs:
addressable (2.8.3)
addressable (2.8.4)
public_suffix (>= 2.0.2, < 6.0)
colorator (1.1.0)
commonmarker (0.23.8)
@ -17,7 +17,7 @@ GEM
google-protobuf (3.22.2)
google-protobuf (3.22.2-x64-mingw32)
http_parser.rb (0.8.0)
i18n (1.12.0)
i18n (1.13.0)
concurrent-ruby (~> 1.0)
jekyll (4.3.2)
addressable (~> 2.4)
@ -60,17 +60,17 @@ GEM
mini_portile2 (2.8.1)
mustermann (3.0.0)
ruby2_keywords (~> 0.0.1)
nokogiri (1.14.2)
nokogiri (1.14.3)
mini_portile2 (~> 2.8.0)
racc (~> 1.4)
nokogiri (1.14.2-x64-mingw32)
nokogiri (1.14.3-x64-mingw32)
racc (~> 1.4)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (5.0.1)
racc (1.6.2)
rack (2.2.6.4)
rack-protection (3.0.5)
rack (2.2.7)
rack-protection (3.0.6)
rack
rake (13.0.6)
rb-fsevent (0.11.2)
@ -80,17 +80,17 @@ GEM
rouge (4.1.0)
ruby2_keywords (0.0.5)
safe_yaml (1.0.5)
sass-embedded (1.60.0)
sass-embedded (1.62.1)
google-protobuf (~> 3.21)
rake (>= 10.0.0)
sass-embedded (1.60.0-x64-mingw32)
sass-embedded (1.62.1-x64-mingw32)
google-protobuf (~> 3.21)
sinatra (3.0.5)
sinatra (3.0.6)
mustermann (~> 3.0)
rack (~> 2.2, >= 2.2.4)
rack-protection (= 3.0.5)
rack-protection (= 3.0.6)
tilt (~> 2.0)
stringex (2.8.5)
stringex (2.8.6)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
tilt (2.1.0)
@ -112,10 +112,10 @@ DEPENDENCIES
jekyll-postcss (= 0.5.0)
jekyll-sitemap (= 1.4.0)
jekyll-toc (= 0.18.0)
nokogiri (= 1.14.2)
nokogiri (= 1.14.3)
rake (= 13.0.6)
sinatra (= 3.0.5)
stringex (= 2.8.5)
sinatra (= 3.0.6)
stringex (= 2.8.6)
tzinfo (~> 2.0)
tzinfo-data

View File

@ -121,9 +121,9 @@ social:
# Home Assistant release details
current_major_version: 2023
current_minor_version: 4
current_patch_version: 0
date_released: 2023-04-05
current_minor_version: 5
current_patch_version: 2
date_released: 2023-05-05
# Either # or the anchor link to latest release notes in the blog post.
# Must be prefixed with a # and have double quotes around it.
@ -214,7 +214,7 @@ installation:
types:
odroid:
board: ODROID
installation_media: "eMMC module/SD card"
installation_media: "eMMC module or SD card"
variants:
- name: "ODROID-N2"
key: "odroid-n2"
@ -224,8 +224,8 @@ installation:
key: "odroid-c2"
- name: "ODROID-C4"
key: "odroid-c4"
- name: "ODROID-XU4"
key: "odroid-xu4"
- name: "ODROID-M1"
key: "odroid-m1"
raspberrypi:
board: Raspberry Pi
@ -238,7 +238,7 @@ installation:
tinkerboard:
board: ASUS Tinkerboard
installation_media: "eMMC module/SD card"
installation_media: "eMMC module or SD card"
variants:
- name: "ASUS Tinkerboard"
key: "tinker"

14
package-lock.json generated
View File

@ -1850,20 +1850,6 @@
"integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==",
"dev": true
},
"node_modules/fsevents": {
"version": "2.3.2",
"resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz",
"integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==",
"dev": true,
"hasInstallScript": true,
"optional": true,
"os": [
"darwin"
],
"engines": {
"node": "^8.16.0 || ^10.6.0 || >=11.0.0"
}
},
"node_modules/function-bind": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz",

View File

@ -227,7 +227,7 @@ entities:
required: false
description: If false, the button name is not shown.
type: boolean
default: "true"
default: "false"
show_icon:
required: false
description: If false, the icon is not shown.

View File

@ -5,7 +5,7 @@ sidebar_label: History Graph
description: "The History Graph card allows you to display a graph for each of the entities listed."
---
The History Graph card allows you to display a graph for each of the entities listed.
The History Graph card allows you to display a graph for each of up to eight entities.
<p class='img'>
<img src='/images/dashboards/history_graph.png' alt='Screenshot of the history graph card for entities without a unit_of_measurement'>

View File

@ -370,7 +370,7 @@ conditions:
type: string
elements:
required: true
description: One or more elements of any type to show when conditions are met. See below for an example.
description: One or more elements of any of the [listed types](#elements) to show when conditions are met. See below for an example.
type: list
{% endconfiguration %}

View File

@ -8,8 +8,8 @@ description: "The tile card gives you a quick overview of your entity. The card
The tile card gives you a quick overview of your entity. The card allows you to toggle the entity and show the more info dialog. A badge is shown for some entities like the [climate](/integrations/climate) or [person](/integrations/person) entities.
<p class='img'>
<img src='/images/dashboards/tile_card.png' alt='Screenshot of the tile card'>
Screenshot of the Tile card.
<img src='/images/dashboards/tile_card.png' alt='Screenshot of tile cards'>
Screenshot of Tile cards.
</p>
To add the Tile card to your user interface, click the menu (three dots at the top right of the screen) and then **Edit Dashboard**. Click the "Add Card" button in the bottom right corner and select **Tile** from the card picker.

View File

@ -9,12 +9,18 @@
#
- term: Action
definition: >-
An action is an command that can be fired. For example, turning on a light.
Actions used in many places, most notably in automations and scripts.
definition: |-
Actions are used in several places in Home Assistant. As part of a script or automation, actions define what is going to happen once a trigger is activated. In scripts, an action is called *sequence*.
Actions use service calls and/or scenes to interact with entities and cause these entities to do something. Actions can also include conditions and a delay. An action can call multiple services at the same time. For example, if your presence is detected in a room, an action may call one service to turn on a light and call another service to start playing music after a delay.
Actions are also used on the dashboard, for example as tap or hold action on a UI element. When triggered, the action calls a service.
aliases:
- actions
link: /docs/automation/action/
excerpt: >
Actions are used in several places in Home Assistant. As part of a script or automation, actions define what is going to happen once a trigger is activated. In scripts, an action is called *sequence*.
- term: Add-on
definition: >-
@ -26,6 +32,16 @@
Add-ons are additional standalone third-party software packages that can be
installed on Home Assistant OS.
- term: Area
definition: >-
Locations within your home such as living room, dance floor, etc.
Devices can be associated to an area for easier sorting and automatically
generated cards, such as the [Area card](/dashboards/area/).
excerpt: >-
Places within your home such as rooms, spaces, etc.
aliases:
- areas
- term: Automation
definition: >-
Automations connect one or more triggers to one or more actions in a
@ -56,6 +72,8 @@
Conditions are an optional part of an automation that will prevent an
action from firing if they are not met.
link: /docs/scripts/conditions/
aliases:
- conditions
- term: Cover
definition: >-
@ -81,6 +99,8 @@
Devices have properties such as ID, manufacturer, name, model, hardware version, firmware version, connections, etc.
excerpt: >
A device is a model representing a physical or logical unit that contains entities.
aliases:
- devices
- term: Device tracker
definition: >-
@ -128,11 +148,15 @@
link: /docs/configuration/state_object/
excerpt: >
An entity represents a sensor, actor, or function in Home Assistant. Entities are used to monitor physical properties or to control other entities. An entity is usually part of a device or a service.
aliases:
- entities
- term: Event
definition: >-
An event is when something happens.
link: /docs/configuration/events/
aliases:
- events
- term: Frontend
definition: >-
@ -206,6 +230,19 @@
Integrations connect and integrates Home Assistant with your devices,
services, and more.
link: /integrations/
aliases:
- integrations
- term: Intent
definition: >-
Intent is a term used with voice assistants. The intent is what Home Assistant thinks you want it to do when it extracts a command from your voice or text utterance. Currently, the following intents are supported out of the box: HassTurnOn, HassTurnOff, HassGetState, and HassLightSet.
These intents allow you to turn things on or off, inquire about a state, or change the brightness or color of a light.
excerpt: >
Intent is a term used with voice assistants. The intent is what Home Assistant thinks you want it to do when it extracts a command from your voice or text utterance.
link: https://developers.home-assistant.io/docs/intent_builtin
aliases:
- Intents
- term: Lovelace
definition: >-
@ -259,12 +296,16 @@
Scripts are components that allow users to specify a sequence of actions
to be executed by Home Assistant when turned on.
link: /docs/scripts/
aliases:
- scripts
- term: Sensor
definition: >-
Sensors return information about a thing, for instance the level of water
in a tank.
link: /integrations/sensor/
aliases:
- sensors
- term: Selectors
definition: >-
@ -296,8 +337,9 @@
A service carries out one specific task, for example: turn on the light in the
living room. A service has targets and data and can be called by actions, a
dashboard, or via voice command.
link: /docs/scripts/service-calls/
aliases:
- services
- term: State
definition: |-
@ -351,3 +393,5 @@
definition: >-
Zones are areas that can be used for presence detection.
link: /integrations/zone/
aliases:
- zones

View File

@ -3,7 +3,7 @@ title: "Understanding Automations"
description: "A breakdown of what an automation consists of."
---
All automations are made up of a trigger and an action. Optionally combined with a condition. Take for example the automation:
All {% term automations %} are made up of a {% term trigger %} and an {% term action %}. Optionally combined with a {% term condition %}. Take for example the automation:
> When Paulus arrives home and it is after sunset: Turn the lights on in the living room.
@ -15,7 +15,7 @@ We can break up this automation into the following three parts:
(action) Turn the lights on in the living room
```
The first part is the [trigger](/docs/automation/trigger/) of the automation rule. Triggers describe events that should trigger the automation rule. In this case, it is a person arriving home, which can be observed in Home Assistant by observing the state of Paulus changing from `not_home` to `home`.
The first part is the [trigger](/docs/automation/trigger/) of the automation rule. Triggers describe {% term events %} that should trigger the automation rule. In this case, it is a person arriving home, which can be observed in Home Assistant using {% term devices %}/{% term sensors %} by observing the state of Paulus changing from `not_home` to `home`.
The second part is the [condition](/docs/automation/condition/). Conditions are optional tests that can limit an automation rule to only work in your specific use cases. A condition will test against the current state of the system. This includes the current time, devices, people and other things like the sun. In this case, we only want to act when the sun has set.
@ -27,7 +27,7 @@ The difference between a condition and a trigger can be confusing as they are ve
## Exploring the internal state
Automation rules interact directly with the internal state of Home Assistant, so you'll need to familiarize yourself with it. Home Assistant exposes its current state via the developer tools. These are available at the bottom of the sidebar in the frontend. **{% my developer_states title="Developer Tools -> States" %}** will show all currently available states. An entity can be anything. A light, a switch, a person and even the sun. A state consists of the following parts:
Automation rules interact directly with the internal state of Home Assistant, so you'll need to familiarize yourself with it. Home Assistant exposes its current state via the developer tools. These are available at the bottom of the sidebar in the frontend. **{% my developer_states title="Developer Tools > States" %}** will show all currently available states. An entity can be anything. A light, a switch, a person and even the sun. A state consists of the following parts:
| Name | Description | Example |
| ---- | ----- | ---- |
@ -37,7 +37,7 @@ Automation rules interact directly with the internal state of Home Assistant, so
State changes can be used as the source of triggers and the current state can be used in conditions.
Actions are all about calling *services*. To explore the available *services* open the **{% my developer_services title="Developer Tools -> Services" %}**. *Services* allow changing anything. For example turn on a light, run a script or enable a scene. Each *service* has a domain and a name. For example the *service* {% my developer_call_service service="light.turn_on" %} is capable of turning on any light in your system. Parameters can be passed to a *service* to indicate, for example, which device to activate or which color to use.
Actions are all about calling *services*. To explore the available *services* open the **{% my developer_services title="Developer Tools > Services" %}**. *Services* allow changing anything. For example turn on a light, run a script or enable a scene. Each *service* has a domain and a name. For example the *service* {% my developer_call_service service="light.turn_on" %} is capable of turning on any light in your system. Parameters can be passed to a *service* to indicate, for example, which device to activate or which color to use.
## Creating automations

View File

@ -5,29 +5,25 @@ description: "Instructions on how to use the automation editor."
The automation editor is an easy way of creating and editing automations from the UI. This page uses the [Random sensor](/integrations/random#sensor) as an example, though any other sensor with a numeric value can be used as well.
From the UI, choose **{% my config %}** which is located in the sidebar, then click on **{% my automations %}** to go to the automation editor. Press the **Create Automation** button in the lower right corner to get started. You can create an automation based on a [blueprint](/docs/automation/using_blueprints/) or start from scratch.
From the UI, choose **{% my config %}** which is located in the sidebar, then click on **{% my automations %}** to go to the automation editor. Press the **Create Automation** button in the lower right corner to get started. You can create an automation based on a [blueprint](/docs/automation/using_blueprints/) or start from scratch. Select **Create new automation**.
<p class='img'>
<img src='/images/docs/automation-editor/create-automation.png' />
</p>
![Create automation dialogue box](/images/docs/automation-editor/create-automation.png)
Select **Start with an empty automation** and choose a meaningful name for your new automation.
Click on the **Add Trigger** button and select **Nurmeric state**.
<p class='img'>
<img src='/images/docs/automation-editor/new-automation.png' />
</p>
![Add trigger](/images/docs/automation-editor/add-trigger-to-automation.png)
If the value of the sensor is greater than 10, then the automation should trigger.
<p class='img'>
<img src='/images/docs/automation-editor/new-trigger.png' />
</p>
![Automation trigger](/images/docs/automation-editor/new-trigger.png)
Click on the **Add Action** button and select **Call service**.
![Add trigger](/images/docs/automation-editor/new-action.png)
The action for this automation creates a [persistent notification](/integrations/persistent_notification/).
<p class='img'>
<img src='/images/docs/automation-editor/new-action.png' />
</p>
![Automation action](/images/docs/automation-editor/send-notification.png)
As the message we want a simple text that is shown as part of the notification.
@ -35,6 +31,10 @@ As the message we want a simple text that is shown as part of the notification.
message: Sensor value greater than 10
```
Press the **Save** button, and the save dialogue will appear. Give your automation a meaningful name and press the **Save** button again.
![New automation editor](/images/docs/automation-editor/new-automation.png)
Automations created or edited via the user interface are activated immediately after saving the automation. Read the documentation for [Automating Home Assistant](/getting-started/automation/) to learn more about automations.
## Troubleshooting missing automations

View File

@ -13,19 +13,25 @@ The variable `this` is the [state object](/docs/configuration/state_object) of t
## Available Trigger Data
The following tables show the available trigger data per platform.
The variable `trigger` is an object that contains details about which trigger triggered the automation.
Templates can use the data to modify the actions performed by the automation or displayed in a message. For example, you could create an automation that multiple sensors can trigger and then use the sensor's location to specify a light to activate; or you could send a notification containing the friendly name of the sensor that triggered it.
Each [trigger platform](/docs/automation/trigger/#event-trigger) can include additional data specific to that platform.
### All
The following describes trigger data associated with all platforms.
Triggers from all platforms will include the following data.
| Template variable | Data |
| ---- | ---- |
| `trigger.id` | Optional trigger `id`, or index of the trigger.
| `trigger.id` | The [`id` of the trigger](/docs/automation/trigger/#trigger-id).
| `trigger.idx` | Index of the trigger. (The first trigger idx is `0`.)
### Calendar
These are the properties available for a [Calendar trigger](/docs/automation/trigger/#calendar-trigger).
| Template variable | Data |
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------- |
| `trigger.platform` | Hardcoded: `calendar` |
@ -41,6 +47,8 @@ The following describes trigger data associated with all platforms.
### Device
These are the properties available for a [Device trigger](/docs/automation/trigger/#device-trigger).
Inherites template variables from [event](#event) or [state](#state) template based on the type of trigger selected for the device.
| Template variable | Data |
@ -49,6 +57,8 @@ Inherites template variables from [event](#event) or [state](#state) template ba
### Event
These are the properties available for a [Event trigger](/docs/automation/trigger/#event-trigger).
| Template variable | Data |
| ---- | ---- |
| `trigger.platform` | Hardcoded: `event`.
@ -58,6 +68,8 @@ Inherites template variables from [event](#event) or [state](#state) template ba
### MQTT
These are the properties available for a [MQTT trigger](/docs/automation/trigger/#mqtt-trigger).
| Template variable | Data |
| ---- | ---- |
| `trigger.platform` | Hardcoded: `mqtt`.
@ -68,6 +80,8 @@ Inherites template variables from [event](#event) or [state](#state) template ba
### Numeric State
These are the properties available for a [Numeric State trigger](/docs/automation/trigger/#numeric-state-trigger).
| Template variable | Data |
| ---- | ---- |
| `trigger.platform` | Hardcoded: `numeric_state`
@ -80,6 +94,8 @@ Inherites template variables from [event](#event) or [state](#state) template ba
### State
These are the properties available for a [State trigger](/docs/automation/trigger/#state-trigger).
| Template variable | Data |
| ---- | ---- |
| `trigger.platform` | Hardcoded: `state`
@ -90,6 +106,8 @@ Inherites template variables from [event](#event) or [state](#state) template ba
### Sun
These are the properties available for a [Sun trigger](/docs/automation/trigger/#sun-trigger).
| Template variable | Data |
| ---- | ---- |
| `trigger.platform` | Hardcoded: `sun`
@ -98,6 +116,8 @@ Inherites template variables from [event](#event) or [state](#state) template ba
### Template
These are the properties available for a [Template trigger](/docs/automation/trigger/#template-trigger).
| Template variable | Data |
| ---- | ---- |
| `trigger.platform` | Hardcoded: `template`
@ -108,6 +128,8 @@ Inherites template variables from [event](#event) or [state](#state) template ba
### Time
These are the properties available for a [Time trigger](/docs/automation/trigger/#time-trigger).
| Template variable | Data |
| ---- | ---- |
| `trigger.platform` | Hardcoded: `time`
@ -115,6 +137,8 @@ Inherites template variables from [event](#event) or [state](#state) template ba
### Time Pattern
These are the properties available for a [Time Pattern trigger](/docs/automation/trigger/#time-pattern-trigger).
| Template variable | Data |
| ---- | ---- |
| `trigger.platform` | Hardcoded: `time_pattern`
@ -122,6 +146,8 @@ Inherites template variables from [event](#event) or [state](#state) template ba
### Webhook
These are the properties available for a [Webhook trigger](/docs/automation/trigger/#webhook-trigger).
| Template variable | Data |
| ---- | ---- |
| `trigger.platform` | Hardcoded: `webhook`
@ -132,6 +158,8 @@ Inherites template variables from [event](#event) or [state](#state) template ba
### Zone
These are the properties available for a [Zone trigger](/docs/automation/trigger/#zone-trigger).
| Template variable | Data |
| ---- | ---- |
| `trigger.platform` | Hardcoded: `zone`

View File

@ -786,6 +786,10 @@ automation:
trigger:
- platform: webhook
webhook_id: "some_hook_id"
allowed_methods:
- POST
- PUT
local_only: true
```
You can run this automation by sending an HTTP POST request to `http://your-home-assistant:8123/api/webhook/some_hook_id`. Here is an example using the **curl** command line program, with an example form data payload:
@ -794,7 +798,9 @@ You can run this automation by sending an HTTP POST request to `http://your-home
curl -X POST -d 'key=value&key2=value2' https://your-home-assistant:8123/api/webhook/some_hook_id
```
Webhooks support HTTP POST, PUT, and HEAD requests; POST requests are recommended. HTTP GET requests are not supported.
Webhooks support HTTP POST, PUT, HEAD, and GET requests; PUT requests are recommended. HTTP GET and HEAD requests are not enabled by default but can be enabled by adding them to the `allowed_methods` option. The request methods can also be configured in the UI by clicking the settings gear menu button beside the Webhook ID.
By default, webhook triggers can only be accessed from devices on the same network as Home Assistant or via [Nabu Casa Cloud webhooks](https://www.nabucasa.com/config/webhooks/). The `local_only` option should be set to `false` to allow webhooks to be triggered directly via the internet. This option can also be configured in the UI by clicking the settings gear menu button beside the Webhook ID.
Remember to use an HTTPS URL if you've secured your Home Assistant installation with SSL/TLS.
@ -817,6 +823,7 @@ Webhook endpoints don't require authentication, other than knowing a valid webho
- Do not use webhooks to trigger automations that are destructive, or that can create safety issues. For example, do not use a webhook to unlock a lock, or open a garage door.
- Treat a webhook ID like a password: use a unique, non-guessable value, and keep it secret.
- Do not copy-and-paste webhook IDs from public sources, including blueprints. Always create your own.
- Keep the `local_only` option enabled for webhooks if access from the internet is not required.
## Zone trigger

View File

@ -19,6 +19,7 @@ The following selectors are currently available:
- [Add-on selector](#add-on-selector)
- [Area selector](#area-selector)
- [Attribute selector](#attribute-selector)
- [Assist pipeline selector](#assist-pipeline-selector)
- [Boolean selector](#boolean-selector)
- [Color temperature selector](#color-temperature-selector)
- [Config entry selector](#config-entry-selector)
@ -29,6 +30,7 @@ The following selectors are currently available:
- [Duration selector](#duration-selector)
- [Entity selector](#entity-selector)
- [Icon selector](#icon-selector)
- [Language selector](#language-selector)
- [Location selector](#location-selector)
- [Media selector](#media-selector)
- [Number selector](#number-selector)
@ -245,6 +247,18 @@ The output of this selector is the selected attribute key (not the translated or
prettified name shown in the frontend).
For example: `next_dawn`.
## Assist pipeline selector
The assist pipeline selector shows all available assist pipelines (assistants) of which one can be selected.
![Screenshot of an assist pipeline selector](/images/blueprints/selector-assist-pipeline.png)
This selector does not have any other options; therefore, it only has its key.
```yaml
assist_pipeline:
```
## Boolean selector
The boolean selector shows a toggle that allows the user to turn on or off
@ -640,6 +654,38 @@ placeholder:
The output of this selector is a string containing the selected icon,
for example: `mdi:bell`.
## Language selector
The language selector allows a user to pick a language from a list of languages.
![Screenshot of an language selector](/images/blueprints/selector-language.png)
```yaml
language:
```
{% configuration entity %}
languages:
description: A list of languages to pick from, this should be RFC 5646 languages codes.
type: list
default: The available languages in the Home Assistant frontend
required: false
native_name:
description: >
Should the name of the languages be shown in the language of the user, or in the language itself.
type: boolean
default: false
required: false
no_sort:
description: >
Should the options be sorted by name, if set to true, the order of the provided languages is kept.
type: boolean
default: false
required: false
{% endconfiguration %}
The output of this selector is a RFC 5646 language code.
## Location selector
The location selector allow a user to pick a location from a map and returns

View File

@ -40,6 +40,6 @@ If you can't see your integration listed there, you will need to restart Home As
## Migrating to a new system
The preferred way of migrating to a new system is by {% my supervisor_backups title="making a backup" %}.
The preferred way of migrating to a new system is by {% my supervisor_backups title="making a backup" %}. Once you have created the backup on the old system, you can download it to the system that is running the Home Assistant frontend. When setting up the new system, you may use the backup. Alternatively, you can upload it to your new system using the *Upload backup* menu option of the *Backups* menu. Then, a restore of the uploaded backup on the new system concludes the migration.
If you run the container or core installation methods, you will need to manually make a backup of your configuration folder. Be aware that some of the files you need start with `.`, which is hidden by default from both `ls` (in SSH), in Windows Explorer, and macOS Finder. You'll need to ensure that you're viewing all files before you copy them.

View File

@ -150,6 +150,8 @@ Print out a list of all the sensor states:
{% endfor %}
```
{% endraw %}
Print out a list of all the sensor states sorted by `entity_id`:
{% raw %}
@ -655,13 +657,14 @@ To fix it, enforce the ISO conversion via `isoformat()`:
The `to_json` filter serializes an object to a JSON string. In some cases, it may be necessary to format a JSON string for use with a webhook, as a parameter for command-line utilities or any number of other applications. This can be complicated in a template, especially when dealing with escaping special characters. Using the `to_json` filter, this is handled automatically.
Similarly to the Python equivalent, the filter accepts an `ensure_ascii` parameter, defaulting to `True`. If `ensure_ascii` is `True`, the output is guaranteed to have all incoming non-ASCII characters escaped. If `ensure_ascii` is false, these characters will be output as-is.
`to_json` also accepts boolean arguments for `pretty_print`, which will pretty print the JSON with a 2-space indent to make it more human-readable, and `sort_keys`, which will sort the keys of the JSON object, ensuring that the resulting string is consistent for the same input.
If you need to generate JSON that will be used by a parser that lacks support for Unicode characters, you can add `ensure_ascii=True` to have `to_json` generate Unicode escape sequences in strings.
The `from_json` filter operates similarly, but in the other direction, de-serializing a JSON string back into an object.
### To/From JSON examples
In this example, the special character '°' will be automatically escaped in order to produce valid JSON. The difference between the stringified object and the actual JSON is evident.
### To/From JSON examples
#### Template
@ -670,7 +673,7 @@ In this example, the special character '°' will be automatically escaped in ord
```text
{% set temp = {'temperature': 25, 'unit': '°C'} %}
stringified object: {{ temp }}
object|to_json: {{ temp|to_json(ensure_ascii=False) }}
object|to_json: {{ temp|to_json(sort_keys=True) }}
```
{% endraw %}
@ -681,7 +684,7 @@ object|to_json: {{ temp|to_json(ensure_ascii=False) }}
```text
stringified object: {'temperature': 25, 'unit': '°C'}
object|to_json: {"temperature": 25, "unit": "\u00b0C"}
object|to_json: {"temperature": 25, "unit": "°C"}
```
{% endraw %}
@ -693,7 +696,7 @@ Conversely, `from_json` can be used to de-serialize a JSON string back into an o
{% raw %}
```text
{% set temp = '{"temperature": 25, "unit": "\u00b0C"}'|from_json %}
{% set temp = '{"temperature": 25, "unit": "°C"}'|from_json %}
The temperature is {{ temp.temperature }}{{ temp.unit }}
```

View File

@ -29,3 +29,6 @@ We have worked with creator [Marcel Zuidwijk](https://www.zuidwijk.com) to devel
![Photo of the AI-on-the-edge-device Workflow](/images/docs/energy/ai-on-the-edge-device.jpg)
#### Read the Gas Meter using a magnetometer
[Diaphragm gas meters](https://en.wikipedia.org/wiki/Gas_meter#Diaphragm/bellows_meters) are the most common type of gas meter, and their movement can frequently be observed with a magnetometer. The [QMC5883L](https://esphome.io/components/sensor/qmc5883l.html) is a common and inexpensive option that ESPHome supports. Many posts on the forums of users having luck with this method, such as [this one](https://community.home-assistant.io/t/water-gas-meter-monitoring-via-magnetometer-sine-wave-to-pulse-issue/245904).

View File

@ -17,17 +17,8 @@ Depending on what protocols you use at home, you can use Zigbee, Z-Wave or Wi-Fi
Smart relays sit behind your "normal" switches and make them smart. It allows you to control the devices via Home Assistant and via the connected buttons/switches.
{% comment %}
We recommend the Shelly brand because they have a local API that updates Home Assistant as soon as something happens and it has a high quality integration:
- [Shelly 1PM](https://shop.shelly.cloud/shelly-1pm-wifi-smart-home-automation-1?tracking=A7FsiPIfUWsFpnfKHa8SRyUYLXjr2hPq)
- [Shelly 2.5](https://shop.shelly.cloud/shelly-2.5-ce-ul-wifi-smart-home-automation?tracking=A7FsiPIfUWsFpnfKHa8SRyUYLXjr2hPq)
{% endcomment %}
## Devices with power (W) sensors
Some smart devices, such as air conditioning, boilers, and others, may provide a power sensor, measured in Watts. You can use the [Integration (Riemann sum integral) integration](/integrations/integration/#energy) to calculate the energy your device is using. You can then use the energy sensor in the Energy Dashboard, as individual devices.
<img src='/images/docs/energy/devices.png' alt='Graphic showing energy flowing from the home to individual devices.' style='border: 0;box-shadow: none; display: block; max-height: 400px; margin: 0 auto;'>
_Disclaimer: Some links on this page are affiliate links._

View File

@ -3,23 +3,27 @@ title: "Scenes Editor"
description: "Instructions on how to use the scenes editor."
---
In Home Assistant 0.102 we introduced the first version of our scene editor. If you just created a new configuration with Home Assistant, then you're all set! Go to the UI and enjoy.
From the UI choose **Settings** which is located in the sidebar, then click on **Automations & Scenes** to go to the scene editor. Press the **Add Scene** button in the lower right corner to get started.
Choose a meaningful name for your scene.
<p class='img'>
<img src='/images/docs/scenes/editor.png' />
</p>
![Scene editor](/images/docs/scenes/editor.png)
Select all the devices (or entities when advanced mode is enabled on your user profile) you want to include in your scene.
Select all the {% term devices %} (or {% term entities %} when advanced mode is enabled on your user profile) you want to include in your scene.
The state of your devices will be saved, so it can be restored when you are finished creating your scene.
Set the state of the devices to how you want them to be in your scene, this can be done by clicking on it and edit the state from the popup, or any other method that changes the state.
On the moment you save the scene, all the states of your devices are stored in the scene.
When you leave the editor the states of the devices are restored to the state from before you started editing.
The menu on the top-right has options to **Duplicate scene** and **Delete scene**.
A scene can be called in {% term automation %} action and {% term scripts %} using a turn on scene {% term service %}:
```yaml
service: scene.turn_on
target:
entity_id: scene.my_unique_id
```
## Updating your configuration to use the editor
First, check that you have activated the configuration editor.

View File

@ -761,7 +761,7 @@ on each other and order doesn't matter. For those cases, the `parallel` action
can be used to run the actions in the sequence in parallel, meaning all
the actions are started at the same time.
The following example shows sending messages out at the time (in parallel):
The following example shows sending messages out at the same time (in parallel):
```yaml
automation:
@ -779,7 +779,7 @@ automation:
message: "These messages are sent at the same time!"
```
It is also possible to run a group of actions sequantially inside the parallel
It is also possible to run a group of actions sequentially inside the parallel
actions. The example below demonstrates that:
```yaml

View File

@ -120,3 +120,18 @@ You should also check the README for details on the overlays. You might find it
If you've installed the Z-Wave.Me Z-Way software. In order to use Z-Wave JS instead of Z-Way, you'll need to ensure you disable it before you install Home Assistant, or you won't be able to access the board. Do this with `sudo /etc/init.d/z-way-server stop; sudo update-rc.d z-way-server disable`. Alternatively, you could use the [Z-Wave.Me](/integrations/zwave_me) integration.
</div>
#### Setting up a Raspberry Pi Z-Wave module on Home Assistant Yellow
This procedure has been tested with the following modules:
* Aeotec Z-Pi 7 Raspberry Pi HAT/Shield
* Z-Wave.Me RaZberry 7
* Z-Wave.Me RaZberry 7 Pro
1. Make sure the module is properly seated on the Home Assistant Yellow.
![Aeotec Z-Pi 7 on Home Assistant Yellow](/images/docs/z-wave/zpi-7-yellow.jpg).
1. Carefully [close the case](https://yellow.home-assistant.io/guides/add-ssd-existing-installation/#reassembling-top-part) and power up Home Assistant Yellow.
1. Follow the procedure on [setting up a Z-Wave JS server](/integrations/zwave_js/#setting-up-a-z-wave-js-server).
1. In step 2, follow the manual setup steps to install the Z-Wave integration.
1. in Step 4, you will be prompted to choose a **Device path**. Choose **ttyAMA0**.

View File

@ -0,0 +1,6 @@
---
title: "Configuration.yaml by ntalekt"
description: "Unifi, ZHA, Pentair, Tuya, Tasmota"
ha_category: Example configuration.yaml
ha_external_link: https://github.com/ntalekt/homeassistant
---

View File

@ -46,6 +46,13 @@
<li>{% active_link /docs/assist/apple/ Assist for Apple devices %}</li>
<li>{% active_link /docs/assist/builtin_sentences/ Built-in sentences %}</li>
<li>{% active_link /docs/assist/custom_sentences/ Custom sentences %}</li>
<li>{% active_link /docs/assist/voice_remote_expose_devices/ Exposing devices to your voice assistant %}</li>
<li>{% active_link /docs/assist/voice_remote_local_assistant/ Configuring a local assistant %}</li>
<li>{% active_link /docs/assist/troubleshooting/ Troubleshooting Assist %}</li>
<li>{% active_link /docs/assist/voice_remote_local_assistant/ Configuring a local assistant %}</li>
<li>{% active_link /projects/worlds-most-private-voice-assistant/ Tutorial: World's most private voice assistant %}</li>
<li>{% active_link /projects/thirteen-usd-voice-remote/ Tutorial: $13 voice remote %}
</li>
</ul>
</li>
<li>
@ -177,6 +184,16 @@
<li>{% active_link /integrations/mqtt/#logging Logging %}</li>
</ul>
</li>
<li>
<b>Hardware</b>
<ul>
<li>
<a href="https://yellow.home-assistant.io/">Home Assistant Yellow</a>
</li>
<li>
<a href="https://skyconnect.home-assistant.io/">Home Assistant SkyConnect</a>
</ul>
</li>
</ul>
</div>
</section>

View File

@ -5,6 +5,7 @@
<li>{% active_link /installation/ Installation %}</li>
<li>{% active_link /getting-started/onboarding/ Onboarding %}</li>
<li>{% active_link /getting-started/concepts-terminology/ Concepts and terminology %}</li>
<li>{% active_link /getting-started/integration/ Integration %}</li>
<li>{% active_link /getting-started/automation/ Automation %}</li>
<li>
{% active_link /getting-started/presence-detection/ Presence detection

View File

@ -11,6 +11,7 @@ To flash your eMMC using Petitboot and OTG-USB, you will need the following item
- HDMI cable and monitor
- USB keyboard
- USB 2.0 to micro-USB cable
- If your board came in a Home Assistant Blue: No.2 hex key to open the case
#### Enabling SPI boot mode
@ -45,13 +46,13 @@ You can safely ignore this message and proceed with the installation
</div>
2. Use the following command at the console to confirm the storage device node:
1. Use the following command at the console to confirm the storage device node:
```bash
ls /dev/mmc*
```
3. Set the storage device on the ODROID-N2+ as a mass storage device using the `ums` command (USB Mass storage mode).
1. Set the storage device on the ODROID-N2+ as a mass storage device using the `ums` command (USB Mass storage mode).
This will configure the ODROID-N2+ and OTG to act as a memory card reader:
```bash
@ -60,10 +61,19 @@ This will configure the ODROID-N2+ and OTG to act as a memory card reader:
#### Flashing Home Assistant
Connect the ODROID-N2+ to your PC via the micro-USB port at the front of the ODROID-N2+. When the ODROID-N2 is recognized as a USB connected storage device, you can flash the eMMC with [Etcher](https://www.balena.io/etcher/) using the latest stable version of Home Assistant OS for the [ODROID-N2+](https://github.com/home-assistant/operating-system/releases/download/{{site.data.version_data.hassos['odroid-n2']}}/haos_odroid-n2-{{site.data.version_data.hassos['odroid-n2']}}.img.xz) (haos_odroid-n2-{{site.data.version_data.hassos['odroid-n2']}}.img.xz).
1. Connect the ODROID-N2+ to your PC via the micro-USB port at the front of the ODROID-N2+.
1. When the ODROID-N2 is recognized as a USB connected storage device, you can flash the eMMC with [Etcher](https://www.balena.io/etcher/).
* Use the latest stable version of Home Assistant OS for the [ODROID-N2+](https://github.com/home-assistant/operating-system/releases/download/{{site.data.version_data.hassos['odroid-n2']}}/haos_odroid-n2-{{site.data.version_data.hassos['odroid-n2']}}.img.xz) (haos_odroid-n2-{{site.data.version_data.hassos['odroid-n2']}}.img.xz).
When the flash process is complete, disconnect the ODROID-N2+ from your PC and remove the power cable. Remove the USB and HDMI cable, and make sure to toggle the boot mode switch back to MMC.
1. When the flash process is complete, disconnect the ODROID-N2+ from your PC.
* Remove the power cable.
* Remove the USB and HDMI cables.
* Make sure to toggle the boot mode switch back to MMC.
Once it is back in its case, connect your ODROID-N2+ to your network with an Ethernet cable and plug in power.
1. Put the ODROID back in its case.
1. Connect your ODROID-N2+ to your network with an Ethernet cable and plug in power.
If your router supports mDNS, you will be able to reach your installation on `http://homeassistant.local:8123`. If your network doesnt support mDNS, youll have to use the IP address of your ODROID-N2+ instead of `homeassistant.local`. For example, `http://192.168.0.9:8123`. You should be able to find the IP address of your ODROID-N2+ from the admin interface of your router.
1. If your router supports mDNS, you can reach your installation at `http://homeassistant.local:8123`.
* If your network doesnt support mDNS, youll have to use the IP address of your ODROID-N2+ instead of `homeassistant.local`. For example, `http://192.168.0.9:8123`.
* You should be able to find the IP address of your ODROID-N2+ from the admin interface of your router.
1. Continue with [onboarding](/getting-started/onboarding/).

View File

@ -11,7 +11,7 @@ This guide assumes that you already have an operating system setup and a contain
If you are using Docker then you need to be on at least version 19.03.9, ideally an even higher version, and `libseccomp` 2.4.2 or newer.
</div>
### Platform Installation
### Platform installation
Installation with Docker is straightforward. Adjust the following command so that:
@ -32,10 +32,10 @@ Once the Home Assistant Container is running Home Assistant should be accessible
### Restart Home Assistant
If you change the configuration you have to restart the server. To do that you have 3 options.
If you change the configuration, you have to restart the server. To do that you have 3 options.
1. In your Home Assistant UI go to the **Settings** -> **System** and click the "Restart" button.
2. You can go to the **Developer Tools** -> **Services**, select the service `homeassistant.restart` and click "Call Service".
1. In your Home Assistant UI, go to the **Settings** > **System** and click the **Restart** button.
2. You can go to the **Developer Tools** > **Services**, select the service `homeassistant.restart` and select **Call Service**.
3. Restart it from a terminal.
{% tabbed_block %}
@ -56,7 +56,7 @@ If you change the configuration you have to restart the server. To do that you h
{% endtabbed_block %}
### Docker Compose
### Docker compose
<div class="note tip">
@ -74,11 +74,11 @@ Start it by running:
docker compose up -d
```
Once the Home Assistant Container is running Home Assistant should be accessible using `http://<host>:8123` (replace <host> with the hostname or IP of the system). You can continue with onboarding.
Once the Home Assistant Container is running, Home Assistant should be accessible using `http://<host>:8123` (replace <host> with the hostname or IP of the system). You can continue with onboarding.
{% include getting-started/next_step.html step="Onboarding" link="/getting-started/onboarding/" %}
### Exposing Devices
### Exposing devices
In order to use Zigbee or other integrations that require access to devices, you need to map the appropriate device into the container. Ensure the user that is running the container has the correct privileges to access the `/dev/tty*` file, then add the device mapping to your container instructions:

View File

@ -99,6 +99,6 @@ If this address doesn't work you may also try `http://localhost:8123` or `http:/
<div class='note'>
When you run the `hass` command for the first time, it will download, install and cache the necessary libraries/dependencies. This procedure may take anywhere between 5 to 10 minutes. During that time, you may get "site cannot be reached" error when accessing the web interface. This will only happen for the first time, and subsequent restarts will be much faster.
When you run the `hass` command for the first time, it will download, install and cache the necessary libraries/dependencies. This procedure may take anywhere between 5 to 10 minutes. During that time, you may get a **site cannot be reached** error when accessing the web interface. This will only happen the first time. Subsequent restarts will be much faster.
</div>

View File

@ -6,25 +6,11 @@
Follow this guide if you want to get started with Home Assistant easily or if you have little to no Linux experience.
{% if page.installation_type == 'raspberrypi' %}
### Suggested Hardware
We will need a few things to get started with installing Home Assistant. Links below lead to Amazon US. If youre not in the US, you should be able to find these items in web stores in your country.
- [Raspberry Pi 4](https://amzn.to/2S0Gcl1) (Raspberry Pi 3 is ok too, if you have one laying around). Raspberry Pi are currently hard to come by, use [RPilocator](https://rpilocator.com/?cat=PI4) to find official distributors with stock.
- [Power Supply for Raspberry Pi 4](https://amzn.to/2ReZ2Vq) or [Power Supply for Raspberry Pi 3](https://amzn.to/2R8yG7h)
- [Micro SD Card](https://amzn.to/2X0Z2di). Ideally get one that is [Application Class 2](https://www.sdcard.org/developers/overview/application/index.html) as they handle small I/O much more consistently than cards not optimized to host applications. A 32 GB or bigger card is recommended.
- SD Card reader. This is already part of most laptops, but you can purchase a [standalone USB adapter](https://amzn.to/2WWxntY) if you don't have one. The brand doesn't matter, just pick the cheapest.
- [Ethernet cable](https://amzn.com/dp/B00N2VISLW). Required for installation. After installation, Home Assistant can work with Wi-Fi, but an Ethernet connection is more reliable and highly recommended.
{% endif %}
{% if page.installation_type == 'odroid' %}
### Suggested Hardware
### Suggested hardware
We will need a few things to get started with installing Home Assistant. Links below lead to Ameridroid. If youre not in the US, you should be able to find these items in web stores in your country.
We will need a few things to get started with installing Home Assistant. The links below lead to Ameridroid. If youre not in the US, you should be able to find these items in web stores in your country.
To get started we suggest the ODROID N2+, it's the most powerful ODROID. It's fast and with built-in eMMC one of the best boards to run Home Assistant. It's also the board that powers our [Home Assistant Blue](/blue/).
@ -34,15 +20,15 @@ To get started we suggest the ODROID N2+, it's the most powerful ODROID. It's fa
- [eMMC Module](https://ameridroid.com/products/emmc-module-n2-linux-red-dot?ref=eeb6nfw07e)
- [Case](https://ameridroid.com/products/odroid-n2-case?ref=eeb6nfw07e)
If unavailable, we also recommend the [ODROID C4](https://ameridroid.com/products/odroid-c4?ref=eeb6nfw07e) or [ODROID XU4](https://ameridroid.com/products/odroid-xu4?ref=eeb6nfw07e).
If unavailable, we also recommend the [ODROID C4](https://ameridroid.com/products/odroid-c4?ref=eeb6nfw07e) or [ODROID M1](https://ameridroid.com/products/odroid-M1?ref=eeb6nfw07e).
{% endif %}
{% if page.installation_type == 'tinkerboard' %}
### Suggested Hardware
### Suggested hardware
We will need a few things to get started with installing Home Assistant. Links below lead to Amazon US. If youre not in the US, you should be able to find it in web stores in your country.
We will need a few things to get started with installing Home Assistant. The links below lead to Amazon US. If youre not in the US, you should be able to find it in web stores in your country.
- [Asus Tinkerboard S](https://amzn.to/3fFIcbI)
@ -111,13 +97,15 @@ sudo apt install libfuse2
1. Attach the Home Assistant boot medium ({{site.installation.types[page.installation_type].installation_media}}) to your computer.
{% if page.installation_type == 'odroid' %}
If you are using ODROID M1, note that booting from NVMe is not supported. If you want to boot from eMMC, [update the firmware](https://github.com/home-assistant/operating-system/blob/dev/Documentation/boards/hardkernel/odroid-m1.md) before installing the image.
If you are using a [Home Assistant Blue](/blue) or ODROID N2+, you can [attach your device directly](/common-tasks/os/#flashing-an-odroid-n2).
{% endif %}
2. Download and start <a href="https://www.balena.io/etcher" target="_blank">Balena Etcher</a>. You may need to run it with administrator privileges on Windows.
3. Select "Flash from URL".
1. Download and start <a href="https://www.balena.io/etcher" target="_blank">Balena Etcher</a>. You may need to run it with administrator privileges on Windows.
1. Select **Flash from URL**.
![Screenshot of the Etcher software showing flash from URL selected.](/images/installation/etcher1.png)
4. Copy the URL for the {{site.installation.types[page.installation_type].board}} image which is:
1. Copy the URL for the image. If there are multiple links below, make sure to select the correct link for your version of {{site.installation.types[page.installation_type].board}}:
{% if site.installation.types[page.installation_type].variants.size > 1 %}
{% tabbed_block %}
{% for variant in site.installation.types[page.installation_type].variants %}
@ -148,15 +136,15 @@ sudo apt install libfuse2
_Select and copy the URL or use the "copy" button that appear when you hover it._
1. Paste the URL for the {{site.installation.types[page.installation_type].board}} image into Balena Etcher and click "OK"
5. Paste the URL for the {{site.installation.types[page.installation_type].board}} image into Balena Etcher and select **OK**.
![Screenshot of the Etcher software showing the URL bar with a URL pasted in.](/images/installation/etcher2.png)
1. When Balena Etcher has downloaded the image, click "Select target"
1. When Balena Etcher has downloaded the image, click **Select target**.
![Screenshot of the Etcher software showing the select target button highlighted.](/images/installation/etcher3.png)
1. Select the boot medium ({{site.installation.types[page.installation_type].installation_media}}) you want to use for your installation
1. Select the boot medium ({{site.installation.types[page.installation_type].installation_media}}) you want to use for your installation.
![Screenshot of the Etcher software showing teh targets available.](/images/installation/etcher4.png)
1. Click on "Flash!" to start writing the image
1. Select **Flash!** to start writing the image.
![Screenshot of the Etcher software showing the Flash button highlighted.](/images/installation/etcher5.png)
1. When Balena Etcher has finished writing the image you will see a confirmation
1. When Balena Etcher has finished writing the image, you will see a confirmation.
![Screenshot of the Etcher software showing that the installation has completed.](/images/installation/etcher6.png)
### Start up your {{site.installation.types[page.installation_type].board}}
@ -168,7 +156,7 @@ _Select and copy the URL or use the "copy" button that appear when you hover it.
- If you used a live operating system (e.g. Ubuntu), shut it down and remove the live operating system USB device.
1. Plug in an Ethernet cable that is connected to the network.
2. Power the system on. If you have a screen connected to the {{site.installation.types[page.installation_type].board}} system, after a minute or so the Home Assistant welcome banner will appear in the console.
1. Power the system on. If you have a screen connected to the {{site.installation.types[page.installation_type].board}} system, after a minute or so the Home Assistant welcome banner will appear in the console.
<div class="note">
@ -223,9 +211,11 @@ If you are running an older Windows version or have a stricter network configura
- [Hyper-V][vhdx] (.vhdx)
{% endif %}
Follow this guide if you already are running a supported virtual machine hypervisor. If you are not familiar with virtual machines we recommend installation Home Assistant OS directly on a [Raspberry Pi](/installation/raspberrypi) or an [ODROID](/installation/odroid).
After downloading, decompress the image. If the image comes in a ZIP file, for example, unzip it.
### Create the Virtual Machine
Follow this guide if you already are running a supported virtual machine hypervisor. If you are not familiar with virtual machines, we recommend installing Home Assistant OS directly on a [Home Assistant Yellow](/installation/yellow), a [Raspberry Pi](/installation/raspberrypi), or an [ODROID](/installation/odroid).
### Create the virtual machine
Load the appliance image into your virtual machine hypervisor. (Note: You are free to assign as much resources as you wish to the VM, please assign enough based on your add-on needs).
@ -243,19 +233,19 @@ _All these can be extended if your usage calls for more resources._
- title: VirtualBox
content: |
1. Create a new virtual machine
2. Select Type "Linux" and Version "Linux 2.6 / 3.x / 4.x (64-bit)"
3. Select "Use an existing virtual hard disk file", select the unzipped VDI file from above
4. Edit the "Settings" of the VM and go "System" then "Motherboard" and select "Enable EFI"
5. Then go to "Network" "Adapter 1" choose "Bridged Adapter" and choose your Network adapter
1. Create a new virtual machine.
1. Select type **Linux** and version **Linux 2.6 / 3.x / 4.x (64-bit)**.
1. Select **Use an existing virtual hard disk file**, select the unzipped VDI file from above.
1. Edit the **Settings** of the VM and go to **System** > **Motherboard**. Select **Enable EFI**.
1. Then go to **Network** > **Adapter 1**. Choose **Bridged Adapter** and choose your network adapter.
<div class="note warning">
Please keep in mind that the bridged adapter only functions over a hardwired Ethernet connection.
Using Wi-Fi on your VirtualBox host is unsupported.
</div>
6. Then go to "Audio" and choose "Intel HD Audio" as Audio Controller.
6. Then go to **Audio** and choose **Intel HD Audio** as audio controller.
<div class="note info">
By default VirtualBox does not free up unused disk space. To automatically shrink the vdi disk image
By default, VirtualBox does not free up unused disk space. To automatically shrink the vdi disk image
the `discard` option must be enabled:
```bash
VBoxManage storageattach <VM name> --storagectl "SATA" --port 0 --device 0 --nonrotational on --discard on
@ -265,16 +255,16 @@ _All these can be extended if your usage calls for more resources._
- title: KVM (virt-manager)
content: |
1. Create a new virtual machine in `virt-manager`
2. Select "Import existing disk image", provide the path to the QCOW2 image above
3. Choose "Generic Default" for the operating system
4. Check the box for "Customize configuration before install"
5. Select your bridge under "Network Selection"
6. Under customization select "Overview" -> "Firmware" -> "UEFI x86_64: ...". Make sure to select a non-secureboot version of OVMF (does not contain the word `secure`, `secboot`, etc.), e.g., `/usr/share/edk2/ovmf/OVMF_CODE.fd`.
7. Click "Add Hardware" (bottom left), and select "Channel"
8. Select device type: "unix"
9. Select name: "org.qemu.guest_agent.0"
10. Finally select "Begin Installation" (upper left corner)
1. Create a new virtual machine in `virt-manager`.
1 Select **Import existing disk image**, provide the path to the QCOW2 image above.
1. Choose **Generic Default** for the operating system.
1. Check the box for **Customize configuration before install**.
1. Under **Network Selection**, select your bridge.
6. Under customization select **Overview** > **Firmware** > **UEFI x86_64: ...**. Make sure to select a non-secureboot version of OVMF (does not contain the word `secure`, `secboot`, etc.), e.g., `/usr/share/edk2/ovmf/OVMF_CODE.fd`.
1. Click **Add Hardware** (bottom left), and select **Channel**.
1. Select device type: **unix**.
1. Select name: **org.qemu.guest_agent.0**.
1. Finally, select **Begin Installation** (upper left corner).
- title: KVM (virt-install)
content: |
@ -309,13 +299,13 @@ _All these can be extended if your usage calls for more resources._
- title: Vmware Workstation
content: |
1. Create a new virtual machine
2. Select “Custom”, make it compatible with the default of Workstation and ESX
3. Choose “I will install the operating system later”, select “Linux” -> “Other Linux 5.x or later kernel 64-bit”
4. Select “Use Bridged Networking”
5. Select “Use an existing virtual disk” and select the VMDK file above,
1. Create a new virtual machine.
1. Select **Custom**, make it compatible with the default of Workstation and ESX.
1. Choose **I will install the operating system later**, select **Linux** > **Other Linux 5.x or later kernel 64-bit**.
1. Select **Use Bridged Networking**.
1. Select **Use an existing virtual disk** and select the VMDK file above.
After creation of VM go to “Settings” and “Options” then “Advanced” and select “Firmware type” to “UEFI”.
After the VM has been created, go to **Settings** > **Options** > **Advanced**. Under **Firmware type** select **UEFI**.
{% elsif page.installation_type == 'alternative' %}
@ -330,25 +320,25 @@ _All these can be extended if your usage calls for more resources._
Hyper-V does not have USB support
</div>
1. Create a new virtual machine
2. Select “Generation 2”
3. Select “Connection -> “Your Virtual Switch that is bridged”
4. Select “Use an existing virtual hard disk” and select the VHDX file from above
1. Create a new virtual machine.
1. Select **Generation 2**.
1. Select **Connection** > **Your Virtual Switch that is bridged**.
1. Select **Use an existing virtual hard disk** and select the VHDX file from above.
After creation go to “Settings” -> “Security” and deselect “Enable Secure Boot”.
After creation, go to **Settings** > **Security** and deselect **Enable Secure Boot**.
{% endif %}
{% endtabbed_block %}
### Start up your Virtual Machine
### Start up your virtual machine
1. Start the Virtual Machine
2. Observe the boot process of Home Assistant Operating System
3. Once completed you will be able to reach Home Assistant on <a href="http://homeassistant.local:8123" target="_blank">homeassistant.local:8123</a>. If you are running an older Windows version or have a stricter network configuration, you might need to access Home Assistant at <a href="http://homeassistant:8123" target="_blank">homeassistant:8123</a> or `http://X.X.X.X:8123` (replace X.X.X.X with your {{site.installation.types[page.installation_type].board}}s IP address).
1. Start the virtual machine.
1. Observe the boot process of the Home Assistant Operating System.
1. Once completed, you will be able to reach Home Assistant on <a href="http://homeassistant.local:8123" target="_blank">homeassistant.local:8123</a>. If you are running an older Windows version or have a stricter network configuration, you might need to access Home Assistant at <a href="http://homeassistant:8123" target="_blank">homeassistant:8123</a> or `http://X.X.X.X:8123` (replace X.X.X.X with your {{site.installation.types[page.installation_type].board}}s IP address).
{% endif %}
With the Home Assistant Operating System installed and accessible you can continue with onboarding.
With the Home Assistant Operating System installed and accessible, you can continue with onboarding.
{% include getting-started/next_step.html step="Onboarding" link="/getting-started/onboarding/" %}

View File

@ -10,8 +10,7 @@ interface, by using this My button:
{% if include.discovery or page.ha_dhcp or page.ha_homekit or page.ha_ssdp or page.ha_zeroconf or page.ha_mqtt %}
{{ name }} can be auto-discovered by Home Assistant. If an instance was found,
it will be shown as _"Discovered"_, which you can select to set it up right
away.
it will be shown as **Discovered**. You can then set it up right away.
{% endif %}
{% details "Manual configuration steps" %}
@ -24,17 +23,17 @@ manually:
{% endif %}
- Browse to your Home Assistant instance.
- In the sidebar click on _**{% my config icon %}**_.
- From the configuration menu select: _**{% my integrations %}**_.
- In the sidebar, select **{% my config icon %}**.
- From the configuration menu, select **{% my integrations %}**.
{% if page.ha_integration_type == 'helper' %}
- In top of the screen click the tab: _**{% my helpers %}**_.
- In the bottom right, click on the
_**{% my config_flow_start icon domain=domain title="Create helper" %}**_ button.
- In top of the screen, select the tab: **{% my helpers %}**.
- In the bottom right, select the
**{% my config_flow_start icon domain=domain title="Create helper" %}** button.
{% else %}
- In the bottom right, click on the
_**{% my config_flow_start icon domain=domain %}**_ button.
- In the bottom right, select the
**{% my config_flow_start icon domain=domain %}** button.
{% endif %}
- From the list, search and select _**"{{ name }}"**_.
- Follow the instruction on screen to complete the set up.
- From the list, search and select **{{ name }}**.
- Follow the instructions on screen to complete the setup.
{% enddetails %}

View File

@ -15,6 +15,8 @@
{% include asides/getting_started_navigation.html %}
{% elsif root == 'docs' %}
{% include asides/docs_navigation.html %}
{% elsif root == 'projects' %}
{% include asides/docs_navigation.html %}
{% elsif root == 'faq' %}
{% include asides/faq_navigation.html %}
{% elsif root == 'hassio' or root == 'addons' %}

View File

@ -20,7 +20,7 @@ ha_platforms:
ha_integration_type: integration
---
The ADS (automation device specification) describes a device-independent and fieldbus independent interface for communication between [Beckhoff](https://www.beckhoff.com/) automation devices running [TwinCAT](https://www.beckhoff.hu/english.asp?twincat/default.htm) and other devices implementing this interface.
The ADS (automation device specification) describes a device-independent and fieldbus independent interface for communication between [Beckhoff](https://www.beckhoff.com/) automation devices running [TwinCAT](https://www.beckhoff.com/en-en/products/automation/twincat/) and other devices implementing this interface.
There is currently support for the following device types within Home Assistant:

View File

@ -36,11 +36,19 @@ The wall-mounted Android tablet running the [MyPlace](https://play.google.com/st
### Climate
The integration will create a climate entity for each air conditioning system found and for each zone that is temperature-controlled.
The integration will create a climate entity for each air conditioning system found and for each zone that is temperature-controlled. The main climate entity will change its supported features and modes based on the [MyComfort](https://www.advantageair.com.au/wp-content/uploads/2019/10/MyComfort.pdf) temperature mode currently set.
- MyZone (default) - Use the MyZone select platform to pick which zone will be used for temperature control. Setting this to "Inactive" will use the return air vent temperature. e-zone systems do not support any MyComfort temperature modes, so will always be in the MyZone preset with MyZone set as "Inactive".
- MyTemp - Use the main climate entity to change between cool, heat, and off. Use the zone climate entities to set the desired temperature in each zone.
- MyAuto - Uses the average temperature of all zones for temperature control. When set to the Heat/Cool mode, you can adjust the heating and cooling target temperatures separately, and the MyAir system will automatically switch between heating and cooling as required.
If you change MyComfort mode, you will need to restart Home Assistant or reload the integration.
### Cover
The integration will create a cover entity for each zone that is not temperature controlled, allowing you to adjust the opening level manually from 0% to 100% in 5% increments.
The integration will create a cover entity for each air conditioning zone that is not temperature controlled, allowing you to adjust the opening level manually from 0% to 100% in 5% increments.
With MyPlace, any blinds and/or garage doors will be created as cover entities.
### Sensor
@ -53,23 +61,25 @@ The integration will create sensor entities for a variety of aspects:
### Binary Sensor
The `advantage_air` binary sensor platform will create a binary sensor for each zone that has a motion sensor.
The integration will create a binary sensor for each zone that has a motion sensor.
### Switch
The `advantage_air` switch platform will create a switch entity to toggle fresh air mode, if it is supported.
The integration will create a switch entity to toggle air conditioning fresh air mode, if it is supported.
With MyPlace, any relays will be created as switch entities.
### Select
The `advantage_air` select platform allows you to change the zone used for the "MyZone" feature.
The MyZone select entity that allows you to change the zone used for the "MyZone" feature. Set this to "Inactive" to use the return air vent temperature.
### Update
The `advantage_air` update platform shows if the controller app requires an update.
The update platform shows if the controller app requires an update.
### Light
The `advantage_air` light platform will create a light entity for each light in MyLights tab of the MyPlace app.
With MyLights or MyPlace, light entities will be created for each light.
## Services

View File

@ -98,7 +98,7 @@ code_trigger_required:
command_template:
description: "The [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) used for the command payload. Available variables: `action` and `code`."
required: false
type: string
type: template
default: action
command_topic:
description: The MQTT topic to publish commands to change the alarm state.

View File

@ -289,7 +289,7 @@ elements:
tap_action:
action: call-service
service: amcrest.ptz_control
data:
service_data:
entity_id: camera.lakehouse
movement: up
- type: icon
@ -301,7 +301,7 @@ elements:
tap_action:
action: call-service
service: amcrest.ptz_control
data:
service_data:
entity_id: camera.lakehouse
movement: down
- type: icon
@ -313,7 +313,7 @@ elements:
tap_action:
action: call-service
service: amcrest.ptz_control
data:
service_data:
entity_id: camera.lakehouse
movement: left
- type: icon
@ -325,7 +325,7 @@ elements:
tap_action:
action: call-service
service: amcrest.ptz_control
data:
service_data:
entity_id: camera.lakehouse
movement: right
- type: icon
@ -337,7 +337,7 @@ elements:
tap_action:
action: call-service
service: amcrest.ptz_control
data:
service_data:
entity_id: camera.lakehouse
movement: left_up
- type: icon
@ -349,7 +349,7 @@ elements:
tap_action:
action: call-service
service: amcrest.ptz_control
data:
service_data:
entity_id: camera.lakehouse
movement: right_up
- type: icon
@ -361,7 +361,7 @@ elements:
tap_action:
action: call-service
service: amcrest.ptz_control
data:
service_data:
entity_id: camera.lakehouse
movement: left_down
- type: icon
@ -373,7 +373,7 @@ elements:
tap_action:
action: call-service
service: amcrest.ptz_control
data:
service_data:
entity_id: camera.lakehouse
movement: right_down
- type: icon
@ -385,7 +385,7 @@ elements:
tap_action:
action: call-service
service: amcrest.ptz_control
data:
service_data:
entity_id: camera.lakehouse
movement: zoom_in
hold_action:

View File

@ -1,6 +1,6 @@
---
title: Android TV
description: Instructions on how to integrate Android TV and Fire TV devices into Home Assistant.
title: Android Debug Bridge
description: Instructions on how to integrate Android and Fire TV devices into Home Assistant.
ha_category:
- Media Player
ha_release: 0.7.6
@ -16,7 +16,7 @@ ha_platforms:
ha_integration_type: device
---
The `androidtv` platform allows you to control an Android TV device or [Amazon Fire TV](https://www.amazon.com/b/?node=8521791011) device.
The Android Debug Bridge integration allows you to control an Android device or [Amazon Fire TV](https://www.amazon.com/b/?node=8521791011) device.
<div class='note'>
@ -26,7 +26,7 @@ When setting up this integration, it is recommended that you do NOT use an ADB s
## Device preparation
To set up your device, you will need to find its IP address and enable ADB debugging. For Android TV devices, please consult the documentation for your device.
To set up your device, you will need to find its IP address and enable ADB debugging. For Android devices, please consult the documentation for your device.
For Fire TV devices, the instructions are as follows:
@ -62,11 +62,11 @@ Configure State Detection Rules:
## ADB Setup
This integration works by sending ADB commands to your Android TV / Fire TV device. There are two ways to accomplish this.
This integration works by sending ADB commands to your Android / Fire TV device. There are two ways to accomplish this.
<div class='note'>
When connecting to your device for the first time, a dialog will appear on your Android TV / Fire TV asking you to approve the connection. Check the box that says "always allow connections from this device" and hit OK.
When connecting to your device for the first time, a dialog will appear on your Android / Fire TV asking you to approve the connection. Check the box that says "always allow connections from this device" and hit OK.
</div>
@ -84,7 +84,7 @@ Prior to Home Assistant 0.101, this approach did not work well for newer devices
### 2. ADB Server
The second option is to use an ADB server to connect to your Android TV and Fire TV devices.
The second option is to use an ADB server to connect to your Android and Fire TV devices.
<div class='note'>
@ -92,21 +92,21 @@ To configure ADB server on integration setup, you need to enable [advanced mode]
</div>
Using this approach, Home Assistant will send the ADB commands to the server, which will then send them to the Android TV / Fire TV device and report back to Home Assistant. To use this option, add the `adb_server_ip` option to your configuration. If you are running the server on the same machine as Home Assistant, you can use `127.0.0.1` for this value.
Using this approach, Home Assistant will send the ADB commands to the server, which will then send them to the Android / Fire TV device and report back to Home Assistant. To use this option, add the `adb_server_ip` option to your configuration. If you are running the server on the same machine as Home Assistant, you can use `127.0.0.1` for this value.
## ADB Troubleshooting
If the setup for your Android TV or Fire TV device fails, then there is probably an issue with your ADB connection. Here are some possible causes.
If the setup for your Android or Fire TV device fails, then there is probably an issue with your ADB connection. Here are some possible causes.
1. You have the wrong IP address for the device.
2. ADB is not enabled on your device.
3. You are already connected to the Android TV / Fire TV via ADB from another device. Only one device can be connected, so disconnect the other device, restart the Android TV / Fire TV (for good measure), and then restart Home Assistant.
3. You are already connected to the Android / Fire TV via ADB from another device. Only one device can be connected, so disconnect the other device, restart the Android / Fire TV (for good measure), and then restart Home Assistant.
4. You need to approve the ADB connection; see the note in the [ADB Setup](#adb-setup) section above.
5. Some Android TV devices (e.g., Philips TVs running Android TV) only accept the initial ADB connection request over their Wi-Fi interface. If you have the TV wired, you need to connect it to Wi-Fi and try the initial connection again. Once the authentication has been granted via Wi-Fi, you can connect to the TV over the wired interface as well.
5. Some Android devices (e.g., Philips TVs running Android TV) only accept the initial ADB connection request over their Wi-Fi interface. If you have the TV wired, you need to connect it to Wi-Fi and try the initial connection again. Once the authentication has been granted via Wi-Fi, you can connect to the TV over the wired interface as well.
6. If your device drops off WiFi, breaking the ADB connection and causing the entity to become unavailable in Home Assistant, you could install a wake lock utility (such as [Wakelock](https://github.com/d4rken/wakelock-revamp)) to prevent this from happening. Some users have reported this problem with Xiaomi Mi Box devices.
@ -138,11 +138,11 @@ stop_netflix:
### `androidtv.adb_command`
The service `androidtv.adb_command` allows you to send either keys or ADB shell commands to your Android TV / Fire TV device. If there is any output, it will be stored in the `'adb_response'` attribute (i.e., `state_attr('media_player.android_tv_living_room', 'adb_response')` in a template) and logged at the INFO level.
The service `androidtv.adb_command` allows you to send either keys or ADB shell commands to your Android / Fire TV device. If there is any output, it will be stored in the `'adb_response'` attribute (i.e., `state_attr('media_player.android_tv_living_room', 'adb_response')` in a template) and logged at the INFO level.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `entity_id` | no | Name(s) of Android TV / Fire TV entities.
| `entity_id` | no | Name(s) of Android / Fire TV entities.
| `command` | no | Either a key command or an ADB shell command.
In an [action](/getting-started/automation-action/) of your [automation setup](/getting-started/automation/) it could look like this:
@ -177,14 +177,14 @@ A list of various intents can be found [here](https://gist.github.com/mcfrojd/9e
### `androidtv.learn_sendevent` (for faster ADB commands)
When sending commands like UP, DOWN, HOME, etc. via ADB, the device can be slow to respond. The problem isn't ADB, but rather the Android command `input` that is used to perform those actions. A faster way to send these commands is using the Android `sendevent` command. The challenge is that these commands are device-specific. To assist users in learning commands for their device, the Android TV integration provides the `androidtv.learn_sendevent` service. Its usage is as follows:
When sending commands like UP, DOWN, HOME, etc. via ADB, the device can be slow to respond. The problem isn't ADB, but rather the Android command `input` that is used to perform those actions. A faster way to send these commands is using the Android `sendevent` command. The challenge is that these commands are device-specific. To assist users in learning commands for their device, the Android debug bridge integration provides the `androidtv.learn_sendevent` service. Its usage is as follows:
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `entity_id` | no | Name(s) of Android TV / Fire TV entities.
| `entity_id` | no | Name(s) of Android / Fire TV entities.
1. Call the `androidtv.learn_sendevent` service.
2. Within 8 seconds, hit a single button on your Android TV / Fire TV remote.
2. Within 8 seconds, hit a single button on your Android / Fire TV remote.
3. After 8 seconds, a persistent notification will appear that contains the equivalent command that can be sent via the `androidtv.adb_command` service. This command can also be found in the `adb_response` attribute of the media player in Home Assistant, and it will be logged at the INFO level.
As an example, a service call in a [script](/docs/scripts) could be changed from this:
@ -211,25 +211,25 @@ to this:
### `androidtv.download` and `androidtv.upload`
You can use the `androidtv.download` service to download a file from your Android TV / Fire TV device to your Home Assistant instance.
You can use the `androidtv.download` service to download a file from your Android / Fire TV device to your Home Assistant instance.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `entity_id` | no | Name of Android TV / Fire TV entity.
| `device_path` | no | The filepath on the Android TV / Fire TV device.
| `entity_id` | no | Name of Android / Fire TV entity.
| `device_path` | no | The filepath on the Android / Fire TV device.
| `local_path` | no | The filepath on your Home Assistant instance.
Similarly, you can use the `androidtv.upload` service to upload a file from Home Assistant instance to Android TV / Fire TV devices.
Similarly, you can use the `androidtv.upload` service to upload a file from Home Assistant instance to Android / Fire TV devices.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `entity_id` | no | Name(s) of Android TV / Fire TV entities.
| `device_path` | no | The filepath on the Android TV / Fire TV device.
| `entity_id` | no | Name(s) of Android / Fire TV entities.
| `device_path` | no | The filepath on the Android / Fire TV device.
| `local_path` | no | The filepath on your Home Assistant instance.
## Custom State Detection
The Android TV integration works by polling the Android TV / Fire TV device at a regular interval and collecting a handful of properties. Unfortunately, there is no standard API for determining the state of the device to which all apps adhere. Instead, the backend `androidtv` package uses three of the properties that it collects to determine the state: `audio_state`, `media_session_state`, and `wake_lock_size`. The correct logic for determining the state differs depending on the current app, and the backend `androidtv` package implements app-specific state detection logic for a handful of apps. Of course, it is not feasible to implement custom logic for each and every app in the `androidtv` package. Moreover, the correct state detection logic may differ across devices and device configurations.
The Android Debug Bridge integration works by polling the Android / Fire TV device at a regular interval and collecting a handful of properties. Unfortunately, there is no standard API for determining the state of the device to which all apps adhere. Instead, the backend `androidtv` package uses three of the properties that it collects to determine the state: `audio_state`, `media_session_state`, and `wake_lock_size`. The correct logic for determining the state differs depending on the current app, and the backend `androidtv` package implements app-specific state detection logic for a handful of apps. Of course, it is not feasible to implement custom logic for each and every app in the `androidtv` package. Moreover, the correct state detection logic may differ across devices and device configurations.
The solution to this problem is the `state_detection_rules` configuration parameter, which allows you to provide your own rules for state detection. The keys are app IDs, and the values are lists of rules that are evaluated in order. Valid rules are:

View File

@ -0,0 +1,361 @@
---
title: Android TV Remote
description: Instructions on how to integrate Android TV remotes into Home Assistant.
ha_category:
- Remote
ha_release: 2023.5
ha_iot_class: Local Push
ha_config_flow: true
ha_codeowners:
- '@tronikos'
ha_quality_scale: platinum
ha_domain: androidtv_remote
ha_zeroconf: true
ha_platforms:
- diagnostics
- remote
ha_integration_type: device
---
The Android TV Remote integration allows you to control an Android TV device by sending [commands](https://github.com/tronikos/androidtvremote2/blob/main/TvKeys.txt) and launching apps. For this to work, the Android TV device needs to have [Android TV Remote Service](https://play.google.com/store/apps/details?id=com.google.android.tv.remote.service) which is pre-installed on most devices.
For a quick introduction on how to get started with Android TV Remote, check out this video:
<lite-youtube videoid="htbnf5YxAuw" videotitle="Android TV Remote Integration with Home Assistant"></lite-youtube>
{% include integrations/config_flow.md %}
## Entity
This integration adds a `remote` entity which turns on/off the Android TV device.
The entity has the `current_activity` attribute that shows the current foreground app on the Android TV.
## Services
You can use the `remote.turn_off`, `remote.turn_on`, `remote.toggle`, and `remote.send_command` services from the [remote](/integrations/remote/) platform.
For a list of the most common commands that you can send to the Android TV via `remote.send_command`, see: [TvKeys](https://github.com/tronikos/androidtvremote2/blob/main/TvKeys.txt).
For a full list, see [here](https://github.com/tronikos/androidtvremote2/blob/main/src/androidtvremote2/remotemessage.proto#L90).
If `activity` is specified in `remote.turn_on`, it will open the specified URL in the associated app.
Examples of URLs to pass as activity for some popular apps:
| App | URL |
| --- | --- |
| YouTube | https://www.youtube.com
| Netflix | https://www.netflix.com/title
| Prime Video | https://app.primevideo.com
| Disney+ | https://www.disneyplus.com
Examples of service calls:
```yaml
# Open the currently selected item on the Android TV
service: remote.send_command
data:
command: DPAD_CENTER
target:
entity_id: remote.living_room_tv
```
```yaml
# Long press on the currently selected item on the Android TV
service: remote.send_command
data:
command: DPAD_CENTER
hold_secs: 0.5
target:
entity_id: remote.living_room_tv
```
```yaml
# Launch YouTube
service: remote.turn_on
data:
activity: https://www.youtube.com
target:
entity_id: remote.living_room_tv
```
```yaml
# Open a specific YouTube video:
service: remote.turn_on
data:
activity: https://www.youtube.com/watch?v=dQw4w9WgXcQ
target:
entity_id: remote.living_room_tv
```
## Dashboard example
You have to manually create buttons in Lovelace to send commands to the Android TV device or launch apps on it.
Below is an example for you to start with. Many of the buttons support long press.
![Screenshot Android TV Remote example](/images/integrations/androidtv_remote/lovelace_example.png)
{% details "Lovelace example" %}
Replace all instances of `living_room_tv` with your entity ID.
```yaml
type: vertical-stack
cards:
- type: entities
entities:
- entity: remote.living_room_tv
- square: true
columns: 3
type: grid
cards:
- type: button
show_icon: false
tap_action:
action: none
hold_action:
action: none
- type: button
icon: mdi:arrow-up-bold
tap_action:
action: call-service
service: remote.send_command
data:
command: DPAD_UP
target:
entity_id: remote.living_room_tv
hold_action:
action: none
- type: button
show_icon: false
tap_action:
action: none
hold_action:
action: none
- type: button
icon: mdi:arrow-left-bold
tap_action:
action: call-service
service: remote.send_command
data:
command: DPAD_LEFT
target:
entity_id: remote.living_room_tv
hold_action:
action: none
- type: button
icon: mdi:circle
tap_action:
action: call-service
service: remote.send_command
data:
command: DPAD_CENTER
target:
entity_id: remote.living_room_tv
hold_action:
action: call-service
service: remote.send_command
data:
command: DPAD_CENTER
hold_secs: 0.5
target:
entity_id: remote.living_room_tv
- type: button
icon: mdi:arrow-right-bold
tap_action:
action: call-service
service: remote.send_command
data:
command: DPAD_RIGHT
target:
entity_id: remote.living_room_tv
hold_action:
action: none
- type: button
icon: mdi:arrow-left
tap_action:
action: call-service
service: remote.send_command
data:
command: BACK
target:
entity_id: remote.living_room_tv
hold_action:
action: call-service
service: remote.send_command
data:
command: BACK
hold_secs: 0.5
target:
entity_id: remote.living_room_tv
- type: button
icon: mdi:arrow-down-bold
tap_action:
action: call-service
service: remote.send_command
data:
command: DPAD_DOWN
target:
entity_id: remote.living_room_tv
hold_action:
action: none
- type: button
icon: mdi:home-outline
tap_action:
action: call-service
service: remote.send_command
data:
command: HOME
target:
entity_id: remote.living_room_tv
hold_action:
action: call-service
service: remote.send_command
data:
command: HOME
hold_secs: 0.5
target:
entity_id: remote.living_room_tv
- square: false
columns: 3
type: grid
cards:
- type: button
icon: mdi:skip-previous
tap_action:
action: call-service
service: remote.send_command
data:
command: MEDIA_PREVIOUS
target:
entity_id: remote.living_room_tv
hold_action:
action: call-service
service: remote.send_command
data:
command: MEDIA_REWIND
target:
entity_id: remote.living_room_tv
- type: button
icon: mdi:play-pause
tap_action:
action: call-service
service: remote.send_command
data:
command: MEDIA_PLAY_PAUSE
target:
entity_id: remote.living_room_tv
hold_action:
action: call-service
service: remote.send_command
data:
command: MEDIA_STOP
target:
entity_id: remote.living_room_tv
- type: button
icon: mdi:skip-next
tap_action:
action: call-service
service: remote.send_command
data:
command: MEDIA_NEXT
target:
entity_id: remote.living_room_tv
hold_action:
action: call-service
service: remote.send_command
data:
command: MEDIA_FAST_FORWARD
target:
entity_id: remote.living_room_tv
- type: button
icon: mdi:volume-off
tap_action:
action: call-service
service: remote.send_command
data:
command: MUTE
target:
entity_id: remote.living_room_tv
hold_action:
action: none
- type: button
icon: mdi:volume-medium
tap_action:
action: call-service
service: remote.send_command
data:
command: VOLUME_DOWN
target:
entity_id: remote.living_room_tv
hold_action:
action: none
- type: button
icon: mdi:volume-high
tap_action:
action: call-service
service: remote.send_command
data:
command: VOLUME_UP
target:
entity_id: remote.living_room_tv
hold_action:
action: none
- square: false
columns: 4
type: grid
cards:
- type: button
icon: mdi:youtube
tap_action:
action: call-service
service: remote.turn_on
data:
activity: https://www.youtube.com
target:
entity_id: remote.living_room_tv
hold_action:
action: none
- type: button
icon: mdi:netflix
tap_action:
action: call-service
service: remote.turn_on
data:
activity: https://www.netflix.com/title
target:
entity_id: remote.living_room_tv
hold_action:
action: none
- type: picture
image: >-
https://upload.wikimedia.org/wikipedia/commons/thumb/1/11/Amazon_Prime_Video_logo.svg/450px-Amazon_Prime_Video_logo.svg.png
tap_action:
action: call-service
service: remote.turn_on
data:
activity: https://app.primevideo.com
target:
entity_id: remote.living_room_tv
hold_action:
action: none
- type: picture
image: >-
https://upload.wikimedia.org/wikipedia/commons/thumb/3/3e/Disney%2B_logo.svg/440px-Disney%2B_logo.svg.png
tap_action:
action: call-service
service: remote.turn_on
data:
activity: https://www.disneyplus.com
target:
entity_id: remote.living_room_tv
hold_action:
action: none
- type: entity
entity: remote.living_room_tv
attribute: current_activity
- type: media-control
entity: media_player.living_room_tv
```
{% enddetails %}

View File

@ -0,0 +1,40 @@
---
title: Anova
description: Instructions on how to integrate Anova Wi-Fi Sous Vide into home assistant.
ha_category:
- Sensor
ha_iot_class: Cloud Polling
ha_config_flow: true
ha_release: 2023.5
ha_codeowners:
- '@Lash-L'
ha_domain: anova
ha_integration_type: integration
ha_platforms:
- sensor
---
The Anova sensor platform allows you to control [Anova](https://anovaculinary.com/pages/find-your-anova-precision-cooker) sous vides with Wi-Fi capability.
Supported devices (tested):
- AN500-10 (Anova Precision Cooker)
- AN500-US00 (Anova Precision Cooker)
- AN600-10 (Anova Precision Cooker Pro)
The 'nano' versions of the sous vide are not supported, but as long as your app is connected to the sous vide, the data should update. They would be better served using BLE instead of API calls.
To add this platform to your installation, You will need your Anova username and password, and you need to have at least one sous vide connected to your account.
{% include integrations/config_flow.md %}
## Sensor
- Cook Time - How long the sous vide has been cooking in seconds
- Mode - The current mode of the sous vide ("Idle", "Cook", "Low water").
- State - The current state of the sous vide ("Preheating", "Cooking", "Maintaining").
- Target Temperature - The temperature the sous vide is set to heat to.
- Cook Time Remaining - How long is left in the cook in seconds.
- Heater Temperature - The current temperature of the heater.
- Triac Temperature - The current temperature of the triac.
- Water Temperature - The current temperature of the water.

View File

@ -15,7 +15,7 @@ ha_platforms:
ha_integration_type: integration
---
The `arcam_fmj` integration allows you to control [Arcam FMJ Receivers](https://www.arcam.co.uk/range/fmj.htm) from Home Assistant.
The `arcam_fmj` integration allows you to control [Arcam Receivers and Processors](https://www.arcam.co.uk/range/fmj.htm) from Home Assistant.
Supported devices:
@ -41,11 +41,19 @@ Supported devices:
- SA 30
- SR 250
This integration may also work with [JBL](https://www.jblsynthesis.com/products/electronics/) and [AudioControl](https://www.audiocontrol.com/home-audio/) receivers and processors as they share the same firmware as Arcam.
- SDP-55/58
{% include integrations/config_flow.md %}
## Power state
Arcam FMJ receivers turn off their network port when in standby, the component will try to reconnect to the receiver every 5 seconds. This means powering on the first zone is not possible over the built-in network connection. Two options for complete power control exists: IR or Serial gateway.
Arcam receivers turn off their network port when in standby, the component will try to reconnect to the receiver every 5 seconds. This means powering on the first zone is not possible over the built-in network connection.
Note: Some newer models offer the ability to configure the device to keep the network port active when in standby mode. This can be found under **HDMI Settings** > **HDMI Bypass & IP**. Enabling **HDMI & IP On** will allow full power control from Home Assistant.
Two other options for complete power control exists: IR or Serial gateway.
### IR command

View File

@ -0,0 +1,28 @@
---
title: Assist pipeline
description: Assist pipeline integration.
ha_category:
- Voice
ha_iot_class: Local Push
ha_release: '2023.5'
ha_codeowners:
- '@balloob'
- '@synesthesiam'
ha_domain: assist_pipeline
ha_integration_type: integration
ha_quality_scale: internal
ha_platforms:
- select
---
The Assist pipeline integration provides the foundation for the [Assist](/docs/assist/) voice assistant in Home Assistant.
For most users, there is no need to install this integration manually. The Assist pipeline integration is part of the default configuration and is set up automatically if needed by other integrations.
If you are not using the default integration, you need to add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
assist_pipeline:
```
For more information, refer to the procedure on [configuring a pipeline](/docs/assist/voice_remote_local_assistant/).

View File

@ -36,12 +36,10 @@ state over the other. This is set by the binary sensor's device class.
Here are a few examples of this representation in the UI:
<p class='img'>
<img src='/images/screenshots/binary_sensor_classes_icons.png' />
![List of binary sensors](/images/screenshots/binary_sensor_classes_icons.png)
Example of various device classes icons in `on` and `off` state. The on image
in this example has `state_color: true` specified in the Entities card
configuration to receive the icon coloring.
</p>
The full list of supported binary sensor device classes is below
*(note: these may also be modified in the [customizing section](/docs/configuration/customizing-devices)).*

View File

@ -114,7 +114,8 @@ device:
required: false
type: string
device_class:
description: Sets the [class of the device](/integrations/binary_sensor/#device-class), changing the device state and icon that is displayed on the frontend.
description: Sets the [class of the device](/integrations/binary_sensor/#device-class), changing the device state and icon that is displayed on the frontend. The `device_class` can be `null`.
default: None
required: false
type: string
enabled_by_default:
@ -202,7 +203,7 @@ unique_id:
value_template:
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) that returns a string to be compared to `payload_on`/`payload_off` or an empty string, in which case the MQTT message will be removed. Remove this option when `payload_on` and `payload_off` are sufficient to match your payloads (i.e no pre-processing of original message is required)."
required: false
type: string
type: template
{% endconfiguration %}
## Examples

View File

@ -86,6 +86,7 @@ If you experience an unreliable Bluetooth connection, installing a short USB ext
- DIGITUS DN-30210-1 (CSR8510A10)
- Enbiawit BT403 (CSR8510A10)
- Feasycom FSC-BP119 (CSR8510A10) 📶
- Gold Touch E-USB-BT4 (CSR8510A10)
- HIDEEZ BT0015-01 (CSR8510A10)
- Maxesla CSR 4.0 (CSR8510A10)
- Nuu You BT40 (CSR8510A10)

View File

@ -7,7 +7,9 @@ ha_category:
- Car
- Lock
- Notifications
- Number
- Presence Detection
- Select
- Sensor
ha_release: 0.64
ha_iot_class: Cloud Polling
@ -23,6 +25,8 @@ ha_platforms:
- diagnostics
- lock
- notify
- number
- select
- sensor
ha_integration_type: integration
---
@ -45,6 +49,8 @@ This integration provides the following platforms:
- Sensors: Mileage, remaining range, remaining fuel, charging time remaining (electric cars), charging status (electric cars), remaining range electric (electric cars).
- [Notifications](/integrations/bmw_connected_drive/#notifications): Send Points of Interest (POI) to your car.
- [Buttons](/integrations/bmw_connected_drive/#buttons): Turn on air condition, sound the horn, flash the lights, update the vehicle location and update the state.
- [Selects](/integrations/bmw_connected_drive/#selects): Display and control charging related settings for (PH)EVs.
- [Numbers](/integrations/bmw_connected_drive/#numbers): Display and control numeric charging related settings for (PH)EVs.
## Configuration
@ -134,6 +140,23 @@ The `button.<your_vehicle>_find_vehicle` button requests the vehicle to update t
The `button.<vehicle_model>_refresh_from_cloud` button fetches the last state of the vehicles of all your accounts from the BMW server. This does *not* trigger an update from the vehicle; it gets the data from the BMW servers. So this service does *not* interact with your vehicles.
## Selects
If you have a (PH)EV, you can control the charging process through Home Assistant. The selects are created automatically depending on your vehicle's capabilities and can be pressed/executed from the UI or using the `select.select_option` service. For more information, please see the [select documentation](/integrations/select/).
Using these selects will impact the state of your vehicle. Use them with care!
- **Charging Mode**: Vehicle can be set to `IMMEDIATE_CHARGING` (charge as soon as plugged in) or `DELAYED_CHARGING` (charge only if within charging window). It can be used to start/stop charging if the charging window is set accordingly.
- **AC Charging Limit**: The maximum current a vehicle will charge with. Not available on all EVs.
## Numbers
If you have a (PH)EV, you can control the charging process through Home Assistant. The number entities are created automatically depending on your vehicle's capabilities and can be changed from the UI or using the `number.set_value` service. For more information, please see the [number documentation](/integrations/number/).
Using these selects will impact the state of your vehicle, use them with care!
- **Target SoC**: Vehicle will charge until this battery level is reached. Not available on all EVs.
## Disclaimer
This software is not affiliated with or endorsed by BMW Group.

View File

@ -2,9 +2,13 @@
title: Brottsplatskartan
description: Instructions on how to integrate brottsplatskartan.se into Home Assistant.
ha_category:
- Sensor
- Social
ha_release: 0.85
ha_iot_class: Cloud Polling
ha_config_flow: true
ha_codeowners:
- '@gjohansson-ST'
ha_domain: brottsplatskartan
ha_platforms:
- sensor
@ -13,36 +17,7 @@ ha_integration_type: integration
The `brottsplatskartan` sensor allows one to track reported incidents occurring in a given area. Incidents include anything reported to [Brottsplatskartan](https://brottsplatskartan.se). The sensor only counts incidents from the current day.
## Configuration
To enable this sensor, add the following lines to your `configuration.yaml`.
```yaml
sensor:
- platform: brottsplatskartan
```
{% configuration %}
name:
description: Custom name for the sensor.
required: false
type: string
default: Brottsplatskartan
area:
description: Area for sensor to monitor
required: false
type: string
latitude:
description: Latitude for sensor.
required: false
type: float
default: Your home zone latitude defined in your configuration.
longitude:
description: Longitude for sensor.
required: false
type: float
default: Your home zone longitude defined in your configuration.
{% endconfiguration %}
{% include integrations/config_flow.md %}
## Notes

View File

@ -112,8 +112,9 @@ device:
required: false
type: string
device_class:
description: The [type/class](/integrations/button/#device-class) of the button to set the icon in the frontend.
description: The [type/class](/integrations/button/#device-class) of the button to set the icon in the frontend. The `device_class` can be `null`.
required: false
default: None
type: device_class
default: None
enabled_by_default:

View File

@ -180,3 +180,17 @@ data:
start_date: "2022-10-01"
end_date: "2022-10-02"
```
Home Assistant Calendars do not allow zero duration Calendar events. The following would create a one minute long event starting "now". This could be used to record an external event in a Calendar.
{% raw %}
```yaml
service: calendar.create_event
target:
entity_id: calendar.device_automation_schedules
data:
summary: "Example"
start_date_time: "{{ now() }}"
end_date_time: "{{ now() + timedelta(minutes=1) }}"
```
{% endraw %}

View File

@ -290,7 +290,7 @@ preset_mode_state_topic:
preset_mode_value_template:
description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract the `preset_mode` value from the payload received on `preset_mode_state_topic`.
required: false
type: string
type: template
preset_modes:
description: List of preset modes this climate is supporting. Common examples include `eco`, `away`, `boost`, `comfort`, `home`, `sleep` and `activity`.
required: false
@ -342,7 +342,7 @@ target_humidity_state_topic:
target_humidity_state_template:
description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract a value for the climate `target_humidity` state.
required: false
type: string
type: template
temperature_command_template:
description: A template to render the value sent to the `temperature_command_topic` with.
required: false

View File

@ -1,8 +1,11 @@
---
title: Command Line
description: Instructions on how to integrate Command binary sensors within Home Assistant.
description: Instructions on how to integrate the Command Line utility within Home Assistant.
ha_category:
- Binary Sensor
- Cover
- Notifications
- Sensor
- Utility
ha_release: 0.12
ha_iot_class: Local Polling
@ -16,9 +19,9 @@ ha_platforms:
ha_integration_type: integration
---
The `command_line` binary sensor platform issues specific commands to get data.
The `command_line` offers functionality that issues specific commands to get data or to control a device.
## Configuration
## Binary sensor
To use your Command binary sensor in your installation, add the following to your `configuration.yaml` file:
@ -40,45 +43,282 @@ command:
description: The action to take to get the value.
required: true
type: string
name:
description: Let you overwrite the name of the device.
required: false
type: string
default: "*name* from the device"
device_class:
description: Sets the [class of the device](/integrations/binary_sensor/), changing the device state and icon that is displayed on the frontend.
required: false
type: string
payload_on:
description: The payload that represents enabled state.
required: false
type: string
default: 'ON'
payload_off:
description: The payload that represents disabled state.
required: false
type: string
default: 'OFF'
value_template:
description: Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload.
required: false
type: string
scan_interval:
description: Defines number of seconds for polling interval.
required: false
type: integer
default: 60
command_timeout:
description: Defines number of seconds for command timeout.
required: false
type: integer
default: 15
device_class:
description: Sets the [class of the device](/integrations/binary_sensor/), changing the device state and icon that is displayed on the frontend.
required: false
type: string
name:
description: Let you overwrite the name of the device.
required: false
type: string
default: "*name* from the device"
payload_on:
description: The payload that represents enabled state.
required: false
type: string
default: 'ON'
unique_id:
description: An ID that uniquely identifies this binary sensor. Set this to a unique value to allow customization through the UI.
required: false
type: string
payload_off:
description: The payload that represents disabled state.
required: false
type: string
default: 'OFF'
scan_interval:
description: Defines number of seconds for polling interval.
required: false
type: integer
default: 60
value_template:
description: Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload.
required: false
type: string
{% endconfiguration %}
## Cover
A `command_line`cover platform that issues specific commands when it is moved up, down and stopped. It allows anyone to integrate any type of cover into Home Assistant that can be controlled from the command line.
To enable a command line cover in your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
cover:
- platform: command_line
covers:
garage_door:
command_open: move_command up garage
command_close: move_command down garage
command_stop: move_command stop garage
```
{% configuration %}
covers:
description: The array that contains all command line covers.
required: true
type: list
keys:
identifier:
description: Name of the command line cover as slug. Multiple entries are possible.
required: true
type: list
keys:
command_close:
description: The action to close the cover.
required: true
default: true
type: string
command_open:
description: The command to open the cover.
required: true
default: true
type: string
command_state:
description: If given, this will act as a sensor that runs in the background and updates the state of the cover. If the command returns a `0` the indicates the cover is fully closed, whereas a 100 indicates the cover is fully open.
required: false
type: string
command_stop:
description: The action to stop the cover.
required: true
default: true
type: string
command_timeout:
description: Defines number of seconds for command timeout.
required: false
type: integer
default: 15
friendly_name:
description: The name used to display the cover in the frontend.
required: false
type: string
scan_interval:
description: Defines number of seconds for polling interval.
required: false
type: integer
default: 60
unique_id:
description: An ID that uniquely identifies this cover. Set this to a unique value to allow customization through the UI.
required: false
type: string
value_template:
description: if specified, `command_state` will ignore the result code of the command but the template evaluating will indicate the position of the cover. For example, if your `command_state` returns a string "open", using `value_template` as in the example configuration above will allow you to translate that into the valid state `100`.
required: false
default: "'{% raw %}{{ value }}{% endraw%}'"
type: template
{% endconfiguration %}
## Notify
The `command_line` platform allows you to use external tools for notifications from Home Assistant. The message will be passed in as STDIN.
To enable those notifications in your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
notify:
- name: NOTIFIER_NAME
platform: command_line
command: "espeak -vmb/mb-us1"
```
{% configuration %}
name:
description: Setting the optional parameter `name` allows multiple notifiers to be created. The notifier will bind to the service `notify.NOTIFIER_NAME`.
required: false
default: notify
type: string
command:
description: The action to take.
required: true
type: string
command_timeout:
description: Defines number of seconds for command timeout.
required: false
type: integer
default: 15
{% endconfiguration %}
To use notifications, please see the [getting started with automation page](/getting-started/automation/).
## Sensor
To enable it, add the following lines to your `configuration.yaml`:
```yaml
# Example configuration.yaml entry
sensor:
- platform: command_line
command: SENSOR_COMMAND
```
{% configuration %}
command:
description: The action to take to get the value.
required: true
type: string
command_timeout:
description: Defines number of seconds for command timeout
required: false
type: integer
default: 15
json_attributes:
description: Defines a list of keys to extract values from a JSON dictionary result and then set as sensor attributes.
required: false
type: [string, list]
name:
description: Name of the command sensor.
required: false
type: string
unique_id:
description: An ID that uniquely identifies this sensor. Set this to a unique value to allow customization through the UI.
required: false
type: string
scan_interval:
description: Defines number of seconds for polling interval.
required: false
type: integer
default: 60
unit_of_measurement:
description: Defines the unit of measurement of the sensor, if any.
required: false
type: string
value_template:
description: "Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload."
required: false
type: string
{% endconfiguration %}
## Switch
The `command_line` switch platform issues specific commands when it is turned on
and off. This might very well become our most powerful platform as it allows
anyone to integrate any type of switch into Home Assistant that can be
controlled from the command line, including calling other scripts!
To enable it, add the following lines to your `configuration.yaml`:
```yaml
# Example configuration.yaml entry
switch:
- platform: command_line
switches:
kitchen_light:
command_on: switch_command on kitchen
command_off: switch_command off kitchen
```
{% configuration %}
switches:
description: The array that contains all command switches.
required: true
type: map
keys:
identifier:
description: Name of the command switch as slug. Multiple entries are possible.
required: true
type: map
keys:
command_on:
description: The action to take for on.
required: true
type: string
command_off:
description: The action to take for off.
required: true
type: string
command_state:
description: "If given, this command will be run. Returning a result code `0` will indicate that the switch is on."
required: false
type: string
command_timeout:
description: Defines number of seconds for command timeout.
required: false
type: integer
default: 15
friendly_name:
description: The name used to display the switch in the frontend.
required: false
type: string
icon_template:
description: Defines a template for the icon of the entity.
required: false
type: template
scan_interval:
description: Defines number of seconds for polling interval.
required: false
type: integer
default: 60
unique_id:
description: An ID that uniquely identifies this switch. Set this to a unique value to allow customization through the UI.
required: false
type: string
value_template:
description: "If specified, `command_state` will ignore the result code of the command but the template evaluating to `true` will indicate the switch is on."
required: false
type: string
{% endconfiguration %}
A note on `friendly_name`:
When set, the `friendly_name` had been previously used for API calls and backend
configuration instead of the `object_id` ("identifier"), but
[this behavior is changing](https://github.com/home-assistant/home-assistant/pull/4343)
to make the `friendly_name` for display purposes only. This allows users to set
an `identifier` that emphasizes uniqueness and predictability for API and configuration
purposes but have a prettier `friendly_name` still show up in the UI. As an
additional benefit, if a user wanted to change the `friendly_name` / display
name (e.g., from "Kitchen Lightswitch" to "Kitchen Switch" or
"Living Room Light", or remove the `friendly_name` altogether), they could
do so without needing to change existing automations or API calls.
See aREST device below for an example.
## Execution
The `command` is executed within the [configuration directory](/docs/configuration/).
@ -91,9 +331,9 @@ If you are using [Home Assistant Operating System](https://github.com/home-assis
With a `0` exit code, the output (stdout) of the command is used as `value`. In case a command results in a non `0` exit code or is terminated by the `command_timeout`, the result is only logged to Home Assistant log and the sensors value is not updated.
## Examples
## Examples binary sensor platform
In this section you find some real-life examples of how to use this sensor.
In this section you find some real-life examples of how to use the command_line sensor.
### SickRage
@ -160,6 +400,279 @@ binary_sensor:
payload_off: "inactive"
```
## Example cover platform
{% raw %}
```yaml
# Example configuration.yaml entry
cover:
- platform: command_line
covers:
garage_door:
command_open: move_command up garage
command_close: move_command down garage
command_stop: move_command stop garage
command_state: state_command garage
value_template: >
{% if value == 'open' %}
100
{% elif value == 'closed' %}
0
{% endif %}
```
## Examples sensor platform
In this section you find some real-life examples of how to use this sensor.
### CPU temperature
Thanks to the [`proc`](https://en.wikipedia.org/wiki/Procfs) file system, various details about a system can be retrieved. Here the CPU temperature is of interest. Add something similar to your `configuration.yaml` file:
{% raw %}
```yaml
# Example configuration.yaml entry
sensor:
- platform: command_line
name: CPU Temperature
command: "cat /sys/class/thermal/thermal_zone0/temp"
# If errors occur, make sure configuration file is encoded as UTF-8
unit_of_measurement: "°C"
value_template: "{{ value | multiply(0.001) | round(1) }}"
```
{% endraw %}
### Monitoring failed login attempts on Home Assistant
If you'd like to know how many failed login attempts are made to Home Assistant, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
sensor:
- platform: command_line
name: badlogin
command: "grep -c 'Login attempt' /home/hass/.homeassistant/home-assistant.log"
```
Make sure to configure the [Logger integration](/integrations/logger) to monitor the [HTTP integration](/integrations/http/) at least the `warning` level.
```yaml
# Example working logger settings that works
logger:
default: critical
logs:
homeassistant.components.http: warning
```
### Details about the upstream Home Assistant release
You can see directly in the frontend (**Developer tools** -> **About**) what release of Home Assistant you are running. The Home Assistant releases are available on the [Python Package Index](https://pypi.python.org/pypi). This makes it possible to get the current release.
```yaml
sensor:
- platform: command_line
command: python3 -c "import requests; print(requests.get('https://pypi.python.org/pypi/homeassistant/json').json()['info']['version'])"
name: HA release
```
### Read value out of a remote text file
If you own devices which are storing values in text files which are accessible over HTTP then you can use the same approach as shown in the previous section. Instead of looking at the JSON response we directly grab the sensor's value.
```yaml
sensor:
- platform: command_line
command: python3 -c "import requests; print(requests.get('http://remote-host/sensor_data.txt').text)"
name: File value
```
### Use an external script
The example is doing the same as the [aREST sensor](/integrations/arest#sensor) but with an external Python script. It should give you an idea about interfacing with devices which are exposing a RESTful API.
The one-line script to retrieve a value is shown below. Of course it would be possible to use this directly in the `configuration.yaml` file but need extra care about the quotation marks.
```bash
python3 -c "import requests; print(requests.get('http://10.0.0.48/analog/2').json()['return_value'])"
```
The script (saved as `arest-value.py`) that is used looks like the example below.
```python
#!/usr/bin/python3
from requests import get
response = get("http://10.0.0.48/analog/2")
print(response.json()["return_value"])
```
To use the script you need to add something like the following to your `configuration.yaml` file.
```yaml
# Example configuration.yaml entry
sensor:
- platform: command_line
name: Brightness
command: "python3 /path/to/script/arest-value.py"
```
### Usage of templating in `command:`
[Templates](/docs/configuration/templating/) are supported in the `command` configuration variable. This could be used if you want to include the state of a specific sensor as an argument to your external script.
{% raw %}
```yaml
# Example configuration.yaml entry
sensor:
- platform: command_line
name: wind direction
command: "sh /home/pi/.homeassistant/scripts/wind_direction.sh {{ states('sensor.wind_direction') }}"
unit_of_measurement: "Direction"
```
{% endraw %}
### Usage of JSON attributes in command output
The example shows how you can retrieve multiple values with one sensor (where the additional values are attributes) by using `value_json` and `json_attributes`.
{% raw %}
```yaml
# Example configuration.yaml entry
sensor:
- platform: command_line
name: JSON time
json_attributes:
- date
- milliseconds_since_epoch
command: "python3 /home/pi/.homeassistant/scripts/datetime.py"
value_template: "{{ value_json.time }}"
```
{% endraw %}
## Example switch platform
### Change the icon when a state changes
This example demonstrates how to use template to change the icon as its state changes. This icon is referencing its own state.
{% raw %}
```yaml
switch:
- platform: command_line
switches:
driveway_sensor_motion:
friendly_name: Driveway outside sensor
command_on: >
curl -X PUT -d '{"on":true}' "http://ip_address/api/sensors/27/config/"
command_off: >
curl -X PUT -d '{"on":false}' "http://ip_address/api/sensors/27/config/"
command_state: curl http://ip_address/api/sensors/27/
value_template: >
{{value_json.config.on}}
icon_template: >
{% if value_json.config.on == true %} mdi:toggle-switch
{% else %} mdi:toggle-switch-off
{% endif %}
```
{% endraw %}
### aREST device
The example below is doing the same as the
[aREST switch](/integrations/arest#switch).
The command line tool [`curl`](https://curl.haxx.se/) is used to toggle a pin
which is controllable through REST.
{% raw %}
```yaml
# Example configuration.yaml entry
switch:
- platform: command_line
switches:
arest_pin_four:
command_on: "/usr/bin/curl -X GET http://192.168.1.10/digital/4/1"
command_off: "/usr/bin/curl -X GET http://192.168.1.10/digital/4/0"
command_state: "/usr/bin/curl -X GET http://192.168.1.10/digital/4"
value_template: '{{ value == "1" }}'
friendly_name: Kitchen Lightswitch
```
{% endraw %}
Given this example, in the UI one would see the `friendly_name` of
"Kitchen Light". However, the `identifier` is `arest_pin_four`, making the
`entity_id` `switch.arest_pin_four`, which is what one would use in
[`automation`](/integrations/automation/) or in [API calls](/developers/).
### Shutdown your local host
This switch will shutdown your system that is hosting Home Assistant.
<div class='note warning'>
This switch will shutdown your host immediately, there will be no confirmation.
</div>
```yaml
# Example configuration.yaml entry
switch:
- platform: command_line
switches:
home_assistant_system_shutdown:
command_off: "/usr/sbin/poweroff"
```
### Control your VLC player
This switch will control a local VLC media player
([Source](https://community.home-assistant.io/t/vlc-player/106)).
```yaml
# Example configuration.yaml entry
switch:
- platform: command_line
switches:
vlc:
command_on: "cvlc 1.mp3 vlc://quit &"
command_off: "pkill vlc"
```
### Control Foscam Motion Sensor
This switch will control the motion sensor of Foscam Webcams which Support CGI
Commands ([Source](https://www.iltucci.com/blog/wp-content/uploads/2018/12/Foscam-IPCamera-CGI-User-Guide-V1.0.4.pdf)).
This switch supports statecmd,
which checks the current state of motion detection.
{% raw %}
```yaml
# Example configuration.yaml entry
switch:
- platform: command_line
switches:
foscam_motion:
command_on: 'curl -k "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=1&usr=admin&pwd=password"'
command_off: 'curl -k "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=setMotionDetectConfig&isEnable=0&usr=admin&pwd=password"'
command_state: 'curl -k --silent "https://ipaddress:443/cgi-bin/CGIProxy.fcgi?cmd=getMotionDetectConfig&usr=admin&pwd=password" | grep -oP "(?<=isEnable>).*?(?=</isEnable>)"'
value_template: '{{ value == "1" }}'
```
{% endraw %}
- Replace admin and password with an "Admin" privileged Foscam user
- Replace ipaddress with the local IP address of your Foscam
## Services
Available services: `reload`.

View File

@ -14,7 +14,7 @@ ha_platforms:
ha_integration_type: integration
---
The Compensation integration consumes the state from other sensors. It exports the compensated value as state and the following values as attributes: `entity_id` and `coefficients`. A single polynomial, linear by default, is fit to all data points provided.
The Compensation {% term integration %} consumes the {% term state %} from other {% term sensors %}. It exports the compensated value as state in a separate {% term entity %} and the following values as attributes: `entity_id` and `coefficients`. A single polynomial, linear by default, is fit to all data points provided.
## Configuration

View File

@ -33,7 +33,7 @@ In English, you can say things like "turn on kitchen lights" or "turn off lights
## Adding custom sentences
You can add your own [sentence templates](https://developers.home-assistant.io/docs/voice/intent-recognition/template-sentence-syntax) to teach Home Assistant about new sentences. These sentences can work with the [built-in intents](https://developers.home-assistant.io/docs/intent_builtin/) or trigger a custom action by defining custom intents with the [intent script integration](/integrations/intent_script/).
You can add your own [sentence templates](https://developers.home-assistant.io/docs/voice/intent-recognition/template-sentence-syntax) to teach Home Assistant about new sentences. These sentences can work with the [built-in intents](https://developers.home-assistant.io/docs/intent_builtin/) or trigger a custom action by defining custom {% term intents %} with the [intent script integration](/integrations/intent_script/).
To get started, create a `custom_sentences/<language>` directory in your Home Assistant `config` directory where `<language>` is the [language code](https://developers.home-assistant.io/docs/voice/intent-recognition/supported-languages) of your language, such as `en` for English. These YAML files are automatically merged, and may contain intents, lists, or expansion rules.
@ -53,7 +53,7 @@ intents:
{% endraw %}
To teach Home Assistant how to handle the custom `CustomOutsideHumidity` intent, create an `intent_script` entry in your `configuration.yaml` file:
To teach Home Assistant how to handle the custom `CustomOutsideHumidity` {% term intent %}, create an `intent_script` entry in your `configuration.yaml` file:
{% raw %}
@ -72,7 +72,7 @@ More complex [actions](/docs/scripts/) can be done in `intent_script`, such as c
## Extending built-in intents
Extending the built-in intents, such as `HassTurnOn` and `HassTurnOff`, can be done as well.
Extending the built-in {% term intents %}, such as `HassTurnOn` and `HassTurnOff`, can be done as well.
For example, create the file `config/custom_sentences/en/on_off.yaml` and add:

View File

@ -1,31 +0,0 @@
---
title: Coronavirus (COVID-19)
description: Instructions on how to integrate the Coronavirus sensors within Home Assistant.
ha_category:
- Health
ha_release: 0.106
ha_iot_class: Cloud Polling
ha_config_flow: true
ha_codeowners:
- '@home-assistant/core'
ha_domain: coronavirus
ha_platforms:
- sensor
ha_integration_type: integration
---
In December 2019, an outbreak of a novel Coronavirus, also called severe acute
respiratory syndrome coronavirus-2 (SARS-CoV-2), began in the Wuhan region of
China. This virus can cause the COVID-19 disease.
This novel Coronavirus is spreading globally at a disturbing rate, which keeps
everybody on top of the news. The media worldwide is covering the spread of
the virus constantly, and a lot of people are tracking the number of cases
in their country.
The Coronavirus integration tracks the number of people that are confirmed with,
recovered from, and deceased caused by the virus in your country, or worldwide.
The data is sourced from the [Johns Hopkins University](https://www.arcgis.com/apps/opsdashboard/index.html#/bda7594740fd40299423467b48e9ecf6).
{% include integrations/config_flow.md %}

View File

@ -18,7 +18,7 @@ The `counter` integration allows one to count occurrences fired by automations.
The preferred way to configure counter helpers is via the user interface. To add one, go to
**{% my helpers title="Settings -> Devices & Services -> Helpers" %}** and click the add button;
next choose the "**Counter**" option.
next choose the **{% my config_flow_start domain=counter title="Counter" %}** option.
To be able to add **Helpers** via the user interface you should have
`default_config:` in your `configuration.yaml`, it should already be there by

View File

@ -1,102 +0,0 @@
---
title: "Command Line Cover"
description: "How to control a cover with the command line."
ha_category:
- Cover
ha_release: 0.14
ha_iot_class: Local Polling
ha_domain: command_line
---
A `command_line`cover platform that issues specific commands when it is moved up, down and stopped. It allows anyone to integrate any type of cover into Home Assistant that can be controlled from the command line.
To enable a command line cover in your installation, add the following to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
cover:
- platform: command_line
covers:
garage_door:
command_open: move_command up garage
command_close: move_command down garage
command_stop: move_command stop garage
```
{% configuration %}
covers:
description: The array that contains all command line covers.
required: true
type: list
keys:
identifier:
description: Name of the command line cover as slug. Multiple entries are possible.
required: true
type: list
keys:
command_open:
description: The command to open the cover.
required: true
default: true
type: string
command_close:
description: The action to close the cover.
required: true
default: true
type: string
command_stop:
description: The action to stop the cover.
required: true
default: true
type: string
command_state:
description: If given, this will act as a sensor that runs in the background and updates the state of the cover. If the command returns a `0` the indicates the cover is fully closed, whereas a 100 indicates the cover is fully open.
required: false
type: string
value_template:
description: if specified, `command_state` will ignore the result code of the command but the template evaluating will indicate the position of the cover. For example, if your `command_state` returns a string "open", using `value_template` as in the example configuration above will allow you to translate that into the valid state `100`.
required: false
default: "'{% raw %}{{ value }}{% endraw%}'"
type: template
friendly_name:
description: The name used to display the cover in the frontend.
required: false
type: string
command_timeout:
description: Defines number of seconds for command timeout.
required: false
type: integer
default: 15
unique_id:
description: An ID that uniquely identifies this cover. Set this to a unique value to allow customization through the UI.
required: false
type: string
{% endconfiguration %}
## Examples
In this section you find some real-life examples of how to use this sensor.
### Full configuration
{% raw %}
```yaml
# Example configuration.yaml entry
cover:
- platform: command_line
covers:
garage_door:
command_open: move_command up garage
command_close: move_command down garage
command_stop: move_command stop garage
command_state: state_command garage
value_template: >
{% if value == 'open' %}
100
{% elif value == 'closed' %}
0
{% endif %}
```
{% endraw %}

View File

@ -15,7 +15,7 @@ Home Assistant can give you an interface to control covers such as rollershutter
## Device Class
The way these sensors are displayed in the frontend can be modified in the [customize section](/docs/configuration/customizing-devices/). The following device classes are supported for covers:
The way these {% term sensors %} are displayed in the {% term frontend %} can be modified in the [customize section](/docs/configuration/customizing-devices/). The following device classes are supported for covers:
- **None**: Generic cover. This is the default and doesn't need to be set.
- **awning**: Control of an awning, such as an exterior retractable window, door, or patio cover.
@ -31,7 +31,8 @@ The way these sensors are displayed in the frontend can be modified in the [cust
Here are a few examples of this representation in the UI:
<p class='img'><img src='/images/screenshots/cover_classes_icons.png' />Example of various device classes icons in `open` and `closed` state. The open image in this example has `state_color: true` specified in the Entities card configuration to receive the icon coloring.</p>
![List of cover examples](/images/screenshots/cover_classes_icons.png)
Example of various device classes icons in `open` and `closed` state. The open image in this example has `state_color: true` specified in the Entities card configuration to receive the icon coloring.
## Services
@ -43,6 +44,19 @@ Available services: `cover.open_cover`, `cover.close_cover`, `cover.stop_cover`,
| ---------------------- | -------- | ----------- |
| `entity_id` | yes | String or list of strings that point at `entity_id`'s of covers. Use `entity_id: all` to target all.
#### Automation example
```yaml
automation:
trigger:
platform: time
at: "07:15:00"
action:
- service: cover.open_cover
target:
entity_id: cover.demo
```
### Service `cover.set_cover_position`
Set cover position of one or multiple covers.

View File

@ -125,7 +125,8 @@ device:
required: false
type: string
device_class:
description: Sets the [class of the device](/integrations/cover/), changing the device state and icon that is displayed on the frontend.
description: Sets the [class of the device](/integrations/cover/), changing the device state and icon that is displayed on the frontend. The `device_class` can be `null`.
default: None
required: false
type: string
enabled_by_default:
@ -207,7 +208,7 @@ position_open:
position_template:
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) that can be used to extract the payload for the `position_topic` topic. Within the template the following variables are available: `entity_id`, `position_open`; `position_closed`; `tilt_min`; `tilt_max`. The `entity_id` can be used to reference the entity's attributes with help of the [states](/docs/configuration/templating/#states) template function;"
required: false
type: string
type: template
position_topic:
description: The MQTT topic subscribed to receive cover position messages.
required: false
@ -225,7 +226,7 @@ retain:
set_position_template:
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to define the position to be sent to the `set_position_topic` topic. Incoming position value is available for use in the template `{% raw %}{{ position }}{% endraw %}`. Within the template the following variables are available: `entity_id`, `position`, the target position in percent; `position_open`; `position_closed`; `tilt_min`; `tilt_max`. The `entity_id` can be used to reference the entity's attributes with help of the [states](/docs/configuration/templating/#states) template function;"
required: false
type: string
type: template
set_position_topic:
description: "The MQTT topic to publish position commands to. You need to set position_topic as well if you want to use position topic. Use template if position topic wants different values than within range `position_closed` - `position_open`. If template is not defined and `position_closed != 100` and `position_open != 0` then proper position value is calculated from percentage position."
required: false
@ -267,7 +268,7 @@ tilt_closed_value:
tilt_command_template:
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) that can be used to extract the payload for the `tilt_command_topic` topic. Within the template the following variables are available: `entity_id`, `tilt_position`, the target tilt position in percent; `position_open`; `position_closed`; `tilt_min`; `tilt_max`. The `entity_id` can be used to reference the entity's attributes with help of the [states](/docs/configuration/templating/#states) template function;"
required: false
type: string
type: template
tilt_command_topic:
description: The MQTT topic to publish commands to control the cover tilt.
required: false
@ -295,7 +296,7 @@ tilt_optimistic:
tilt_status_template:
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) that can be used to extract the payload for the `tilt_status_topic` topic. Within the template the following variables are available: `entity_id`, `position_open`; `position_closed`; `tilt_min`; `tilt_max`. The `entity_id` can be used to reference the entity's attributes with help of the [states](/docs/configuration/templating/#states) template function;"
required: false
type: string
type: template
tilt_status_topic:
description: The MQTT topic subscribed to receive tilt status update values.
required: false
@ -307,7 +308,7 @@ unique_id:
value_template:
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) that can be used to extract the payload for the `state_topic` topic."
required: false
type: string
type: template
{% endconfiguration %}
<div class="note">

View File

@ -54,11 +54,11 @@ cover:
required: false
type: string
value_template:
description: Defines a template to get the state of the cover. Valid output values from the template are `open`, `opening`, `closing` and `closed` which are directly mapped to the corresponding states. In addition, `true` is valid as a synonym to `open` and `false` as a synonym to `closed`. If [both a `value_template` and a `position_template`](#combining_value_template_and_position_template) are specified, only `opening` and `closing` are set from the `value_template`.
description: Defines a template to get the state of the cover. Valid output values from the template are `open`, `opening`, `closing` and `closed` which are directly mapped to the corresponding states. In addition, `true` is valid as a synonym to `open` and `false` as a synonym to `closed`. If [both a `value_template` and a `position_template`](#combining_value_template_and_position_template) are specified, only `opening` and `closing` are set from the `value_template`. If the template produces a `None` value the state will be set to `unknown`.
required: false
type: template
position_template:
description: Defines a template to get the position of the cover. Legal values are numbers between `0` (closed) and `100` (open).
description: Defines a template to get the position of the cover. Legal values are numbers between `0` (closed) and `100` (open). If the template produces a `None` value the current position will be set to `unknown`.
required: false
type: template
icon_template:
@ -109,7 +109,7 @@ cover:
type: boolean
default: false
tilt_template:
description: Defines a template to get the tilt state of the cover. Legal values are numbers between `0` (closed) and `100` (open).
description: Defines a template to get the tilt state of the cover. Legal values are numbers between `0` (closed) and `100` (open). If the template produces a `None` value the current tilt state will be set to `unknown`.
required: false
type: template
{% endconfiguration %}

View File

@ -14,6 +14,7 @@ ha_integration_type: system
This integration is a meta-component and configures a default set of integrations for Home Assistant to load. The integrations that will be loaded are:
- [Automation](/integrations/automation/) (`automation`)
- [Assist pipeline](/integrations/assist_pipeline/) (`assist_pipeline`)
- [Backup](/integrations/backup/) (`backup`)
- [Bluetooth](/integrations/bluetooth/) (`bluetooth`)
- [Configuration](/integrations/config/) (`config`)

View File

@ -73,6 +73,7 @@ Known supported devices:
- Marantz AV7703
- Marantz AV7704
- Marantz CINEMA 50
- Marantz CINEMA 70s
- Marantz M-CR510
- Marantz M-CR511
- Marantz M-CR603
@ -80,6 +81,7 @@ Known supported devices:
- Marantz M-CR611
- Marantz SR5006
- Marantz SR5008
- Marantz SR5010
- Marantz SR5011
- Marantz SR5015
- Marantz SR6007 - SR6012

View File

@ -35,27 +35,25 @@ The name you give your application on the [Discord My Apps page](https://discord
### Setting up the bot
Bots can send messages to servers and users or attach locally available images. To add the bot to a server you are an admin on use the **Application ID** you noted above, found on the [Discord My Apps page](https://discordapp.com/developers/applications/me).
Bots can send messages to servers and users or attach locally available images. To add the bot to a server you are an admin on, use the **Application ID** you noted above, found on the [Discord My Apps page](https://discordapp.com/developers/applications/me).
<p class='img'>
<img src='/images/screenshots/discord-bot.png' />
</p>
![Screenshot of Discord bot config](/images/screenshots/discord-bot.png)
Now use the Discord Authorization page with the **Application ID** of your [application](https://discordapp.com/developers/docs/topics/oauth2#bots).
Next, decide what permissions your bot will have within your server. Under the 'Bot' section, select the permissions you want to grant and copy the permissions integer from the bottom field.
`https://discordapp.com/api/oauth2/authorize?client_id=[APPLICATION_ID]&scope=bot&permissions=0`
![Screenshot of Discord bot permissions](/images/screenshots/discord-bot-permissions.png)
<p class='img'>
<img src='/images/screenshots/discord-auth.png' />
</p>
Now use the Discord Authorization page with the **Application ID** of your [application](https://discordapp.com/developers/docs/topics/oauth2#bots) and the **Permissions Integer**.
`https://discordapp.com/api/oauth2/authorize?client_id=[APPLICATION_ID]&scope=bot&permissions=[PERMISSIONS_INTEGER]`
![Screenshot of Discord bot auth](/images/screenshots/discord-auth.png)
Wait for the confirmation which should say "Authorized".
Once the bot has been added to your server, get the channel ID of the channel you want the bot to operate in. In The Discord application go to **Settings** > **Advanced** > **Enable Developer Mode**.
<p class='img'>
<img src='/images/screenshots/discord-api.png' />
</p>
![Screenshot of Discord bot create prompt](/images/screenshots/discord-api.png)
Right click channel name and copy the channel ID (**Copy ID**).

View File

@ -10,6 +10,7 @@ ha_codeowners:
- '@runningman84'
- '@stephan192'
- '@Hummel95'
- '@andarotajo'
ha_platforms:
- sensor
ha_integration_type: integration

View File

@ -47,6 +47,18 @@ prices for electricity that you use (buy) or return (sell). Every day around
- Time of day when the price is highest
- Time of day when the price is at its lowest
- Percentage of the current price compared to the maximum price
- Number of hours with the current price higher or lower
Entities with the number of hours indicate how many hours there are with a price
**above** or **below** the current hourly price. If we take the graph below as an example
and it is 00:30, then there are 8 hours below the current price and 4 hours above the
current price. With this information, you could switch devices at the X cheapest number
of hours during the day.
<p class='img'>
<img src='/images/integrations/easyenergy/pricegraph.png' alt='Screenshot showing energy price graph.'>
Example showing the energy price graph.
</p>
### Gas market price

View File

@ -27,7 +27,7 @@ The following steps must be performed to set up this integration. For security r
2. Pick your station -> Menu Others -> DIY Upload Servers.
3. Hit next and select 'Customized'
4. Pick the protocol Ecowitt, and put in the ip/hostname of your Home Assistant server.
5. Path have to match!
5. Path has to match! If using the Ecowitt App, remove the first forward slash from the API token, as the app will prepend one.
6. Save configuration.
Ecowitt doesn't support TLS/SSL, you can use the NGINX TLS Proxy Add-on to support HTTPS and HTTP at the same time.

View File

@ -15,7 +15,7 @@ ha_codeowners:
<div class='note warning'>
Be aware that `emulated_hue` doesn't work for new users of **Google Home** with `emulated_hue`. If you've not previously set this up and had it working, use the [Google Assistant component](/integrations/google_assistant/) or [Nabu Casa cloud](/integrations/cloud) component.
Be aware that `emulated_hue` doesn't work for new users of **Google Home** with `emulated_hue`. If you've not previously set this up and had it working, use the [Google Assistant](/integrations/google_assistant/) integration or [Nabu Casa cloud](/integrations/cloud) integration.
</div>
@ -41,13 +41,13 @@ If you added or upgraded to a newer Alexa device and devices are not found, you
<div class='note'>
[Sleep Cycle](https://www.sleepcycle.com) and [Sleep as Android](https://sleep.urbandroid.org): smart alarm clock app can use emulated_hue to turn on and off entities. Sleep Cycle only has it implemented in the iOS app, see [Sleep Cycle support](https://support.sleepcycle.com/hc/en-us/articles/207670385-Does-Sleep-Cycle-integrates-with-Phillips-Hue-). The app requires the same configuration as Google Home and does not work if the type is defined as Alexa in the configuration.
[Sleep Cycle](https://www.sleepcycle.com) and [Sleep as Android](https://sleep.urbandroid.org): smart alarm clock app can use emulated_hue to turn on and off entities. Sleep Cycle only has it implemented in the iOS app, see [Sleep Cycle support](https://support.sleepcycle.com/hc/articles/207670385-Does-Sleep-Cycle-integrates-with-Phillips-Hue-). The app requires the same configuration as Google Home and does not work if the type is defined as Alexa in the configuration.
</div>
<div class='note'>
Logitech Harmony remotes cannot connect to this emulator via Android and iOS mobile applications because they require the physical button on the hub to be pressed. The [MyHarmony desktop software](https://support.myharmony.com/en-us/download) must be used with the original cable to connect it, then "Scan for Devices".
Logitech Harmony remotes cannot connect to this emulator via Android and iOS mobile applications because they require the physical button on the hub to be pressed. The [MyHarmony desktop software](https://support.myharmony.com/download) must be used with the original cable to connect it, then "Scan for Devices".
</div>
@ -174,7 +174,7 @@ On Linux systems (Ubuntu, Debian, etc) execute the following command to allow `e
sudo setcap 'cap_net_bind_service=+ep' /srv/homeassistant/homeassistant_venv/bin/python3
```
Please note that your path may be different depending on your installation method. For example, if you followed the [Virtualenv instructions](/docs/installation/virtualenv/), your path will be `/srv/homeassistant/bin/python3`.
Please note that your path may be different depending on your installation method. For example, if you followed the [Virtualenv instructions](/installation/linux/), your path will be `/srv/homeassistant/bin/python3`.
### License

View File

@ -24,7 +24,7 @@ ha_integration_type: integration
The [EnOcean](https://en.wikipedia.org/wiki/EnOcean) standard is supported by many different vendors. There are switches and sensors of many different kinds, and typically they employ energy harvesting to get power such that no batteries are necessary.
The EnOcean integration adds support for some of these devices. You will need a controller like the [USB300](https://www.enocean.com/en/enocean_modules/usb-300/) in order for it to work.
The EnOcean integration adds support for some of these devices. You will need a controller like the [USB300](https://www.enocean.com/product/usb-300/) in order for it to work.
There is currently support for the following device types within Home Assistant:
@ -44,7 +44,7 @@ The following devices have been confirmed to work out of the box:
- EnOcean STM-330 temperature sensor
- Hoppe SecuSignal window handle from Somfy
If you own a device not listed here, please check whether your device can talk in one of the listed [EnOcean Equipment Profiles](https://www.enocean-alliance.org/what-is-enocean/specifications/) (EEP). If it does, it will most likely work. The available profiles are usually listed somewhere in the device manual.
If you own a device not listed here, please check whether your device can talk in one of the listed [EnOcean Equipment Profiles](https://www.enocean-alliance.org/specifications/) (EEP). If it does, it will most likely work. The available profiles are usually listed somewhere in the device manual.
Support for tech-in messages is not implemented.
@ -58,10 +58,10 @@ This can typically be one of those batteryless wall switches.
Tested with:
- Eltako FT55 which uses the EnOcean PTM 215 module
- [TRIO2SYS Wall switches](https://www.trio2sys.fr/index.php/fr/produits-enocean-sans-fil-sans-pile-interoperable/emetteur-sans-fils-sans-pile-interoperable-enocean) which uses the EnOcean PTM210 DB module
- [TRIO2SYS Wall switches](https://www.trio2sys.fr/index.php/produits-enocean-sans-fil-sans-pile-interoperable/emetteur-sans-fils-sans-pile-interoperable-enocean) which uses the EnOcean PTM210 DB module
- Omnio WS-CH-102
The following [EnOcean Equipment Profiles](https://www.enocean-alliance.org/what-is-enocean/specifications/) are supported:
The following [EnOcean Equipment Profiles](https://www.enocean-alliance.org/specifications/) are supported:
- F6-02-01 (Light and Blind Control - Application Style 2)
- F6-02-02 (Light and Blind Control - Application Style 1)
@ -107,7 +107,7 @@ Sample automation to switch lights on and off:
```yaml
# Example automation to turn lights on/off on button release
automation:
- alias: "hall light switches"
- alias: "Hall light switches"
trigger:
platform: event
event_type: button_pressed
@ -122,7 +122,7 @@ automation:
{% endraw %}
You can find the `event_data` `id` by going to "Developer Tools" -> "Events" and listening to “button_pressed” events. Then hit a button on the device and you should see an event.
You can find the `event_data` `id` by going to {% my developer_events title="Developer Tools -> Events" %} and listening to “button_pressed” events. Then hit a button on the device and you should see an event.
## Light
@ -207,7 +207,7 @@ sensor:
### Humidity sensor
The following [EnOcean Equipment Profiles](https://www.enocean-alliance.org/what-is-enocean/specifications/) are supported:
The following [EnOcean Equipment Profiles](https://www.enocean-alliance.org/specifications/) are supported:
- Any profile that contains the humidity value at position **DB2.7** to **DB2.0**
- **A5-04-01** - Temp. and Humidity Sensor, Range 0°C to +40°C and 0% to 100%
@ -229,7 +229,7 @@ sensor:
This sensor has been tested with a generic STM-330 sensor, which is used in most indoor temperature sensor devices.
The following [EnOcean Equipment Profiles](https://www.enocean-alliance.org/what-is-enocean/specifications/) are supported:
The following [EnOcean Equipment Profiles](https://www.enocean-alliance.org/specifications/) are supported:
- Any profile that contains an 8-bit temperature at position DB1.7 to DB1.0. 10-bit is not supported.
- **A5-02-01** to **A5-02-1B** - Temperature Sensor with various temperature ranges

View File

@ -72,6 +72,7 @@ Tested devices:
- Epson ET-2650
- Epson ET-4750
- Epson EcoTank ET-5150 (51x0)
- Epson Expression Home XP-2100
- Epson Expression Home XP-2105
To make this module work you need to connect your printer to your LAN.

View File

@ -20,9 +20,6 @@ The Fan integration allows you to control and monitor Fan devices.
Available services:
`fan.set_percentage`, `fan.set_preset_mode`, `fan.set_direction`, `fan.oscillate`, `fan.turn_on`, `fan.turn_off`, `fan.toggle`, `fan.increase_speed`, `fan.decrease_speed`
Deprecated services:
`fan.set_speed`
<div class='note'>
Not all fan services may be available for your platform. You can check which services are available for your fan(s) under **Developer Tools** -> **Services**.
@ -144,15 +141,6 @@ Turn fan device off. This is only supported if the fan device supports being tur
| `entity_id` | yes | String or list of strings that define the entity ID(s) of fan device(s) to control. To target all fan devices, use `all`.
### Deprecated Service `fan.set_speed`
Sets the speed for fan device.
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
| `entity_id` | yes | String or list of strings that define the entity ID(s) of fan device(s) to control. To target all fan devices, use `all`.
| `speed` | no | Speed setting
#### Automation example
```yaml

View File

@ -160,6 +160,22 @@ optimistic:
required: false
type: boolean
default: "`true` if no state topic defined, else `false`."
direction_command_template:
description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to generate the payload to send to `direction_command_topic`.
required: false
type: template
direction_command_topic:
description: The MQTT topic to publish commands to change the direction state.
required: false
type: string
direction_state_topic:
description: The MQTT topic subscribed to receive direction state updates.
required: false
type: string
direction_value_template:
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract a value from the direction."
required: false
type: template
oscillation_command_template:
description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to generate the payload to send to `oscillation_command_topic`.
required: false
@ -175,7 +191,7 @@ oscillation_state_topic:
oscillation_value_template:
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract a value from the oscillation."
required: false
type: string
type: template
payload_available:
description: The payload that represents the available state.
required: false
@ -231,7 +247,7 @@ percentage_state_topic:
percentage_value_template:
description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract the `percentage` value from the payload received on `percentage_state_topic`.
required: false
type: string
type: template
preset_mode_command_template:
description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to generate the payload to send to `preset_mode_command_topic`.
required: false
@ -247,7 +263,7 @@ preset_mode_state_topic:
preset_mode_value_template:
description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract the `preset_mode` value from the payload received on `preset_mode_state_topic`.
required: false
type: string
type: template
preset_modes:
description: List of preset modes this fan is capable of running at. Common examples include `auto`, `smart`, `whoosh`, `eco` and `breeze`.
required: false
@ -280,7 +296,7 @@ state_topic:
state_value_template:
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract a value from the state."
required: false
type: string
type: template
unique_id:
description: An ID that uniquely identifies this fan. If two fans have the same unique ID, Home Assistant will raise an exception.
required: false
@ -309,6 +325,9 @@ mqtt:
- name: "Bedroom Fan"
state_topic: "bedroom_fan/on/state"
command_topic: "bedroom_fan/on/set"
direction_state_topic: "bedroom_fan/direction/state"
direction_command_topic: "bedroom_fan/direction/set"
oscillation_command_topic: "bedroom_fan/oscillation/set"
oscillation_state_topic: "bedroom_fan/oscillation/state"
oscillation_command_topic: "bedroom_fan/oscillation/set"
percentage_state_topic: "bedroom_fan/speed/percentage_state"
@ -343,6 +362,8 @@ mqtt:
- name: "Bedroom Fan"
command_topic: "bedroom_fan/on/set"
command_template: "{ state: '{{ value }}'}"
direction_command_template: "{{ iif(value == 'forward', 'fwd', 'rev') }}"
direction_value_template: "{{ iif(value == 'fwd', 'forward', 'reverse') }}"
oscillation_command_topic: "bedroom_fan/oscillation/set"
oscillation_command_template: "{ oscillation: '{{ value }}'}"
percentage_command_topic: "bedroom_fan/speed/percentage"
@ -358,3 +379,18 @@ mqtt:
```
{% endraw %}
This example shows how to configure a fan that doesn't use `forward` and `backward` as directions.
{% raw %}
```yaml
# Example configuration.yaml with direction templates
mqtt:
fan:
- name: "Bedroom Fan"
direction_command_template: "{{ iif(value == 'forward', 'fwd', 'rev') }}"
direction_value_template: "{{ iif(value == 'fwd', 'forward', 'reverse') }}"
```
{% endraw %}

View File

@ -1,12 +1,12 @@
---
title: Amazon Fire TV
description: Connect and control your Amazon Fire TV devices using the Android TV integration
description: Connect and control your Amazon Fire TV devices using the Android Debug Bridge integration
ha_category:
- Media Player
ha_domain: fire_tv
ha_integration_type: virtual
ha_supporting_domain: androidtv
ha_supporting_integration: Android TV
ha_supporting_integration: Android Debug Bridge
ha_release: 0.7.6
ha_codeowners:
- '@JeffLIrion'

View File

@ -17,7 +17,7 @@ To get an overview about the available [currencies](https://fixer.io/symbols).
## Setup
You need to create an [API key](https://fixer.io/product). The free account is limited to only EUR as a base currency, allows 250 requests per month, and updates every hour.
You need to create an [API key](https://apilayer.com/marketplace/fixer-api#pricing). The free account is limited to only EUR as a base currency, allows 100 requests per month, and updates every hour.
## Configuration

View File

@ -83,7 +83,7 @@ These devices have been sold under at least the following brands:
- [Diode Dynamics](https://www.diodedynamics.com/)
- [Flux LED](https://www.fluxsmartlighting.com/)
- [FVTLED](https://fvtled.com/)
- [GEV LIG](https://www.gev.de/)
- GEV LIG
- GEYUEYA Home
- GIDEALED
- [GIDERWEL](https://giderwel.com/)
@ -98,7 +98,7 @@ These devices have been sold under at least the following brands:
- INDARUN
- iNextStation
- [Koopower](https://www.koopower.com/)
- [Lallumer](https://www.lapuretes.cn/)
- Lallumer
- LEDENET
- [LiteWRX](https://litewrx.com/)
- Lytworx

View File

@ -71,6 +71,7 @@ The Forecast.Solar integration mainly provides sensors that you can use in your
automations.
- Estimated Energy Production - Today (in kWh)
- Estimated Energy Production - Remaining Today (in kWh)
- Estimated Energy Production - Tomorrow (in kWh)
- Estimated Energy Production - This Hour (in kWh)
- Estimated Energy Production - Next Hour (in kWh)

View File

@ -2,6 +2,7 @@
title: Freebox
description: Instructions on how to integrate Freebox routers into Home Assistant.
ha_category:
- Camera
- Network
- Presence Detection
- Sensor
@ -15,6 +16,7 @@ ha_config_flow: true
ha_domain: freebox
ha_platforms:
- button
- camera
- device_tracker
- sensor
- switch
@ -29,6 +31,7 @@ There is currently support for the following device types within Home Assistant:
* [Sensor](#sensor) with metrics for connection speed, internal temperature, free partition space and missed calls
* [Device tracker](#presence-detection) for connected devices
* [Switch](#switch) to control Wi-Fi
* [Camera](#camera)
{% include integrations/config_flow.md %}
@ -79,6 +82,8 @@ The first time Home Assistant will connect to your Freebox, you will need to aut
To make the Wi-Fi switch and the reboot service working you will have to add "Modification des réglages de la Freebox" permission to Home Assistant application in "Paramètres de la Freebox" > "Gestion des accès" > "Applications".
To use cameras from the Freebox Delta, you will have to add "Gestion de l'alarme et maison connectée" permission to Home Assistant application in "Paramètres de la Freebox" > "Gestion des accès" > "Applications".
### Supported routers
Only the routers with Freebox OS are supported:
@ -112,6 +117,9 @@ The monitored metrics are:
* Free partition space of used disks
* Number of missed calls
## Camera
Cameras are only available in Freebox V7 (also known as Freebox Delta).
## Service
### Service `freebox.reboot`

View File

@ -14,7 +14,7 @@ ha_platforms:
ha_integration_type: integration
---
The Global Caché [GC-100](https://www.globalcache.com/products/gc-100/) can be integrated into Home Assistant. GC-100 is a TCP-controllable
The Global Caché GC-100 can be integrated into Home Assistant. GC-100 is a TCP-controllable
hardware device which has an array of relays, RS232 serial ports, and flexible ports which can be programmed to be either digital inputs or IR blaster outputs. There are a variety of submodels of the GC-100 which have different amounts of each I/O type.
There is currently support for the following device types within Home Assistant:

View File

@ -78,13 +78,15 @@ The integration setup will next give you instructions to enter the [Application
1. Continue through the steps of selecting the account you want to authorize.
2. **NOTE**: You may get a message telling you that the app has not been verified and you will need to acknowledge that in order to proceed.
2. If your Google account settings are set to a language not supported by the SDK -- which can be noticed by the authentication screen of Google being localized in that language -- the authorization will fail without a clear error. Changing the language at the bottom of the error page to one that is [supported](https://developers.google.com/assistant/sdk/reference/rpc/languages) by the SDK will allow you to continue to the link page of Home Assistant.
3. You can now see the details of what you are authorizing Home Assistant to access with two options at the bottom. Click **Continue**.
3. **NOTE**: You may get a message telling you that the app has not been verified and you will need to acknowledge that in order to proceed.
4. The page will now display _Link account to Home Assistant?_, note _Your instance URL_. If this is not correct, please refer to [My Home Assistant](/integrations/my). If everything looks good, click **Link Account**.
4. You can now see the details of what you are authorizing Home Assistant to access with two options at the bottom. Click **Continue**.
5. You may close the window, and return back to Home Assistant where you should see a _Success!_ message from Home Assistant.
5. The page will now display _Link account to Home Assistant?_, note _Your instance URL_. If this is not correct, please refer to [My Home Assistant](/integrations/my). If everything looks good, click **Link Account**.
6. You may close the window, and return back to Home Assistant where you should see a _Success!_ message from Home Assistant.
{% enddetails %}

View File

@ -145,3 +145,19 @@ Also an event `habitica_api_call_success` will be fired with the following data:
"id": "NEW_TASK_UUID"}
}
```
## Templating
`sensor.habitica_USER_dailys`, `sensor.habitica_USER_habits`, `sensor.habitica_USER_rewards`, and `sensor.habitica_USER_todos` have state attributes listing the user's respective tasks. For example, you can see this information in **Developer Tools** -> **States** -> `sensor.habitica_USER_dailys` -> **Attributes**, or by adding a [Markdown card](/dashboards/markdown/) to a dashboard with the following code:
{% raw %}
```jinja
{% for key, value in states.sensor.habitica_USER_dailys.attributes.items() %}
{% if 'text' in value | string %}
{{ loop.index }}. {{ value.text }}
{% endif %}
{% endfor %}
```
{% endraw %}

View File

@ -68,6 +68,8 @@ For Home Assistant Host, the following sensors are available:
For each installed add-on Supervisor provides following binary sensors:
(These entities are disabled by default and must be reenabled to appear)
| Sensor | Enabled by default | Description |
| ------- | ------------------ | ----------- |
| Update Available | no | Whether there is an update available for this add-on (This is deprecated, use the Update entities instead.)

View File

@ -24,148 +24,7 @@ This integration is by default enabled, unless you've disabled or removed the [`
history:
```
<p class='img'>
<a href='/images/screenshots/component_history_24h.png'>
<img src='/images/screenshots/component_history_24h.png' />
</a>
</p>
<div class='note'>
Events are saved in a local database. Google Graphs is used to draw the graph.
Drawing is happening 100% in your browser. No data is transferred to anyone at any time.
</div>
{% configuration %}
exclude:
description: Configure which integrations should **not** be displayed.
required: false
type: map
keys:
entities:
description: The list of entity ids to be excluded from the history.
required: false
type: list
entity_globs:
description: Include all entities matching a listed pattern when creating logbook entries (e.g., `sensor.weather_*`).
required: false
type: list
domains:
description: The list of domains to be excluded from the history.
required: false
type: list
include:
description: Configure which integrations should be displayed.
required: false
type: map
keys:
entities:
description: The list of entity ids to be included in the history.
required: false
type: list
entity_globs:
description: Include all entities matching a listed pattern when creating logbook entries (e.g., `sensor.weather_*`).
required: false
type: list
domains:
description: The list of domains to be included in the history.
required: false
type: list
{% endconfiguration %}
Without any `include` or `exclude` configuration the history displays graphs for
every entity (well that's not exactly true -
`scenes` are never shown) on a given date. If you are only interested in some
of the entities you have several options:
Define domains and entities to `exclude` (aka. blocklist). This is convenient
when you are basically happy with the information displayed, but just want to
remove some entities or domains. Usually these are entities/domains which do not
change or rarely change (like `updater` or `automation`).
```yaml
# Example configuration.yaml entry with exclude
history:
exclude:
domains:
- automation
- updater
entities:
- sensor.last_boot
- sensor.date
entity_globs:
- binary_sensor.*_occupancy
```
Define domains and entities to display by using the `include` configuration
(aka. allowlist). If you have a lot of entities in your system and your
`exclude` list is getting too large, it might be better just to define the
entities or domains to `include`.
```yaml
# Example configuration.yaml entry with include
history:
include:
domains:
- sensor
- switch
- media_player
```
Use the `include` list to define the domains/entities to display, and exclude
some of them within the `exclude` list. This makes sense if you, for instance,
include the `sensor` domain, but want to exclude some specific sensors. Instead
of adding every sensor entity to the `include` `entities` list just include the
`sensor` domain and exclude the sensor entities you are not interested in.
Note that the order of any `include` `entities` will be displayed as listed in
the configuration, otherwise, the display order is arbitrary.
```yaml
# Example configuration.yaml entry with include and exclude
history:
include:
domains:
- sensor
- switch
- media_player
exclude:
entities:
- sensor.last_boot
- sensor.date
```
{% include common-tasks/filters.md %}
#### Implementation details
The history is stored in a SQLite database `home-assistant_v2.db` within your
configuration directory unless the `recorder` integration is set up differently.
- events table is all that happened while recorder integration was running.
- states table contains all the `new_state` values of `state_changed` events.
- Inside the states table you have:
- `entity_id`: the entity_id of the entity
- `state`: the state of the entity
- `attributes`: JSON of the state attributes
- `last_changed`: timestamp last time the state has changed.
- `last_updated`: timestamp anything has changed (state, attributes)
- `created`: timestamp this entry was inserted into the database
When the `history` integration queries the states table it only selects states
where the state has changed: `WHERE last_changed=last_updated`
#### On dates
SQLite databases do not support native dates. That's why all the dates are saved
in seconds since the UNIX epoch. Convert them manually using
[this site](https://www.epochconverter.com/) or in Python:
```python
from datetime import datetime
datetime.fromtimestamp(1422830502)
```
#### API
## API
The history information is also available through the
[RESTful API](/developers/rest_api/#get-apihistory).

View File

@ -129,6 +129,11 @@ duration:
</div>
### Video Tutorial
This video tutorial explains how you can use history stats. It also shows how you can create a daily bar chart graph to visualize things such as occupancy, or how long the lights are on in a particular room.
<lite-youtube videoid="BMlU4SynQBY" videotitle="How To Master Graphs to Monitor Occupancy and Device Usage in Home Assistant" posterquality="maxresdefault"></lite-youtube>
### Examples
Here are some examples of periods you could work with, and what to write in your `configuration.yaml`:

View File

@ -43,7 +43,9 @@ Note that it depends on the appliance and on API permissions which of the featur
- OAuth Flow: Authorization Code Grant Flow
- Redirect URI: `https://my.home-assistant.io/redirect/oauth`
*Important*:
*Important*:
- **Power on** all your appliances during the integration configuration process; otherwise appliance programs list will be empty.
- To update the appliance programs list, you can reload the Home Connect integration when an appliance is turned on. If the re-initialization process is not triggered by reload, restart the Home Assistant when an appliance is turned on.
- After performing the steps above **log out** of your Home Connect Developer account. If you don't do this, the configuration steps below will fail during OAuth authentication with the message `“error”: “unauthorized_client”`.
- The provided Home Connect User Account email address **must** be all lowercase otherwise it will result in authentication failures.
- All changes in the developer portal take 15 minutes before the change is implemented.

View File

@ -1,5 +1,5 @@
---
title: HomeKit
title: HomeKit Bridge
description: Instructions on how to set up the HomeKit Bridge integration in Home Assistant.
featured: true
ha_category:
@ -253,13 +253,18 @@ homekit:
type: integer
default: 1316
video_codec:
description: Only for `camera` entities. FFmpeg video codec for transcoding. `copy` option reduces CPU load when video source already encoded with `H264` (MPEG4). `h264_omx` option is only available with custom FFmpeg builds and enables GPU Hardware acceleration on Raspberry Pi.
description: Only for `camera` entities. FFmpeg video codec for transcoding. `copy` option reduces CPU load when video source is already encoded with `H264` (MPEG4). `h264_v4l2m2m` can be used with supported hardware, e.g., the Raspberry Pi, to offload encoding to hardware. The `h264_omx` option is only available with custom FFmpeg builds and enables GPU Hardware acceleration on Raspberry Pi.
required: false
type: string
default: libx264
available options: copy, libx264, h264_omx
available options: copy, libx264, h264_v4l2m2m, h264_omx
video_profile_names:
description: Only for `camera` entities. FFmpeg video profile names for transcoding, only relevant if `video_codec` isn't `copy`. Some encoders, e.g., the Raspberry Pi's `h264_v4l2m2m`, don't use the standard `["baseline", "main", "high"]` profile names but expects `["0", "2", "4"]` instead. Use this option to override the default names, if needed.
required: false
type: list
default: ["baseline", "main", "high"]
audio_codec:
description: Only for `camera` entities. FFmpeg audio codec for transcoding. `copy` option reduces CPU load when audio source already encoded with `libopus`.
description: Only for `camera` entities. FFmpeg audio codec for transcoding. `copy` option reduces CPU load when audio source is already encoded with `libopus`.
required: false
type: string
default: libopus

View File

@ -33,11 +33,11 @@ Home Assistant is integrated with the following devices through [https://mytotal
- Thermostats
- Every thermostat is exposed as a climate entity
- Known working devices: TH6320R1004, RTH9585WF1004
- Known working devices: [TH6320R1004](https://customer.resideo.com/en-US/Pages/Product.aspx?cat=HonECC%2520Catalog&pid=TH6320R1004/U), [RTH9585WF1004](https://www.honeywellhome.com/us/en/products/air/thermostats/wifi-thermostats/wifi-color-touchscreen-thermostat-rth9585wf1004-u/)
- Sensors
- A Temperature sensor entity.
- A Humidity sensor entity.
- Known working devices: C7089R1013
- Known working devices: [C7089R1013](https://customer.resideo.com/en-US/Pages/Product.aspx?cat=HonECC%20Catalog&pid=C7089R1013/U)
Others devices like Security systems are not currently supported by this integration
@ -45,7 +45,7 @@ Others devices like Security systems are not currently supported by this integra
The climate platform integrates Honeywell US-based thermostats into Home Assistant, allowing control of the thermostat through the user interface. The current inside temperature, operating mode, and fan state are also displayed on the thermostat card.
All [climate services](/integrations/climate) are supported except set_swing_mode
All [climate services](/integrations/climate) are supported except set_swing_mode.
## Sensor

View File

@ -42,7 +42,7 @@ server_port:
type: integer
default: 8123
ssl_certificate:
description: Path to your TLS/SSL certificate to serve Home Assistant over a secure connection. If using the [Let's Encrypt add-on](https://github.com/home-assistant/hassio-addons/tree/master/letsencrypt) this will be at `/ssl/fullchain.pem`. We recommend to use the [NGINX add-on](https://github.com/home-assistant/addons/tree/master/nginx_proxy) instead of using this option.
description: Path to your TLS/SSL certificate to serve Home Assistant over a secure connection. If using the [Let's Encrypt add-on](https://github.com/home-assistant/addons/tree/master/letsencrypt) this will be at `/ssl/fullchain.pem`. We recommend to use the [NGINX add-on](https://github.com/home-assistant/addons/tree/master/nginx_proxy) instead of using this option.
required: false
type: string
ssl_peer_certificate:
@ -50,7 +50,7 @@ ssl_peer_certificate:
required: false
type: string
ssl_key:
description: Path to your TLS/SSL key to serve Home Assistant over a secure connection. If using the [Let's Encrypt add-on](https://github.com/home-assistant/hassio-addons/tree/master/letsencrypt) this will be at `/ssl/privkey.pem`.
description: Path to your TLS/SSL key to serve Home Assistant over a secure connection. If using the [Let's Encrypt add-on](https://github.com/home-assistant/addons/tree/master/letsencrypt) this will be at `/ssl/privkey.pem`.
required: false
type: string
cors_allowed_origins:
@ -118,7 +118,7 @@ http:
## APIs
On top of the `http` integration is a [REST API](https://developers.home-assistant.io/docs/api/rest), [Python API](https://developers.home-assistant.io/docs/api_lib_index) and [WebSocket API](https://developers.home-assistant.io/docs/api/websocket) available.
On top of the `http` integration is a [REST API](https://developers.home-assistant.io/docs/api/rest/), [Python API](https://developers.home-assistant.io/docs/api_lib_index/) and [WebSocket API](https://developers.home-assistant.io/docs/api/websocket/) available.
The `http` platforms are not real platforms within the meaning of the terminology used around Home Assistant. Home Assistant's [REST API](/developers/rest_api/) sends and receives messages over HTTP.
@ -188,7 +188,7 @@ $ curl -X POST -H "Authorization: Bearer LONG_LIVED_ACCESS_TOKEN" \
http://localhost:8123/api/states/binary_sensor.radio
```
To check if the sensor is working, use again `curl` to retrieve the [current state](/developers/rest_api/#get-apistatesltentity_id).
To check if the sensor is working, use again `curl` to retrieve the [current state](https://developers.home-assistant.io/docs/api/rest/).
```bash
$ curl -X GET -H "Authorization: Bearer LONG_LIVED_ACCESS_TOKEN" \
@ -227,7 +227,7 @@ print(response.text)
#### Using `httpie`
[`httpie`](https://github.com/jkbrzt/httpie) is a user-friendly CLI HTTP client.
[`httpie`](https://github.com/httpie/httpie) is a user-friendly CLI HTTP client.
```bash
$ http -v POST http://localhost:8123/api/states/binary_sensor.radio \
@ -266,7 +266,7 @@ $ curl -X POST -H "Authorization: Bearer LONG_LIVED_ACCESS_TOKEN" \
http://localhost:8123/api/states/sensor.bathroom_temperature
```
You can then use `curl` again to retrieve the [current sensor state](/developers/rest_api/#get-apistatesltentity_id) and verify the sensor is working.
You can then use `curl` again to retrieve the [current sensor state](https://developers.home-assistant.io/docs/api/rest/) and verify the sensor is working.
```bash
$ curl -X GET -H "Authorization: Bearer LONG_LIVED_ACCESS_TOKEN" \

View File

@ -121,7 +121,7 @@ device:
required: false
type: string
device_class:
description: The device class of the MQTT device. Must be either `humidifier` or `dehumidifier`.
description: The device class of the MQTT device. Must be either `humidifier`, `dehumidifier` or `null`.
required: false
type: string
default: humidifier
@ -221,7 +221,7 @@ target_humidity_state_topic:
target_humidity_state_template:
description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract a value for the humidifier `target_humidity` state.
required: false
type: string
type: template
mode_command_template:
description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to generate the payload to send to `mode_command_topic`.
required: false
@ -237,7 +237,7 @@ mode_state_topic:
mode_state_template:
description: Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract a value for the humidifier `mode` state.
required: false
type: string
type: template
modes:
description: List of available modes this humidifier is capable of running at. Common examples include `normal`, `eco`, `away`, `boost`, `comfort`, `home`, `sleep`, `auto` and `baby`. These examples offer built-in translations but other custom modes are allowed as well. This attribute ust be configured together with the `mode_command_topic` attribute.
required: false
@ -260,7 +260,7 @@ state_topic:
state_value_template:
description: "Defines a [template](/docs/configuration/templating/#using-templates-with-the-mqtt-integration) to extract a value from the state."
required: false
type: string
type: template
unique_id:
description: An ID that uniquely identifies this humidifier. If two humidifiers have the same unique ID, Home Assistant will raise an exception.
required: false

View File

@ -178,7 +178,7 @@ Set the type for connected power source. Available options are Hardwired Power S
### Calling a Powerview Scene
``` yaml
alias: "blinds closed at night"
alias: "Blinds closed at night"
trigger:
platform: time
at: "18:00:00"

View File

@ -11,6 +11,7 @@ ha_platforms:
ha_integration_type: integration
ha_codeowners:
- '@engrbm87'
- '@jbouwh'
ha_config_flow: true
---
@ -49,6 +50,21 @@ Below is an example for setting up the integration to connect to your Microsoft
- Password: Your password
- Charset: `US-ASCII`
### Selecting an alternate SSL cipher list (advanced mode)
If the default IMAP server settings do not work, you might try to set an alternate SLL cipher list.
The SSL cipher list option allows to select the list of SSL ciphers to be accepted from this endpoint. `default` (_system default_), `modern` or `intermediate` (_inspired by [Mozilla Security/Server Side TLS](https://wiki.mozilla.org/Security/Server_Side_TLS)_)
<div class='note info'>
The SSL cipher list is an advanced setting. The option is available only when advanced mode is enabled (see user settings).
</div>
### Troubleshooting
Email providers may limit the number of reported emails. The number may be less than the limit (10,000 at least for Yahoo) even if you set the `IMAP search` to reduce the number of results. If you are not getting expected events and cleaning your Inbox or the configured folder is not desired, set up an email filter for the specific sender to go into a new folder. Then create a new config entry or modify the existing one with the desired folder.
### 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.
@ -66,7 +82,7 @@ search:
folder:
description: The IMAP folder configuration
text:
description: The email body `text` of the the message
description: The email body `text` of the the message (only the first 2048 bytes will be available)
sender:
description: The `sender` of the message
subject:

View File

@ -1,151 +0,0 @@
---
title: IMAP Email Content
description: Instructions on how to integrate IMAP email content sensor into Home Assistant.
ha_category:
- Mailbox
ha_iot_class: Cloud Push
ha_release: 0.25
ha_domain: imap_email_content
ha_platforms:
- sensor
ha_integration_type: integration
---
The `imap_email_content` integration will read emails from an IMAP email server and report them as a state change within Home Assistant. This is useful if you have a device that only reports its state via email.
## Configuration
To enable this sensor, add the following lines to your `configuration.yaml` file:
```yaml
# Example configuration.yaml entry
sensor:
- platform: imap_email_content
server: imap.gmail.com
port: 993
username: YOUR_USERNAME
password: YOUR_PASSWORD
folder: YOUR_FOLDER
senders:
- example@gmail.com
```
{% configuration %}
server:
description: The IP address or hostname of the IMAP server.
required: true
type: string
port:
description: The port where the server is accessible.
required: false
default: 993
type: integer
name:
description: Name of the IMAP sensor.
required: false
type: string
username:
description: Username for the IMAP server.
required: true
type: string
password:
description: Password for the IMAP server.
required: true
type: string
folder:
description: Folder to get mails from.
required: false
default: INBOX
type: string
senders:
description: A list of sender email addresses that are allowed to report state via email. Only emails received from these addresses will be processed.
required: true
type: string
value_template:
description: If specified this template will be used to render the state of the sensor. If a template is not supplied the message subject will be used for the sensor value. The following attributes will be supplied to the template.
required: false
type: template
keys:
from:
description: The from address of the email.
body:
description: The body of the email.
subject:
description: The subject of the email.
date:
description: The date and time the email was sent.
verify_ssl:
description: If the SSL certificate of the server needs to be verified.
required: false
type: boolean
default: true
{% endconfiguration %}
## 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
sensor:
- platform: imap_email_content
server: imap.gmail.com
name: house_electricity
port: 993
username: MY_EMAIL_USERNAME
password: MY_EMAIL_PASSWORD
senders:
- no-reply@smartconnect.apc.com
value_template: >-
{% if 'UPS On Battery' in subject %}
power_out
{% elif 'Power Restored' in subject %}
power_on
{% endif %}
```
{% endraw %}
The same template structure can scan the date, body or sender for matching text before setting the state of the sensor.
## 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:
- sensor:
- name: "Previous Day Energy Use"
unit_of_measurement: "kWh"
state: >
{{ state_attr('sensor.energy_email','body')
| regex_findall_index("\*Yesterday's Energy Use:\* ([0-9]+) kWh") }}
- name: "Previous Day Cost"
unit_of_measurement: "$"
state: >
{{ state_attr('sensor.energy_email', 'body')
| regex_findall_index("\*Yesterday's estimated energy cost:\* \$([0-9.]+)") }}
- name: "Billing Cycle Total"
unit_of_measurement: "$"
state: >
{{ state_attr('sensor.energy_email', 'body')
| 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 of other emails.

View File

@ -14,15 +14,15 @@ ha_integration_type: helper
The Input Boolean helper integration allows you to define boolean values that
can be controlled via the user interface and can be used within conditions of
an automation. This can for example be used to disable or enable certain
automations by using them in their conditions.
an {% term automation %}. This can for example be used to disable or enable certain
automations by using them in their {% term conditions %}.
## Configuration
The preferred way to configure input boolean helpers is via the user interface,
in which they are known as Toggle Helpers. To add one, go to
**{% my helpers title="Settings -> Devices & Services -> Helpers" %}** and click the add button;
next choose the "**Toggle**" option.
**{% my helpers title="Settings > Devices & Services > Helpers" %}** and click the add button;
next choose the **{% my config_flow_start domain=input_boolean title="Toggle" %}** option.
To be able to add **Helpers** via the user interface you should have
`default_config:` in your `configuration.yaml`, it should already be there by
@ -32,14 +32,6 @@ then you can use the UI.
Input booleans can also be configured via `configuration.yaml`:
```yaml
# Example configuration.yaml entry
input_boolean:
notify_home:
name: Notify when someone arrives home
icon: mdi:car
```
{% configuration %}
input_boolean:
description: Alias for the input. Multiple entries are allowed.
@ -61,9 +53,17 @@ input_boolean:
type: icon
{% endconfiguration %}
```yaml
# Example configuration.yaml entry
input_boolean:
notify_home:
name: Notify when someone arrives home
icon: mdi:car
```
## Services
This integration provides the following services to modify the state of the
This integration provides the following {% term services %} to modify the state of the
`input_boolean` and a service to reload the configuration without restarting
Home Assistant itself.
@ -105,7 +105,7 @@ automation:
You can also set or change the status of an `input_boolean` by using
`input_boolean.turn_on`, `input_boolean.turn_off` or `input_boolean.toggle` in
your automations.
your automation action.
```yaml
service: input_boolean.turn_on

View File

@ -20,7 +20,7 @@ like an automation.
The preferred way to configure button helpers is via the user interface.
To add one, go to **{% my helpers title="Settings -> Devices & Services -> Helpers" %}**
and click the add button; next choose the "**Button**" option.
and click the add button; next choose the **{% my config_flow_start domain=input_button title="Button" %}** option.
To be able to add **Helpers** via the user interface you should have
`default_config:` in your `configuration.yaml`, it should already be there by

View File

@ -16,9 +16,9 @@ The `input_datetime` integration allows the user to define date and time values
that can be controlled via the frontend and can be used within automations and
templates.
The preferred way to configure input datetime is via the user interface at **Settings** -> **Devices & Services** -> **Helpers**. Click the add button and then choose the **Date and/or time** option.
The preferred way to configure input datetime is via the user interface at **{% my helpers title="Settings > Devices & Services > Helpers" %}**. Click the add button and then choose the **{% my config_flow_start domain=input_datetime title="Date and/or time" %}** option.
To be able to add **Helpers** via the user interface you should have `default_config:` in your `configuration.yaml`, it should already be there by default unless you removed it.
To be able to add **{% my helpers title="Helpers" %}** via the user interface you should have `default_config:` in your `configuration.yaml`, it should already be there by default unless you removed it.
If you removed `default_config:` from your configuration, you must add `input_datetime:` to your `configuration.yaml` first, then you can use the UI.
`input_datetime` can also be configured via YAML. To add three datetime inputs to your installation,

View File

@ -14,7 +14,7 @@ ha_integration_type: helper
The `input_number` integration allows the user to define values that can be controlled via the frontend and can be used within conditions of automation. The frontend can display a slider, or a numeric input box. Changes to the slider or numeric input box generate state events. These state events can be utilized as `automation` triggers as well.
The preferred way to configure an input number is via the user interface at **Settings** -> **Devices & Services** -> **Helpers**. Click the add button and then choose the **Number** option.
The preferred way to configure an input number is via the user interface at **{% my helpers title="Settings > Devices & Services > Helpers" %}**. Click the add button and then choose the **{% my config_flow_start domain=input_number title="Number" %}** option.
To be able to add **Helpers** via the user interface you should have `default_config:` in your `configuration.yaml`, it should already be there by default unless you removed it.
If you removed `default_config:` from you configuration, you must add `input_number:` to your `configuration.yaml` first, then you can use the UI.

View File

@ -14,7 +14,7 @@ ha_integration_type: helper
The `input_select` integration allows the user to define a list of values that can be selected via the frontend and can be used within conditions of an automation. When a user selects a new item, a state transition event is generated. This state event can be used in an `automation` trigger.
The preferred way to configure an input select is via the user interface at **Settings** -> **Devices & Services** -> **Helpers**. Click the add button and then choose the **Dropdown** option.
The preferred way to configure an input select is via the user interface at **{% my helpers title="Settings > Devices & Services > Helpers" %}**. Click the add button and then choose the **{% my config_flow_start domain=input_select title="Dropdown" %}** option.
To be able to add **Helpers** via the user interface you should have `default_config:` in your `configuration.yaml`, it should already be there by default unless you removed it.
If you removed `default_config:` from you configuration, you must add `input_select:` to your `configuration.yaml` first, then you can use the UI.

View File

@ -14,10 +14,10 @@ ha_integration_type: helper
The `input_text` integration allows the user to define values that can be controlled via the frontend and can be used within conditions of automation. Changes to the value stored in the text box generate state events. These state events can be utilized as `automation` triggers as well. It can also be configured in password mode (obscured text).
The preferred way to configure an input text is via the user interface at **Settings** -> **Devices & Services** -> **Helpers**. Click the add button and then choose the **Text** option.
The preferred way to configure an input text is via the user interface at **{% my helpers title="Settings > Devices & Services > Helpers" %}**. Click the add button and then choose the **{% my config_flow_start domain=input_text title="Text" %}** option.
To be able to add **Helpers** via the user interface you should have `default_config:` in your `configuration.yaml`, it should already be there by default unless you removed it.
If you removed `default_config:` from you configuration, you must add `input_text:` to your `configuration.yaml` first, then you can use the UI.
If you removed `default_config:` from your configuration, you must add `input_text:` to your `configuration.yaml` first, then you can use the UI.
It can also be configured via `configuration.yaml`:

View File

@ -186,6 +186,6 @@ Many users tried to factory reset their Insteon Hub when the Insteon app stopped
- If you have a Hub v2 you will need the default username and password which are printed on the bottom of the Hub
3. Add devices to the Hub using the instructions for adding devices to the INSTEON integration using the [Insteon Panel]](#insteon-panel)
3. Add devices to the Hub using the instructions for adding devices to the Insteon integration using the [Insteon Panel](#insteon-panel)
Once your devices are linked to the Hub again they will appear in Home Assistant automatically.

View File

@ -11,9 +11,9 @@ ha_platforms:
ha_integration_type: integration
---
The `itach` remote platform allows you to control IR devices with a [Global Caché iTach Device](https://www.globalcache.com/products/itach/ip2irspecs) and GC-100 devices. The Global Cache IR API are similar across their product line. See API documentation links at the end of this page.
The `itach` remote platform allows you to control IR devices with a Global Caché iTach Device and GC-100 devices. The Global Cache IR API are similar across their product line. See API documentation links at the end of this page.
In order to utilize the digital input (binary sensor) and relay (switch) features of your Global Cache device you will need to use the [gc100 component](/integrations/gc100) and associated platforms.
In order to utilize the digital input (binary sensor) and relay (switch) features of your Global Cache device you will need to use the [gc100 integration](/integrations/gc100) and associated platforms.
To use your iTach remote in your installation, you will need to know the IR commands for your devices in Pronto hex format and add the following to your `configuration.yaml` file:

View File

@ -57,7 +57,7 @@ device_names:
required: false
type: string
name:
description: The name parameter is optional but needed if you want to use multiple notification platforms. The platform will be exposed as service `notify.<name>`. The name will default to `notify` if not supplied. See the [Notifications Component](/integrations/notify) for more details.
description: The name parameter is optional but needed if you want to use multiple notification platforms. The platform will be exposed as service `notify.<name>`. The name will default to `notify` if not supplied. See the [Notifications integration](/integrations/notify) for more details.
required: false
type: string
{% endconfiguration %}

View File

@ -16,7 +16,7 @@ ha_integration_type: integration
---
The Kraken integration allows you to monitor exchange rates on [kraken.com](https://www.kraken.com/).
For a list of tradable asset pairs check [this kraken support article](https://support.kraken.com/hc/en-us/articles/201893658-Currency-pairs-available-for-trading-on-Kraken).
For a list of tradable asset pairs check [this kraken support article](https://support.kraken.com/hc/articles/201893658-Currency-pairs-available-for-trading-on-Kraken).
{% include integrations/config_flow.md %}

View File

@ -19,7 +19,6 @@ ha_platforms:
ha_integration_type: integration
ha_codeowners:
- '@bdraco'
- '@Djelibeybi'
ha_quality_scale: platinum
ha_dhcp: true
---
@ -126,7 +125,7 @@ script:
### Hardware effects
The Flame (`lifx_effect_flame`), Morph (`lifx.effect_morph`) and Move (`lifx.effect_move`) effects are hardware-based and only work on specific LIFX devices. Flame and Morph are available on the LIFX Tile and Candle, while the Move effect requires a LIFX Z, Lightstrip, or Beam.
The Flame (`lifx.effect_flame`), Morph (`lifx.effect_morph`) and Move (`lifx.effect_move`) effects are hardware-based and only work on specific LIFX devices. Flame and Morph are available on the LIFX Tile and Candle, while the Move effect requires a LIFX Z, Lightstrip, or Beam.
All hardware-based effects can be stopped and started regardless of the device's power state, but the default behavior for each service is to turn the device on when starting an effect. Set the `power_on` attribute of the service to `false` to override this default.

View File

@ -20,7 +20,7 @@ To set the default color, brightness and transition values when the light is tur
The `light_profiles.csv` has to have a header. The format of the header is:
```txt
profile,color_x,color_y,brightness,transition
id,x,y,brightness,transition
```
The field transition is optional and can be omitted.
@ -49,8 +49,9 @@ Most lights do not support all attributes. You can check the integration documen
| `rgb_color` | yes | A list containing three integers between 0 and 255 representing the RGB color you want the light to be. Three comma-separated integers that represent the color in RGB, within square brackets.
| `rgbw_color` | yes | A list containing four integers between 0 and 255 representing the RGBW color you want the light to be. Four comma-separated integers that represent the color in RGBW (red, green, blue, white), within square brackets. This attribute will be ignored by lights which do not support RGBW colors.
| `rgbww_color` | yes | A list containing five integers between 0 and 255 representing the RGBWW color you want the light to be. Five comma-separated integers that represent the color in RGBWW (red, green, blue, cold white, warm white), within square brackets. This attribute will be ignored by lights which do not support RGBWW colors.
| `kelvin` | yes | An integer in Kelvin representing the color temperature you want the light to be.
| `color_temp` | yes | Alternatively, you can specify the color temperature in Mireds.
| `color_temp_kelvin` | yes | An integer in Kelvin representing the color temperature you want the light to be.
| `kelvin` | yes | (Deprecated) Use `color_temp_kelvin` instead.
| `color_temp` | yes | (Deprecated) Alternatively, you can specify the color temperature in Mireds.
| `color_name` | yes | A human-readable string of a color name, such as `blue` or `goldenrod`. All [CSS3 color names](https://www.w3.org/TR/css-color-3/#svg-color) are supported.
| `brightness` | yes | Integer between 0 and 255 for how bright the light should be, where 0 means the light is off, 1 is the minimum brightness and 255 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.

Some files were not shown because too many files have changed in this diff Show More