diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md
index 7e57b113669..30f074df148 100644
--- a/.github/PULL_REQUEST_TEMPLATE.md
+++ b/.github/PULL_REQUEST_TEMPLATE.md
@@ -3,3 +3,9 @@
**Pull request in [home-assistant](https://github.com/home-assistant/home-assistant) (if applicable):** home-assistant/home-assistant# "
+ if attr.key? 'type'
+ markup << "("
+ markup << "#{type_link(attr['type'], component: component)})"
+ end
+ if attr.key? 'required'
+ markup << "(#{required_value(attr['required'])})"
+ end
+ if attr.key? 'description'
+ markup << "#{attr['description']}"
+ end
+ markup << " Default value: #{attr['default']}
+
+Be careful when setting up port forwarding to the configurator while embedding into Home Assistant. If you don't restrict access by requiring authentication and / or blocking based on client IP addresses, your configuration will be exposed to the internet!
+
-At the moment, it will not work with resinos!
+
+`interface` options are for resinos based installation. On other system you can set it to `""`, for listen on every interface.
+You should not use this if you are also using the [DuckDNS add-on]. The DuckDNS add-on has integrated Let's Encrypt support.
+
-This add-on need port 80/443 to verify the certificate request, please stop all add-ons they use also this ports, otherwise you can not start this add-on.
+This add-on uses ports 80/443 to verify the certificate request. You will need to stop all other add-ons that also use these ports. If you don't need a port (like with https you don't need port 80) you can remove this from network config.
+Make sure you use logins and disable anonymous access if you want to secure the system.
+
+It is possible to deactive port 80 if you need this for things like `emulate_hue`. Remove the host port from Network option of this add-on.
+
+This add-on will not enable you to install packages or do anything as root. This is not allowed with Hass.io.
+
-This add-on is not compatible when you installed Hass.io via the generic Linux installer.
-
-If you're coming from Rasbian or similar, use `root` rather than `pi` when connecting via ssh or else you will get this error.
-
-```bash
-Permission denied (publickey,keyboard-interactive)
-```
- This add-on is not compatible if Hass.io was installed via the generic Linux installer.
-The above devices are confimed to work, but others may work as well.
+The above devices are confirmed to work, but others may work as well.
"
+
+ result << vars.map do |key, attr|
+ markup = Array.new
+ markup << "
"
+ result.join
+ end
+
+ def render(context)
+ if @component.nil? and @platform.nil?
+ page = context.environments.first['page']
+ @component, @platform = page['slug'].split('.', 2)
+ end
+
+ contents = super(context)
+
+ component = Liquid::Template.parse(@component).render context
+ platform = Liquid::Template.parse(@platform).render context
+
+ vars = SafeYAML.load(contents)
+
+ <<~MARKUP
+ Configuration Variables
+ #{render_config_vars(vars: vars, component: component, platform: platform)}
+
+Screenshot of the HASS Configurator.
+
Custom slot type for scene support.
-As of April 2017, the random filter has been somewhat broken. You'll get a random response the first time this runs, but subsequent commands will reply with the same randomly-chosen phrase. On reboot, Home Assistant will pick a new random choice, but you're stuck with that choice till you reboot. To get around that, use the following code in alexa_confirm.yaml: -
- -```text -{% raw %} > - {% set responses = [ - "OK", - "Sure", - "If you insist", - "Done", - "No worries", - "I can do that", - "Leave it to me", - "Consider it done", - "As you wish", - "By your command", - "Affirmative", - "Yes oh revered one", - "I will", - "As you decree, so shall it be", - "No Problem" - ] %} - {% set rindex = (range(0, (responses | length - 1) )|random) -%} - {{responses[rindex]}} - {% endraw %} -``` - - ## {% linkable_title Flash Briefing Skills %} As of version [0.31][zero-three-one] Home Assistant supports the new [Alexa Flash Briefing Skills API][flash-briefing-api]. A Flash Briefing Skill adds a new Flash Briefing source that is generated by Home Assistant. @@ -361,7 +295,7 @@ alexa: {% endif %}{% endraw %} ``` -You can add multiple items for a feed if you want. The Amazon required uid and timestamp will be randomly generated at startup and change at every restart of Home Assistant. +You can add multiple items for a feed if you want. The Amazon required UID and timestamp will be randomly generated at startup and change at every restart of Home Assistant. Please refer to the [Amazon documentation][flash-briefing-api-docs] for more information about allowed configuration parameters and formats. @@ -384,7 +318,7 @@ Please refer to the [Amazon documentation][flash-briefing-api-docs] for more inf - All other settings are up to you - Hit "Next" - Test - - Having passed all validations to reach this screen you can now click on "< Back to All Skills" as your flash briefing is now available as in "Development" service. + - Having passed all validations to reach this screen, you can now click on "< Back to All Skills" as your flash briefing is now available as in "Development" service. - To invoke your flash briefing, open the Alexa app on your phone or go to the [Alexa Settings Site][alexa-settings-site], open the "Skills" configuration section, select "Your Skills", scroll to the bottom, tap on the Flash Briefing Skill you just created, enable it, then manage Flash Briefing and adjust ordering as necessary. Finally ask your Echo for your "news","flash briefing", or "briefing". [amazon-dev-console]: https://developer.amazon.com @@ -395,3 +329,4 @@ Please refer to the [Amazon documentation][flash-briefing-api-docs] for more inf [templates]: /topics/templating/ [zero-three-one]: /blog/2016/10/22/flash-briefing-updater-hacktoberfest/ [alexa-settings-site]: http://alexa.amazon.com/ +[emulated-hue-component]: /components/emulated_hue/ diff --git a/source/_components/amcrest.markdown b/source/_components/amcrest.markdown new file mode 100644 index 00000000000..c910e10647e --- /dev/null +++ b/source/_components/amcrest.markdown @@ -0,0 +1,63 @@ +--- +layout: page +title: "Amcrest IP Camera" +description: "Instructions how to integrate Amcrest IP cameras within Home Assistant." +date: 2017-06-24 10:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: amcrest.png +ha_category: Hub +ha_iot_class: "Local Polling" +ha_release: 0.49 +--- + +The `amcrest` platform allows you to integrate your [Amcrest](https://amcrest.com/) IP camera in Home Assistant. + +To enable your camera in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +amcrest: + - host: IP_ADDRESS + username: USERNAME + password: PASSWORD + sensors: + - motion_detector + - sdcard + + - host: IP_ADDRESS + username: USERNAME + password: PASSWORD + resolution: low + stream_source: snapshot + sensors: + - ptz_preset +``` + +Configuration variables: + +- **host** (*Required*): The IP address or hostname of your camera. If using a hostname, make sure the DNS works as expected. +- **username** (*Required*): The username for accessing your camera. +- **password** (*Required*): The password for accessing your camera. +- **name** (*Optional*): This parameter allows you to override the name of your camera. The default is "Amcrest Camera". +- **port** (*Optional*): The port that the camera is running on. The default is 80. +- **resolution** (*Optional*): This parameter allows you to specify the camera resolution. For a high resolution (1080/720p), specify the option `high`. For VGA resolution (640x480p), specify the option `low`. If omitted, it defaults to *high*. +- **stream_source** (*Optional*): The data source for the live stream. `mjpeg` will use the camera's native MJPEG stream, whereas `snapshot` will use the camera's snapshot API to create a stream from still images. You can also set the `rtsp` option to generate the streaming via RTSP protocol. If omitted, it defaults to *snapshot*. +- **ffmpeg_arguments**: (*Optional*): Extra options to pass to ffmpeg, e.g. image quality or video filter options. +- **authentication**: (*Optional*): Defines which authentication method to use only when **stream_source** is **mjpeg**. Currently, *aiohttp* only support *basic*. It defaults to *basic*. +- **scan_interval** (*Optional*): Defines the update interval of the sensor in seconds. The default is 10 seconds. +- **sensors** array (*Optional*): Conditions to display in the frontend. By default, *none* of the conditions are enabled. The following conditions can be monitored. + - **motion_detector**: Return True/False when a motion is detected + - **sdcard**: Return the SD card usage by reporting the total and used space + - **ptz_preset**: Return the number of PTZ preset positions configured for the given camera + +**Note:** Amcrest cameras with newer firmware no longer have the ability to stream `high` definition video with MJPEG encoding. You may need to use `low` resolution stream or the `snapshot` stream source instead. If the quality seems too poor, lower the `Frame Rate (FPS)` and max out the `Bit Rate` settings in your camera's configuration manager. If you defined the *stream_source* to **mjpeg**, make sure your camera supports *Basic* HTTP authentication. Newer Amcrest firmware may not work, then **rtsp** is recommended instead. + +**Note:** If you set the `stream_source` option to `rtsp`, make sure to follow the steps mentioned at +[FFMPEG](https://home-assistant.io/components/ffmpeg/) documentation to install the `ffmpeg`. + +Finish its configuration by visiting the [Amcrest sensor page](/components/sensor.amcrest/) or [Amcrest camera page](/components/camera.amcrest/). + +To check if your Amcrest camera is supported/tested, visit the [supportability matrix](https://github.com/tchellomello/python-amcrest#supportability-matrix) link from the `python-amcrest` project. diff --git a/source/_components/android_ip_webcam.markdown b/source/_components/android_ip_webcam.markdown index 535a0c760cb..5a62ccefdeb 100644 --- a/source/_components/android_ip_webcam.markdown +++ b/source/_components/android_ip_webcam.markdown @@ -15,7 +15,7 @@ ha_iot_class: "Local Polling" The `android_ip_webcam` component turns an Android phone into a network camera with multiple viewing options. -It's setup as a mjpeg camera and all settings as switches inside of Home Assistant. You can also expose the sensors. If you have multiple phones, you can use all options inside a list. +It's setup as an MJPEG camera and all settings as switches inside of Home Assistant. You can also expose the sensors. If you have multiple phones, you can use all options inside a list. To set it up, download [the IP Webcam app][app], and add the following information to your `configuration.yaml` file: @@ -33,8 +33,8 @@ Configuration variables: - **username** (*Optional*): The username to access the phone. - **password** (*Optional*): The password to access the phone. - **scan_interval** (*Optional*): Default is 10 seconds. Defines the update interval of the phone. -- **sensors** array (*Optional*): Conditions to display sensor in the frontend. See list of supported sensors. -- **switches** array (*Optional*): Conditions to display settings in the frontend. See list of supported settings. +- **sensors** array (*Optional*): Conditions to display sensor in the frontend. See the list of supported sensors. +- **switches** array (*Optional*): Conditions to display settings in the frontend. See the list of supported settings. - **motion_sensor** (*Optional*): Activate motion sensor if auto_discovery is disabled. ### {% linkable_title Supported features %} @@ -49,7 +49,7 @@ Sensors: - motion - pressure -Settings: +Settings (Switches): - exposure_lock - ffc @@ -61,4 +61,37 @@ Settings: - whitebalance_lock - video_recording +## {% linkable_title Full example %} + +```yaml +# Example configuration.yaml entry +android_ip_webcam: + - host: 192.168.1.202 + port: 8000 + sensors: + - audio_connections + - battery_level + - battery_temp + - battery_voltage + - light + - motion + - pressure + switches: + - exposure_lock + - ffc + - focus + - gps_active + - night_vision + - overlay + - torch + - whitebalance_lock + - video_recording + - host: 192.168.1.203 + port: 8000 + sensors: + - light + switches: + - torch +``` + [app]: https://play.google.com/store/apps/details?id=com.pas.webcam diff --git a/source/_components/apiai.markdown b/source/_components/apiai.markdown deleted file mode 100644 index 7ab70633035..00000000000 --- a/source/_components/apiai.markdown +++ /dev/null @@ -1,139 +0,0 @@ ---- -layout: page -title: "Api.AI" -description: "Instructions how integrate api.ai with Home Assistant." -date: 2017-01-27 11:28 -sidebar: true -comments: false -sharing: true -footer: true -logo: apiai.png -ha_category: Voice -featured: false -ha_release: 0.38 ---- - -This component is designed to be used with the "webhook" integration in [api.ai][apiai-web]. When a conversation ends with an user, api.ai sends an action and parameters to the webhook. - -api.ai requires a public endpoint (HTTPS recommended), so your Home Assistant should be exposed to Internet. api.ai will return fallback answers if your server do not answer, or takes too long (more than 5 seconds). - -api.ai could be integrated with many popular messaging, virtual assistant and IoT platforms, eg.: Google Assistant (Google Actions), Skype, Messenger. [See here](https://docs.api.ai/docs/integrations) the complete list. - -Using Api.ai will be easy to create conversations like: - - > User: Which is the temperature at home? - > - > Bot: The temperature is 34 degrees - - > User: Turn on the light - > - > Bot: In which room? - > - > User: In the kitchen - > - > Bot: Turning on kitchen light - -To use this integration you should define a conversation (intent) in Api.ai, configure Home Assistant with the speech to return and, optionally, the action to execute. - -### {% linkable_title Configuring your api.ai account %} - -- [Login][apiai-web] with your Google account. -- Click on "Create Agent" -- Select name, language (if you are planning to use it with Google Actions check [here](https://support.google.com/assistant/answer/7108196?hl=en) supported languages) and time zone -- Click "Save" -- Go to "Fullfiment" (in the left menu) -- Enable Webhook and set your Home Assistant URL with the Api.ai endpoint. Eg.: ``https://myhome.duckdns.org/api/apiai?api_password=HA_PASSWORD`` -- Click "Save" -- Create a new intent -- Below "User says" write one phrase that you, the user, will tell Api.ai. Eg.: Which is the temperature at home? -- In "Action" set some key (this will be the bind with Home Assistant configuration), eg.: GetTemperature -- In "Response" set "Cannot connect to Home Assistant or it is taking to long" (fall back response) -- At the end of the page, click on "Fulfillment" and check "Use webhook" -- Click "Save" -- On the top right, where is written "Try it now...", write, or say, the phrase you have previously defined and hit enter -- Api.ai has send a request to your Home Assistant server - -Take a look to "Integrations", in the left menu, to configure third parties. - - -### {% linkable_title Configuring Home Assistant %} - -Out of the box, the component will do nothing. You have to teach it about all intents you want it to answer to. The way it works is that the answer for each intent is based on [templates] that you define. Each template will have access to the existing states via the `states` variable but will also have access to all variables defined in the intent. - -You can use [templates] for setting `speech`. - -Actions are using the [Home Assistant Script Syntax] and also have access to the variables from the intent. - -[Home Assistant Script Syntax]: /getting-started/scripts/ - -Example of an Api.ai for the above configuration: - -```yaml -{% raw %}# Example configuration.yaml entry -apiai: - intents: - GetTemperature: - speech: We have {{ states.sensor.temperature }} degrees - async_action: False - action: - service: notify.notify - data_template: - message: Api.ai has send a request -{% endraw %} -``` - -Inside an intent we can define this variables: -- **speech** (*Optional*): Text or template to return to Api.ai -- **action** (*Optional*): Script definition -- **async_action** (*Optional*): If Home Assistant should execute the action asynchronously (returning response to Api.ai without waiting the action to finish). Should be set to `True` if Api.ai is returning the "Cannot connect to Home Assistant or it is taking to long" message, but then you will not be able to use values based on the result of the action. Defaults to `False`. - - -## {% linkable_title Examples %} - -Download [this zip](https://github.com/home-assistant/home-assistant.github.io/blob/next/source/assets/HomeAssistant_APIAI.zip) and load it in your Api.ai agent (Settings -> Export and Import) for examples intents to use with this configuration: - -```yaml -{% raw %}# Example configuration.yaml entry -apiai: - intents: - Temperature: - speech: The temperature at home is {{ states('sensor.home_temp') }} degrees - LocateIntent: - speech: > - {%- for state in states.device_tracker -%} - {%- if state.name.lower() == User.lower() -%} - {{ state.name }} is at {{ state.state }} - {%- elif loop.last -%} - I am sorry, I do not know where {{ User }} is. - {%- endif -%} - {%- else -%} - Sorry, I don't have any trackers registered. - {%- endfor -%} - WhereAreWeIntent: - speech: > - {%- if is_state('device_tracker.adri', 'home') and - is_state('device_tracker.bea', 'home') -%} - You are both home, you silly - {%- else -%} - Bea is at {{ states("device_tracker.bea") }} - and Adri is at {{ states("device_tracker.adri") }} - {% endif %} - TurnLights: - speech: Turning {{ Room }} lights {{ OnOff }} - action: - - service: notify.pushbullet - data_template: - message: Someone asked via apiai to turn {{ Room }} lights {{ OnOff }} - - service_template: > - {%- if OnOff == "on" -%} - switch.turn_on - {%- else -%} - switch.turn_off - {%- endif -%} - data_template: - entity_id: "switch.light_{{ Room | replace(' ', '_') }}" -{% endraw %} -``` - -[apiai-web]: https://api.ai/ -[templates]: /topics/templating/ diff --git a/source/_components/apple_tv.markdown b/source/_components/apple_tv.markdown new file mode 100644 index 00000000000..5709958530d --- /dev/null +++ b/source/_components/apple_tv.markdown @@ -0,0 +1,145 @@ +--- +layout: page +title: "Apple TV" +description: "Instructions how to integrate Apple TV devices into Home Assistant." +date: 2017-06-26 20:47 +sidebar: true +comments: false +sharing: true +footer: true +logo: apple.png +ha_category: Hub +ha_iot_class: "Local Push" +ha_release: 0.49 +--- + +The `apple_tv` platform allows you to control an Apple TV (3rd and 4th generation). See the [remote platform](/components/remote.apple_tv/) if you want to send remote control buttons, e.g. arrow keys. + ++Currently, you must have Home Sharing enabled for this to work. Support for pairing Home Assistant with your device will be supported in a later release. +
+ +To use this component, you must first install some system libraries and a compiler. For Debian or a similar system, this should be enough: + +```shell +$ sudo apt-get install build-essential libssl-dev libffi-dev python-dev +``` + +If you want to discover new devices automatically, just make sure you have `discovery:` in your `configuration.yaml` file. To manually add one or more Apple TVs to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +apple_tv: + - host: IP_1 + login_id: LOGIN_ID_1 + name: NAME_1 + start_off: START_OFF_1 + credentials: CREDENTIALS_1 + - host: IP_2 + login_id: LOGIN_ID_2 + name: NAME_2 + start_off: START_OFF_2 + credentials: CREDENTIALS_2 +``` + +Configuration variables: + +- **host** (*Required*): The IP-address of the device. +- **login_id** (*Required*): An identifier used to login to the device, see below. +- **name** (*Optional*): The name of the device used in the frontend. +- **start_off** (*Optional*): Set to true if the device should start in fake standby. +- **credentials** (*Optional*): Credentials used for AirPlay playback. + +In order to connect to the device, you need a *login id*. The easiest way to obtain this identifier is to use the `apple_tv_scan` service (described below). Additional information about `start_off` and `credentials` can also be found under the guides section. + +## {% linkable_title Guides %} + +### {% linkable_title Scanning for devices %} + +To scan for devices, press the icon in the upper left corner and select the leftmost icon according to the image: + ++Turning the device on/off in the user interface will *not* turn the physical device on/off according to the description above. +
+ + +### {% linkable_title Setting up device authentication %} + +If you, when playing media with `play_url`, get the following error message: + +*“This AirPlay connection requires iOS 7.1 or later, OS X 10.10 or later, or iTunes 11.2 or later.”* + +then device authentication is required. Press the icon in the upper left corner and select the leftmost icon according to the image below: + +A word of caution: The Arduino boards are not storing states. This means that with every initialization the pins are set to off/low. diff --git a/source/_components/arlo.markdown b/source/_components/arlo.markdown index ec67022b6ad..479a7713293 100644 --- a/source/_components/arlo.markdown +++ b/source/_components/arlo.markdown @@ -31,4 +31,18 @@ Configuration variables: It is recommended to create a dedicated user on Arlo website to be used within Home Assistant and then share your Arlo cameras. -Finish its configuration by visiting the [Arlo sensor page](/components/sensor.arlo/) or [Arlo camera page](/components/camera.arlo/). +Finish its configuration by visiting the [Arlo sensor page](/components/sensor.arlo/) or [Arlo camera page](/components/camera.arlo/) or [Arlo control panel page](/components/alarm_control_panel.arlo/). + +The Arlo component also provides a service to enable/disable the motion detection sensor. The example below enables the motion detection every time the Home Assistant service starts. + +```yaml +#automation.yaml +- alias: Enable Arlo upton HA start' + initial_state: 'on' + trigger: + platform: homeassistant + event: start + action: + service: camera.enable_motion_detection + entity_id: camera.arlo_frontdoor +``` diff --git a/source/_components/asterisk_mbox.markdown b/source/_components/asterisk_mbox.markdown new file mode 100644 index 00000000000..d0d7ba72fe2 --- /dev/null +++ b/source/_components/asterisk_mbox.markdown @@ -0,0 +1,42 @@ +--- +layout: page +title: "Asterisk Voicemail" +description: "Instructions how to integrate your existing Asterisk voicemail within Home Assistant." +date: 2017-06-30 18:30 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Other +ha_version: 0.51 +ha_iot_class: "Local Push" +--- + +The Asterisk Voicemail integration for Home Assistant allows you to view, listen to, and delete voicemails from an Asterisk voicemail mailbox. The component includes a panel on the frontend that provides caller-id and speech-to-text transcription (using Google's API) of messages in addition to playback and message deletion. There is also an included sensor that indicates of the number of available messages. There is no requirement that the Asterisk PBX and Home Assistant are running on the same machine. + +To enable the component, a configuration is required in both Home Assistant as well as on the Asterisk server. + +First follow the [Asterisk PBX configuration guide](/docs/asterisk_mbox) to setup the necessary server on the Asterisk PBX server (this is needed even if Asterisk and Home Assistant are running on the same server) + +Once that is complete, add the following entry `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +asterisk_mbox: + password: ASTERISK_PBX_PASSWORD + host: ASTERISK_PBX_SERVER_IP_ADDRESS + port: ASTERISK_PBX_SERVER_PORT +``` + +This will add a new 'Mailbox' side-panel, as well as a sensor to indicate # of messages available. + +Configuration variables: + +- **password** (*Required*): The password that was set during Asterisk PBX configuration +- **host** (*Required*): The ip-address of the server that is running the Asterisk PBX +- **port** (*Required*): The port on the Asterisk PBX server that was configured during Asterisk PBX configuration + +
+Communication between the Asterisk PBX server and the Home Assistant server is password-protected, but the data transmission is not encrypted. It is recommended to only use this component when communication is contained within a local area network. +
+ diff --git a/source/_components/axis.markdown b/source/_components/axis.markdown index bdf70c5a40c..a23a97c2dfc 100644 --- a/source/_components/axis.markdown +++ b/source/_components/axis.markdown @@ -13,30 +13,10 @@ ha_release: "0.45" ha_iot_class: "Local Polling" --- -[Axis Communications](https://www.axis.com/) devices are surveillance cameras and other security related network connected hardware. Sensor API works with firmware 5.50 and newer. +[Axis Communications](https://www.axis.com/) devices are surveillance cameras and other security-related network connected hardware. Sensor API works with firmware 5.50 and newer. Home Assistant will automatically discover their presence on your network. -## {% linkable_title Dependencies %} - -```bash -$ sudo apt-get install python3-gi gir1.2-gstreamer-1.0 -``` - -Depending on how you run Home Assistant you might be needed to symlink the `gi` module into your environment. - -Hassbian: - -```bash -$ ln -s /usr/lib/python3/dist-packages/gi /srv/homeassistant/lib/python3.4/site-packages -``` - -Raspberry Pi All-In-One Installer: - -```bash -$ ln -s /usr/lib/python3/dist-packages/gi /srv/homeassistant/homeassistant_venv/lib/python3.4/site-packages -``` - You can also manually configure your devices by adding the following lines to your `configuration.yaml` file: ```yaml @@ -50,21 +30,24 @@ axis: Configuration variables: -- **device** (*Required*): Unique name for the Axis device. - - **host** (*Required*): The IP address to your Axis device. - - **username** (*Optional*): The username to your Axis device. Defaults to `root`. - - **password** (*Optional*): The password to your Axis device. Defaults to `pass`. - - **trigger_time** (*Optional*): Minimum time (in seconds) a sensor should keep its positive value. Defaults to 0. - - **location** (*Optional*): Physical location of your Axis device. Default not set. - - **include** (*Required*): This cannot be empty else there would be no use adding the device at all. - - **camera**: Stream MJPEG video to Home Assistant. - - **motion**: The built-in motion detection in Axis cameras. - - **vmd3**: ACAP Motion Detection app which has better algorithms for motion detection. - - **pir**: PIR sensor that can trigger on motion. - - **sound**: Sound detector. - - **daynight**: Certain cameras have day/night mode if they have built-in IR lights. - - **tampering**: Signals when camera believes that it has been tampered with. - - **input**: Trigger on whatever you have connected to device input port. +## {% linkable_title Configuration variables %} + +- **device** (*Required*): Unique name +- **host** (*Required*): The IP address to your Axis device. +- **username** (*Optional*): The username to your Axis device. Default 'root'. +- **password** (*Optional*): The password to your Axis device. Default 'pass'. +- **trigger_time** (*Optional*): Minimum time (in seconds) a sensor should keep its positive value. Default 0. +- **port** (*Optional*): Configure port web server of device is accessible from. Default 80. +- **location** (*Optional*): Physical location of your Axis device. Default not set. +- **include** (*Required*): This cannot be empty else there would be no use adding the device at all. + - **camera**: Stream MJPEG video to Home Assistant. + - **motion**: The built-in motion detection in Axis cameras. + - **vmd3**: ACAP Motion Detection app which has better algorithms for motion detection. + - **pir**: PIR sensor that can trigger on a motion. + - **sound**: Sound detector. + - **daynight**: Certain cameras have day/night mode if they have built-in IR lights. + - **tampering**: Signals when camera believes that it has been tampered with. + - **input**: Trigger on whatever you have connected to device input port. A full configuration example could look like this: @@ -85,10 +68,29 @@ axis: location: köket ``` ++If you are using Python 3.6, you might need to replace the 34m with 36m in the _gi.*.so filename in the gi folder. +
+Any specific levels for triggers needs to be configured on the device.
- It is recommended that you create a user on your Axis device specifically for Home Assistant. For all current functionality it is enough to create a user belonging to user group viewer. + It is recommended that you create a user on your Axis device specifically for Home Assistant. For all current functionality, it is enough to create a user belonging to user group viewer.
+ +## {% linkable_title Device services %} +Available services: `vapix_call`. + +#### {% linkable_title Service `axis/vapix_call` %} +Send a command using [Vapix](https://www.axis.com/support/developer-support/vapix). For details please read the API specifications. + +| Service data attribute | Optional | Description | +|---------------------------|----------|--------------------------------------------------| +| `name` | no | Name of device to communicate with. | +| `param` | no | What parameter to operate on. | +| `cgi` | yes | Which cgi to call on the device. Default is `param.cgi`. | +| `action` | yes | What type of call. Default is `update`. | + +Response to call can be subscribed to on event `vapix_call_response` diff --git a/source/_components/binary_sensor.abode.markdown b/source/_components/binary_sensor.abode.markdown new file mode 100644 index 00000000000..14e8e14533a --- /dev/null +++ b/source/_components/binary_sensor.abode.markdown @@ -0,0 +1,22 @@ +--- +layout: page +title: "Abode Binary Sensor" +description: "Instructions how to integrate Abode binary sensors into Home Assistant." +date: 2017-08-26 0:28 +sidebar: true +comments: false +sharing: true +footer: true +logo: abode.jpg +ha_release: 0.52 +ha_category: Binary Sensor +ha_iot_class: "Cloud Push" +--- + +The `abode` security control panel platform allows you to control your [Abode](https://goabode.com/) alarms. + +This component will add `Door Contacts`, `Connectivity` sensors (remotes, keypads, and status indicators), `Moisture` sensors, and `Motion` or `Occupancy` sensors. + +This component will also list all Abode `Quick Actions` that are set up. You can trigger these quick actions by passing the `entity_id` of your quick action binary sensor to the [trigger_quick_action service](/components/abode/#trigger_quick_action). + +The requirement is that you have setup your [Abode hub](/components/abode/). diff --git a/source/_components/binary_sensor.android_ip_webcam.markdown b/source/_components/binary_sensor.android_ip_webcam.markdown index a4ab6cf4eaf..80775c3b2e6 100644 --- a/source/_components/binary_sensor.android_ip_webcam.markdown +++ b/source/_components/binary_sensor.android_ip_webcam.markdown @@ -17,3 +17,18 @@ ha_iot_class: "Local Polling" The `android_ip_webcam` binary sensor platform lets you observe the motion state of [Android IP webcam](https://play.google.com/store/apps/details?id=com.pas.webcam) sensors through Home Assistant. Devices will be configured automatically. Please refer to the [component](/components/android_ip_webcam/) configuration on how to setup. + +## {% linkable_title Examples %} + +You can also setup the binary motion sensor with the following script: + +{% raw %} +```yaml +binary_sensor: + - platform: rest + name: Kitchen Motion + sensor_class: motion + resource: http://IP:8080/sensors.json?sense=motion_active + value_template: '{{ value_json.motion_active.data[0][1][0] | round(0) }}' +``` +{% endraw %} diff --git a/source/_components/binary_sensor.arest.markdown b/source/_components/binary_sensor.arest.markdown index 86d3586a260..a03c972e7b8 100644 --- a/source/_components/binary_sensor.arest.markdown +++ b/source/_components/binary_sensor.arest.markdown @@ -30,7 +30,7 @@ Configuration variables: - **resource** (*Required*): IP address and schema of the device that is exposing an aREST API, e.g. http://192.168.1.10. - **pin** (*Required*): Number of the pin to monitor. -- **name** (*Optional*): Let you overwrite the the name of the device. By default *name* from the device is used. +- **name** (*Optional*): Let you overwrite the name of the device. By default *name* from the device is used. Accessing the URL http://IP_ADDRESS/digital/PIN_NUMBER should give you the state of the pin inside a JSON response as `return_value`. diff --git a/source/_components/binary_sensor.bayesian.markdown b/source/_components/binary_sensor.bayesian.markdown new file mode 100644 index 00000000000..0d2858e9829 --- /dev/null +++ b/source/_components/binary_sensor.bayesian.markdown @@ -0,0 +1,91 @@ +--- +layout: page +title: "Bayesian Binary Sensor" +description: "Instructions how to integrate threshold Bayesian sensors into Home Assistant." +date: 2017-08-27 20:05 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: Binary Sensor +ha_iot_class: "Local Polling" +ha_release: 0.53 +--- + + +The `bayesian` binary sensor platform observes the state from multiple sensors and uses [Bayes' rule](https://en.wikipedia.org/wiki/Bayes%27_theorem) to estimate the probability that an event has occurred given the state of the observed sensors. If the estimated posterior probability is above the `probability_threshold`, the sensor is `on` otherwise it is `off`. + +This allows for the detection of complex events that may not be readily observable, e.g., cooking, showering, in bed, the start of a morning routine, etc. It can also be used to gain greater confidence about events that _are_ directly observable, but for which the sensors can be unreliable, e.g., presence. + +To enable the Bayesian sensor, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: bayesian + prior: 0.1 + observations: + - entity_id: 'switch.kitchen_lights' + prob_given_true: 0.6 + prob_given_false: 0.2 + platform: 'state' + to_state: 'on' +``` + +Configuration variables: + +- **prior** (*Required*): The prior probability of the event. At any point in time (ignoring all external influences) how likely is this event to occur? +- **probability_threshold** (*Optional*): The probability at which the sensor should trigger to `on`. +- **name** (*Optional*): Name of the sensor to use in the frontend. Defaults to `Bayesian Binary sensor`. +- **observations** array (*Required*): The observations which should influence the likelihood that the given event has occurred. + - **entity_id** (*Required*): Name of the entity to monitor. + - **prob_given_true** (*Required*): The probability of the observation occurring, given the event is `true`. + - **prob_given_false** (*Optional*): The probability of the observation occurring, given the event is `false` can be set as well. If `prob_given_false` is not set, it will default to `1 - prob_given_true`. + - **platform** (*Required*): The only supported observation platforms are `state` and `numeric_state`, which are modeled after their corresponding triggers for automations, requiring `below` and/or `above` instead of `to_state`. + - **to_state** (*Required*): The target state. + +## {% linkable_title Full examples %} + +```yaml +# Example configuration.yaml entry +binary_sensor: + name: 'in_bed' + platform: 'bayesian' + prior: 0.25 + probability_threshold: 0.95 + observations: + - entity_id: 'sensor.living_room_motion' + prob_given_true: 0.4 + prob_given_false: 0.2 + platform: 'state' + to_state: 'off' + - entity_id: 'sensor.basement_motion' + prob_given_true: 0.5 + prob_given_false: 0.4 + platform: 'state' + to_state: 'off' + - entity_id: 'sensor.bedroom_motion' + prob_given_true: 0.5 + platform: 'state' + to_state: 'on' + - entity_id: 'sun.sun' + prob_given_true: 0.7 + platform: 'state' + to_state: 'below_horizon' +``` + + +```yaml +# Example configuration.yaml entry +binary_sensor: + name: 'Heat On' + platform: 'bayesian' + prior: 0.2 + probability_threshold: 0.9 + observations: + - entity_id: 'sensor.outside_air_temperature_fahrenheit' + prob_given_true: 0.95 + platform: 'numeric_state' + below: 50 +``` diff --git a/source/_components/binary_sensor.command_line.markdown b/source/_components/binary_sensor.command_line.markdown index 3a612d04b3a..f966144470b 100644 --- a/source/_components/binary_sensor.command_line.markdown +++ b/source/_components/binary_sensor.command_line.markdown @@ -28,11 +28,12 @@ binary_sensor: Configuration variables: - **command** (*Required*): The action to take to get the value. -- **name** (*Optional*): Let you overwrite the the name of the device. By default *name* from the device is used. +- **name** (*Optional*): Let you overwrite the name of the device. By default *name* from the device is used. - **device_class** (*Optional*): The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend. - **payload_on** (*Optional*): The payload that represents enabled state. Default is "ON". - **payload_off** (*Optional*): The payload that represents disabled state. Default is "OFF". - **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload. +- **scan_interval** (*Optional*): Defines number of seconds for polling interval (defaults to 60 seconds). ## {% linkable_title Examples %} diff --git a/source/_components/binary_sensor.doorbird.markdown b/source/_components/binary_sensor.doorbird.markdown new file mode 100644 index 00000000000..b16dc68c5e9 --- /dev/null +++ b/source/_components/binary_sensor.doorbird.markdown @@ -0,0 +1,28 @@ +--- +layout: page +title: "DoorBird Binary Sensor" +description: "Instructions how to integrate DoorBird video doorbell state into Home Assistant." +date: 2017-08-06 11:30 +sidebar: true +comments: false +sharing: true +footer: true +logo: doorbird.png +ha_category: Binary Sensor +ha_release: "0.54" +ha_iot_class: "Local Polling" +--- + +The `doorbird` binary sensor platform allows Home Assistant to monitor when your [DoorBird](http://www.doorbird.com/) doorbell rings. + ++ You must have the [DoorBird component](/components/doorbird/) configured to use this binary sensor. +
+ +To enable the binary sensor, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: doorbird +``` diff --git a/source/_components/binary_sensor.enocean.markdown b/source/_components/binary_sensor.enocean.markdown index d817fd1ea22..32f3fc3340e 100644 --- a/source/_components/binary_sensor.enocean.markdown +++ b/source/_components/binary_sensor.enocean.markdown @@ -30,7 +30,7 @@ Configuration variables: - **name** (*Optional*): An identifier for the switch in the frontend. - **device_class** (*Optional*): The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend. -EnOcean binary sensors only generate 'button_pressed' events. The event data has follwing four fields: +EnOcean binary sensors only generate 'button_pressed' events. The event data has following four fields: - **id**: The ID of the device (see configuration). - **pushed**: `1` for a button press, `0` for a button release. diff --git a/source/_components/binary_sensor.ffmpeg_motion.markdown b/source/_components/binary_sensor.ffmpeg_motion.markdown index 92cdaa2304a..453c76d7e01 100644 --- a/source/_components/binary_sensor.ffmpeg_motion.markdown +++ b/source/_components/binary_sensor.ffmpeg_motion.markdown @@ -52,9 +52,9 @@ $ ffmpeg -i YOUR_INPUT -an -filter:v select=gt(scene\,0.1) -f framemd5 - If you are running into trouble with this sensor, please refer to the [troubleshooting section](/components/ffmpeg/#troubleshooting). -#### {% linkable_title Tipps %} +#### {% linkable_title Tips %} -- Use motion only in a customer area with [crop filter](https://ffmpeg.org/ffmpeg-filters.html#crop): +- Use motion only in a custom area with [crop filter](https://ffmpeg.org/ffmpeg-filters.html#crop): ```yaml extra_arguments: -filter:v "crop=100:100:12:34" diff --git a/source/_components/binary_sensor.flic.markdown b/source/_components/binary_sensor.flic.markdown index 126eb15c020..558c30b3a09 100644 --- a/source/_components/binary_sensor.flic.markdown +++ b/source/_components/binary_sensor.flic.markdown @@ -15,7 +15,7 @@ ha_release: 0.35 The `flic` platform allows you to connect with multiple [flic](https://flic.io) smart buttons. -The platform does not directly interact with the buttons, but communicates with the flic service that manages the buttons. The service can run on the same instance as home assistant or any other reachable machine. For setup instructions visit the GitHub repository of the service for [Linux](https://github.com/50ButtonsEach/fliclib-linux-hci), [OS X](https://github.com/50ButtonsEach/flic-service-osx) or [Windows](https://github.com/50ButtonsEach/fliclib-windows). +The platform does not directly interact with the buttons, but communicates with the flic service that manages the buttons. The service can run on the same instance as Home Assistant or any other reachable machine. For setup instructions visit the GitHub repository of the service for [Linux](https://github.com/50ButtonsEach/fliclib-linux-hci), [OS X](https://github.com/50ButtonsEach/flic-service-osx) or [Windows](https://github.com/50ButtonsEach/fliclib-windows). To use your flic buttons in your installation, add the following to your `configuration.yaml` file: @@ -30,7 +30,7 @@ Configuration variables: - **host** (*Optional*): The IP or hostname of the flic service server. Defaults to `localhost`. - **port** (*Optional*): The port of the flic service. Defaults to `5551`. - **discovery** (*Optional*): If `true` then the component is configured to constantly scan for new buttons. Defaults to `true`. -- **ignored_click_types**: List of click types whose occurrence should not trigger and `flic_click` event. +- **ignored_click_types**: List of click types whose occurrence should not trigger a `flic_click` event. Click types are `single`, `double`, and `hold`. - **timeout** (*Optional*): Maximum time in seconds an event can be queued locally on a button before discarding the event. Defaults to 3. #### {% linkable_title Discovery %} @@ -38,7 +38,7 @@ Configuration variables: If discovery is enabled, you can add a new button by pressing it for at least 7 seconds. The button will be paired with the flic service and added to Home Assistant. Otherwise, you have to manually pair it with the flic service. The Home Assistant platform will not scan for new buttons and will only connect to buttons already paired. #### {% linkable_title Timeout %} - +When the flic button is triggered while disconnected from flic service, it will queue all events and try to connect and transmit them as soon as possible. The timeout variable can be used to stop events from triggering if too much time passed between the action and the notification in Home Assistant. + When the flic button is triggered while disconnected from flic service, it will queue all events and try to connect and transmit them as soon as possible. The timeout variable can be used to stop events from triggering if too much time passed between the action and the notification in Home Assistant. #### {% linkable_title Events %} @@ -62,7 +62,7 @@ automation: Event data: - **button_name**: The name of the button, that triggered the event. -- **button_address**: The bluetooth address of the button, that triggered the event. +- **button_address**: The Bluetooth address of the button, that triggered the event. - **click_type**: The type of click. Possible values are `single`, `double` and `hold`. - **queued_time**: The amount of time this event was queued on the button, in seconds. diff --git a/source/_components/binary_sensor.gc100.markdown b/source/_components/binary_sensor.gc100.markdown new file mode 100644 index 00000000000..3be8c013046 --- /dev/null +++ b/source/_components/binary_sensor.gc100.markdown @@ -0,0 +1,29 @@ +--- +layout: page +title: gc100 Binary Sensor +description: "Instructions on how to set up an gc100 binary sensor within Home Assistant." +date: 2017-10-27 17:26 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Binary Sensor +ha_release: 0.57 +ha_iot_class: "Local Polling" +--- + +To enable this sensor, you first have to set up [gc100](/components/gc100/), and add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: gc100 + ports: + - '3:1': Doorchime + - '3:2': Garage Obstruction +``` + +Configuration variables: + +- **ports** (*Required*): A list of module-address to name mappings in the format 'x:y': name, where x is module #, y is address. + diff --git a/source/_components/binary_sensor.hikvision.markdown b/source/_components/binary_sensor.hikvision.markdown index 72dbd613c1d..ae37f2e9797 100644 --- a/source/_components/binary_sensor.hikvision.markdown +++ b/source/_components/binary_sensor.hikvision.markdown @@ -24,7 +24,7 @@ binary_sensor.front_porch_motion binary_sensor.front_port_line_crossing ``` -When used with a NVR device the sensors will be appeneded with the channel number they represent. For example, if you configure an NVR with the name "Home" that supports 2 cameras with motion detection and line crossing events enabled to notify the surveillance center the following binary sensors will be added to Home Assistant: +When used with a NVR device the sensors will be appended with the channel number they represent. For example, if you configure an NVR with the name "Home" that supports 2 cameras with motion detection and line crossing events enabled to notify the surveillance center the following binary sensors will be added to Home Assistant: ``` binary_sensor.home_motion_1 diff --git a/source/_components/binary_sensor.http.markdown b/source/_components/binary_sensor.http.markdown index 8e96f517918..aaddf8a7256 100644 --- a/source/_components/binary_sensor.http.markdown +++ b/source/_components/binary_sensor.http.markdown @@ -12,6 +12,10 @@ ha_category: Binary Sensor ha_release: pre 0.7 --- +The HTTP binary sensor is dynamically created with the first request that is made to its URL. You don't have to define it in the configuration first. + +The sensor will then exist as long as Home Assistant is running. After a restart of Home Assistant the sensor will be gone until it is triggered again. + The URL for a binary sensor looks like the example below: ```bash diff --git a/source/_components/binary_sensor.knx.markdown b/source/_components/binary_sensor.knx.markdown index ffe81a04d85..73c747601ad 100644 --- a/source/_components/binary_sensor.knx.markdown +++ b/source/_components/binary_sensor.knx.markdown @@ -13,4 +13,54 @@ ha_release: 0.24 ha_iot_class: "Local Polling" --- -To get your KNX binary sensors working with Home Assistant, follow the instructions for the [KNX component](/components/knx/). +The `knx` sensor platform allows you to monitor [KNX](http://www.knx.org) binary sensors. + +The `knx` component must be configured correctly, see [KNX Component](/components/knx). + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: knx + name: "Entrance.Motion.Sensor" + address: '6/0/2' + device_class: 'motion' + #significant_bit: 2 +``` + +Configuration variables: + +- **name** (*Optional*): A name for this device used within Home Assistant. +- **address**: KNX group address of the binary sensor. +- **device_class** (Optional): HASS device class e.g. "motion". +- **significant_bit** (Optional): Specify which significant bit of the KNX value should be used. Default is 1. + +You can also attach actions to binary sensors (e.g., to switch on a light when a switch was pressed). In this example, one light is switched on when the button was pressed once and two others when the button was pressed a second time. + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: knx + name: Livingroom.3Switch3 + address: '5/0/26' + automation: + - counter: 1 + hook: 'on' + action: + - entity_id: light.hue_color_lamp_1 + service: homeassistant.turn_on + - counter: 2 + hook: 'on' + action: + - entity_id: light.hue_bloom_1 + service: homeassistant.turn_on + - entity_id: light.hue_bloom_2 + service: homeassistant.turn_on +``` + +Configuration variables: + +- **name** (*Optional*): A name for this device used within Home Assistant. +- **counter** (*Optional*): Set to 2 if your only want the action to be executed if the button was pressed twice. To 3 for three times button pressed. Defaults to 1. +- **hook** (Optional): Indicates if the automation should be executed on what state of the binary sensor. Values: "on" or "off". Defaults to "on". +- **action**: Specify a list of actions analog to the [automation rules](/docs/automation/action/). + diff --git a/source/_components/binary_sensor.linode.markdown b/source/_components/binary_sensor.linode.markdown new file mode 100644 index 00000000000..0ffbddb5817 --- /dev/null +++ b/source/_components/binary_sensor.linode.markdown @@ -0,0 +1,34 @@ +--- +layout: page +title: "Linode Binary Sensor" +description: "Instructions on how to set up Linode binary sensors within Home Assistant." +date: 2017-10-20 08:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: System Monitor +logo: linode.png +ha_release: 0.57 +ha_iot_class: "Cloud Polling" +--- + +The `linode` binary sensor platform allows you to monitor your Linode nodes. + +Add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: linode + nodes: + - 'myvpsname' +``` + +{% configuration %} + nodes: + description: List of VPSs you want to control. + required: true + type: string +{% endconfiguration %} + diff --git a/source/_components/binary_sensor.markdown b/source/_components/binary_sensor.markdown index 25d5e31f559..afc028a2bcb 100644 --- a/source/_components/binary_sensor.markdown +++ b/source/_components/binary_sensor.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Binary Sensor" -description: "Instructions how to setup your binary sensors with Home Assistant." +description: "Instructions on how-to setup binary sensors with Home Assistant." date: 2015-11-20 14:00 sidebar: true comments: false @@ -9,27 +9,26 @@ sharing: true footer: true --- -Binary sensors are gathering information about state of switches, contacts, pins, and alike. The return value of those sensors is usually digital (1/0). This means that those sensors knows only two states: **0/off/low/closed/false** and **1/on/high/open/true**. +Binary sensors gather information about the state of devices which have a "digital" return value (either 1 or 0). These can be switches, contacts, pins, etc. These sensors only have two states: **0/off/low/closed/false** and **1/on/high/open/true**. Knowing that there are only two states allows Home Assistant to represent these sensors in a better way in the frontend according to their functionality. -Knowing that there are only two states allows Home Assistant to represent the sensor better in the frontend. +The way these sensors are displayed in the frontend can be modified in the [customize section](/getting-started/customizing-devices/). The following device classes are supported for binary sensors: -The display style of each entity can be modified in the [customize section](/getting-started/customizing-devices/). The following device classes are supported for binary sensors: - -- **None**: Generic on/off -- **cold**: On means cold (or too cold) -- **connectivity**: On means connection present, Off means no connection -- **gas**: CO, CO2, etc -- **heat**: On means hot (or too hot) +- **None**: Generic on/off. This is the default and doesn't need to be set. +- **cold**: `On` means cold +- **connectivity**: `On` means connection present, `Off` means no connection +- **gas**: `On` means gas detected +- **heat**: `On` means hot - **light**: Lightness threshold -- **moisture**: Specifically a wetness sensor -- **motion**: Motion sensor -- **moving**: On means moving, Off means stopped -- **occupancy**: On means occupied, Off means not occupied -- **opening**: Door, window, etc. On means open, Off means closed -- **power**: Power, over-current, etc -- **safety**: On means unsafe, Off means safe -- **smoke**: Smoke detector -- **sound**: On means sound detected, Off means no sound -- **vibration**: On means vibration detected, Off means no vibration +- **moisture**: `On` means wet +- **motion**: `On` means motion detected +- **moving**: `On` means moving, `Off` means stopped +- **occupancy**: `On` means occupied, `Off` means not occupied +- **opening**: `On` means open, `Off` means closed +- **plug**: `On` means device is plugged in, `Off` means device is unplugged +- **power**: Power, over-current, etc. +- **safety**: `On` means unsafe, `Off` means safe +- **smoke**: `On` means smoke detected +- **sound**: `On` means sound detected, `Off` means no sound +- **vibration**: `On` means vibration detected, `Off` means no vibration For analog sensors please check the [component overview](https://home-assistant.io/components/#sensor). diff --git a/source/_components/binary_sensor.modbus.markdown b/source/_components/binary_sensor.modbus.markdown index 6013a3cf4d7..55450b908ea 100644 --- a/source/_components/binary_sensor.modbus.markdown +++ b/source/_components/binary_sensor.modbus.markdown @@ -36,3 +36,22 @@ Configuration variables: - **name** (*Required*): Name of the sensor. - **slave** (*Required*): The number of the slave (Optional for TCP and UDP Modbus). - **coil** (*Required*): Coil number. + +It's possible to change the default 30 seconds scan interval for the sensor updates as shown in the [Platform options](/docs/configuration/platform_options/#scan-interval) documentation. + +### {% linkable_title Full example %} + +Example a sensor with a 10 seconds scan interval: + +```yaml +binary_sensor: + - platform: modbus + scan_interval: 10 + coils: + - name: Sensor1 + slave: 1 + coil: 100 + - name: Sensor2 + slave: 1 + coil: 110 +``` diff --git a/source/_components/binary_sensor.mqtt.markdown b/source/_components/binary_sensor.mqtt.markdown index 722ec499495..3b1ff864534 100644 --- a/source/_components/binary_sensor.mqtt.markdown +++ b/source/_components/binary_sensor.mqtt.markdown @@ -14,9 +14,13 @@ ha_iot_class: "depends" --- -The `mqtt` binary sensor platform uses the MQTT message payload as the sensor value. If messages in this `state_topic` are published with *RETAIN* flag, the sensor will receive an instant update with the last known value. Otherwise, the initial state will be off. +The `mqtt` binary sensor platform uses an MQTT message payload to set the binary sensor to one of two states: `on` or `off`. -To use your MQTT binary sensor in your installation, add the following to your `configuration.yaml` file: +The binary sensor state will be updated only after a new message is published on `state_topic` matching `payload_on` or `payload_off`. If these messages are published with the `retain` flag set, the binary sensor will receive an instant state update after subscription and Home Assistant will display the correct state on startup. Otherwise, the initial state displayed in Home Assistant will be `unknown`. + +The `mqtt` binary sensor platform optionally supports an `availability_topic` to receive online and offline messages (birth and LWT messages) from the MQTT device. During normal operation, if the MQTT cover device goes offline (i.e. publishes `payload_not_available` to `availability_topic`), Home Assistant will display the binary sensor as `unavailable`. If these messages are published with the `retain` flag set, the binary sensor will receive an instant update after subscription and Home Assistant will display the correct availability state of the binary sensor when Home Assistant starts up. If the `retain` flag is not set, Home Assistant will display the binary sensor as `unavailable` when Home Assistant starts up. If no `availability_topic` is defined, Home Assistant will consider the MQTT device to be available. + +To use an MQTT binary sensor in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -27,32 +31,37 @@ binary_sensor: Configuration variables: +- **name** (*Optional*): The name of the binary sensor. Default is `MQTT Binary Sensor`. - **state_topic** (*Required*): The MQTT topic subscribed to receive sensor values. -- **name** (*Optional*): The name of the sensor. Default is 'MQTT Sensor'. -- **qos** (*Optional*): The maximum QoS level of the state topic. Default is 0. -- **payload_on** (*Optional*): The payload that represents on state. Default is "ON". -- **payload_off** (*Optional*): The payload that represents state. Default is "OFF". +- **payload_on** (*Optional*): The payload that represents the on state. Default is `ON`. +- **payload_off** (*Optional*): The payload that represents the off state. Default is `OFF`. +- **availability_topic** (*Optional*): The MQTT topic subscribed to receive birth and LWT messages from the MQTT device. If `availability_topic` is not defined, the binary sensor availability state will always be `available`. If `availability_topic` is defined, the binary sensor availability state will be `unavailable` by default. +- **payload_available** (*Optional*): The payload that represents the online state. Default is `online`. +- **payload_not_available** (*Optional*): The payload that represents the offline state. Default is `offline`. +- **qos** (*Optional*): The maximum QoS level to be used when receiving messages. Default is `0`. - **device_class** (*Optional*): The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend. - **value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract a value from the payload. -For a quick check you can use the commandline tools shipped with `mosquitto` to send MQTT messages. Set the state of a sensor manually: +To test, you can use the command line tool `mosquitto_pub` shipped with `mosquitto` or the `mosquitto-clients` package to send MQTT messages. To set the state of the binary sensor manually: ```bash $ mosquitto_pub -h 127.0.0.1 -t home-assistant/window/contact -m "OFF" ``` -An extended configuration for the same sensor could look like this if you want/need to be more specific. +The example below shows a full configuration for a binary sensor: ```yaml # Example configuration.yaml entry binary_sensor: - platform: mqtt + name: "Window Contact Sensor" state_topic: "home-assistant/window/contact" - name: "Windows contact" + payload_on: "ON" + payload_off: "OFF" + availability_topic: "home-assistant/window/availability" + payload_available: "online" + payload_not_available: "offline" qos: 0 - payload_on: "1" - payload_off: "0" device_class: opening value_template: '{% raw %}{{ value.x }}{% endraw %}' ``` - diff --git a/source/_components/binary_sensor.mystrom.markdown b/source/_components/binary_sensor.mystrom.markdown index ec61cdd5ca4..6d093a2f259 100644 --- a/source/_components/binary_sensor.mystrom.markdown +++ b/source/_components/binary_sensor.mystrom.markdown @@ -38,9 +38,9 @@ binary_sensor: ### {% linkable_title Setup of the myStrom Buttons %} -You need to configure every button to make it work with Home Assistant. First connect the Wifi Buttons to your wireless network. Keep in mind that they only support WPS (Wi-FI Protected Setup). Once a button is connected you have three minutes to set the actions for the push patterns. The fastest way is to use `curl`. Check the [documentation](https://mystrom.ch/wp-content/uploads/REST_API_WBP.txt) of the WiFi Button for further details about the implementation (`http://` is replaced by `get://` or `post://`). `action` is the name of the corresponding push pattern (see above). +You need to configure every button to make it work with Home Assistant. First connect the Wifi Buttons to your wireless network. Once a button is connected you have three minutes to set the actions for the push patterns. The fastest way is to use `curl`. Check the [documentation](https://mystrom.ch/wp-content/uploads/REST_API_WBP.txt) of the WiFi Button for further details about the implementation (`http://` is replaced by `get://` or `post://`). `action` is the name of the corresponding push pattern (see above). -The endpoint that is recieving the data is `[IP address Home Assistant]:8123/api/mystrom`. +The endpoint that is receiving the data is `[IP address Home Assistant]:8123/api/mystrom`. ```bash $ curl -d "[action]=get://[IP address Home Assistant]:8123/api/mystrom?[action]%3D[ID of the button]" http://[IP address of the button]/api/v1/device/[MAC address of the button] diff --git a/source/_components/binary_sensor.netatmo.markdown b/source/_components/binary_sensor.netatmo.markdown index 92717748bc1..57d01bbd088 100644 --- a/source/_components/binary_sensor.netatmo.markdown +++ b/source/_components/binary_sensor.netatmo.markdown @@ -27,8 +27,7 @@ If you want to select a specific sensor, set discovery to False for [netatmo](/c binary_sensor: platform: netatmo home: home_name - timeout: 15 - offset: 90 + timeout: 90 cameras: - camera_name1 welcome_sensors: @@ -45,8 +44,7 @@ binary_sensor: Configuration variables: - **home** (*Optional*): Will use the cameras of this home only. -- **timeout** (*Optional*): The Welcome binary sensors will reflect the events from the last X minutes. (default: 15) -- **offset** (*Optional*): The Presence binary sensors will stay on for X seconds after detection. (default: 90) +- **timeout** (*Optional*): The Welcome/Presence binary sensors will stay on for X seconds after detection. (default: 90) - **cameras** array (*Optional*): Cameras to use. Multiple entities allowed. - 'camera_name': Name of the camera to display. - **welcome_sensors** array (*Optional*): List of monitored conditions. diff --git a/source/_components/binary_sensor.pilight.markdown b/source/_components/binary_sensor.pilight.markdown index 813ed0d22f8..4ccf5273920 100644 --- a/source/_components/binary_sensor.pilight.markdown +++ b/source/_components/binary_sensor.pilight.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Pilight Binary Sensor" -description: "Instructions how to integrate pilight binary sensors within Home Assistant." +description: "Instructions how to integrate Pilight binary sensors within Home Assistant." date: 2017-03-24 20:41 sidebar: true comments: false @@ -13,8 +13,28 @@ ha_release: 0.44 ha_iot_class: "Local Polling" --- -This component implement the [pilight hub](https://github.com/home-assistant/home-assistant.github.io/source/_components/pilight.markdown) binary sensor functionality. -Two type of pilight binary sensor configuration available. A normal sensor which send the on and off state cyclical and a trigger sensor which send only a trigger when an event happend (for example lots of cheap PIR motion detector) (see example configuration below). +The `pilight` binary sensor platform implement the [pilight hub](/components/pilight/) binary sensor functionality. Two type of Pilight binary sensor configuration available. A normal sensor which send the on and off state cyclical and a trigger sensor which send only a trigger when an event happened (for example lots of cheap PIR motion detector). + +To enable a Pilight binary sensor in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yml entry +binary_sensor: + - platform: pilight + variable: 'state' +``` + +Configuration variables: + +- **variable** (*Required*): The variable name in the data stream that defines the sensor value. +- **payload** (*Required*): Message payload identifiers. Only if all identifiers are matched the sensor value is set. +- **name** (*Optional*): Name of the sensor. +- **payload_on** (*Optional*): Variable `on` value. The component will recognize this as logical '1'. +- **payload_off** (*Optional*): Variable `off` value. The component will recognize this as logical '0'. +- **disarm_after_trigger:** (*Optional*): Configure sensor as trigger type. +- **reset_delay_sec** (*Optional*): Seconds before the sensor is disarmed if `disarm_after_trigger` is set to true. Default is 30 seconds. + +A full configuration example could look like this: ```yaml # Example configuration.yml entry @@ -25,13 +45,6 @@ binary_sensor: payload: unitcode: 371399 payload_on: 'closed' - disarm_after_trigger: True <-- use this if you want trigger type behavior + disarm_after_trigger: True + reset_delay_sec: 30 ``` - -Configuration variables: -- **variable** (*Required*): The variable name in the data stream that defines the sensor value. -- **payload** (*Required*): Message payload identifiers. Only if all identifiers are matched the sensor value is set. -- **name** (*Optional*): Name of the sensor. -- **payload_on** (*Optional*): Variable `on` value. The component will recognize this as logical '1'. -- **payload_off** (*Optional*): Variable `off` value. The component will recognize this as logical '0'. -- **disarm_after_trigger:** (*Optional*): Configure sensor as trigger type. diff --git a/source/_components/binary_sensor.raincloud.markdown b/source/_components/binary_sensor.raincloud.markdown new file mode 100644 index 00000000000..b5e1678d53b --- /dev/null +++ b/source/_components/binary_sensor.raincloud.markdown @@ -0,0 +1,30 @@ +--- +layout: page +title: "Melnor Raincloud Binary Sensor" +description: "Instructions on how to integrate your Melnor Raincloud sprinkler system within Home Assistant." +date: 2017-09-04 10:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: raincloud.jpg +ha_category: Binary Sensor +ha_release: "0.55" +ha_iot_class: "Cloud Polling" +--- + +To get your [Melnor RainCloud](https://wifiaquatimer.com) binary sensors working within Home Assistant, please follow the instructions for the general [Raincloud component](/components/raincloud). + +Once you have enabled the [Raincloud component](/components/raincloud), add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: raincloud +``` + +Configuration variables: + +- **monitored_conditions** array (*Optional*): Conditions to display in the frontend. If not specified, all conditions below will be enabled by default. The following conditions can be monitored. + - **is_watering**: Return if is currently watering per zone. + - **status**: Return status from the Melnor RainCloud Controller and Melnor RainCloud Faucet. diff --git a/source/_components/binary_sensor.random.markdown b/source/_components/binary_sensor.random.markdown new file mode 100644 index 00000000000..7376d6254d9 --- /dev/null +++ b/source/_components/binary_sensor.random.markdown @@ -0,0 +1,35 @@ +--- +layout: page +title: "Random Binary Sensor" +description: "Instructions how to integrate random state sensors into Home Assistant." +date: 2017-10-27 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: Sensor +ha_iot_class: "Local Polling" +ha_release: 0.57 +--- + + +The `random` binary sensor platform is creating random states (`True`, 1, `on` or `False`, 0, `off`). This can be useful if you want to test automation rules. It generates a new state every time it is polled. + +To enable the random binary sensor, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: random +``` + +{% configuration %} + name: + description: Name to use in the frontend. + required: false + type: string +{% endconfiguration %} + +See the [entity component options](/docs/configuration/platform_options/) to control how often the main component polls the random binary sensor. The default is 30 seconds. + diff --git a/source/_components/binary_sensor.raspihats.markdown b/source/_components/binary_sensor.raspihats.markdown index 5a76cbe2559..4815aa2de7b 100644 --- a/source/_components/binary_sensor.raspihats.markdown +++ b/source/_components/binary_sensor.raspihats.markdown @@ -44,4 +44,47 @@ Configuration variables: - **invert_logic** (*Optional*): Inverts the input logic, default is `false`. - **device_class** (*Optional*): See device classes in [binary_sensor component](/components/binary_sensor/), default is `None` +## {% linkable_title Directions for installing smbus support on Raspberry Pi %} + +Enable I2c interface with the Raspberry Pi configuration utility: + +```bash +# pi user environment: Enable i2c interface +$ sudo raspi-config +``` + +Select `Interfacing options->I2C` choose `+This component and the [rfxtrx switch](/components/switch/rfxtrx/) can steal each other's devices when setting the `automatic_add` configuration parameter to `true`. Set `automatic_add` only when you have some devices to add to your installation, otherwise leave it to `False`. +
+ +Binary sensors have only two states - "on" and "off". Many door or window opening sensors will send a signal each time the door/window is open or closed. However, depending on their hardware or on their purpose, some sensors are only able to signal their "on" state: + +- Most motion sensors send a signal each time they detect motion. They stay "on" for a few seconds and go back to sleep, ready to signal other motion events. Usually, they do not send a signal when they go back to sleep. +- Some doorbells may also only send "on" signals when their toggle switch is pressed, but no "off" signal when the switch is released. + +For those devices, use the *off_delay* parameter. It defines a delay after which a device will go back to an "Off" state. That "Off" state will be fired internally by Home Assistant, just as if the device fired it by itself. If a motion sensor can only send signals once every 5 seconds, sets the *off_delay* parameter to *seconds: 5*. + + +Example configuration: + +```yaml +# Example configuration.yaml entry +binary_sensor: + platform: rfxtrx + automatic_add: True + devices: + 091300006ca2c6001080: + name: motion_hall + device_class: motion + off_delay: + seconds: 5 +``` + +## Options for PT-2262 devices under the Lighting4 protocol + +When a data packet is transmitted by a PT-2262 device using the Lighting4 protocol, there is no way to automatically extract the device identifier and the command from the packet. Each device has its own id/command length combination and the fields lengths are not included in the data. One device that sends 2 different commands will be seen as 2 devices on Home Assistant. For such cases, the following options are available in order to circumvent the problem: + +- **data_bits** (*Optional*): Defines how many bits are used for commands inside the data packets sent by the device. +- **command_on** (*Optional*): Defines the data bits value that is sent by the device upon an 'On' command. +- **command_off** (*Optional*): Defines the data bits value that is sent by the device upon an 'Off' command. + +Let's try to add a new PT-2262 sensor using the "automatic_add" option and have a look at Home Assistant system log. + +Have your sensor trigger the "On" state for the first time. Some messages will appear: + +``` +INFO (Thread-6) [homeassistant.components.binary_sensor.rfxtrx] Added binary sensor 0913000022670e013970 (Device_id: 22670e Class: LightingDevice Sub: 0) +``` + +Here the sensor has the id *22670e*. + +Now have your sensor trigger the "Off" state and look for the following message in the Home Assistant log. You should see that your device has been detected as a *new* device when triggering its "Off" state: + +``` +INFO (Thread-6) [homeassistant.components.binary_sensor.rfxtrx] Added binary sensor 09130000226707013d70 (Device_id: 226707 Class: LightingDevice Sub: 0) +``` + +Here the device id is *226707*, which is almost similar to the *22670e* we had on the "On" event a few seconds ago. + +From those two values, you can guess that the actual id of your device is *22670*, and that *e* and *7* are commands for "On" and "Off" states respectively. As one hexadecimal digit uses 4 bits, we can conclude that the device is using 4 data bits. + +So here is the actual configuration section for the binary sensor: + +```yaml +platform: rfxtrx +automatic_add: True +devices: + 0913000022670e013b70: + name: window_room2 + device_class: opening + data_bits: 4 + command_on: 0xe + command_off: 0x7 +``` + +The *automatic_add* option makes the rfxtrx binary sensor component calculate and display the configuration options for you in the Home Assistant logs: + +``` +INFO (Thread-6) [homeassistant.components.rfxtrx] rfxtrx: found possible device 226707 for 22670e with the following configuration: +data_bits=4 +command_on=0xe +command_off=0x7 +INFO (Thread-6) [homeassistant.components.binary_sensor.rfxtrx] Found possible matching deviceid 22670e. +``` + +This automatic guess should work most of the time but there is no guarantee on that. You should activate it only when you want +to configure your new devices and leave it off otherwise. + +## Known working devices + +The following devices are known to work with the rfxtrx binary sensor component. There are too many other to list. + +- Motion detectors: + - Kerui P817 and P829. + - Chuango PIR-700. + +- Door / window sensors: + - Kerui D026 door / window sensor: can trigger on "open" and "close". Has a tamper switch. + - Nexa LMST-606. diff --git a/source/_components/binary_sensor.ring.markdown b/source/_components/binary_sensor.ring.markdown index be27ab30d0d..e663d6838cc 100644 --- a/source/_components/binary_sensor.ring.markdown +++ b/source/_components/binary_sensor.ring.markdown @@ -10,6 +10,7 @@ footer: true logo: ring.png ha_category: Binary Sensor ha_release: 0.42 +ha_iot_class: "Cloud Polling" --- To get your [Ring.com](https://ring.com/) binary sensors working within Home Assistant, please follow the instructions for the general [Ring component](/components/ring). @@ -20,15 +21,12 @@ Once you have enabled the [Ring component](/components/ring), add the following # Example configuration.yaml entry binary_sensor: - platform: ring - monitored_conditions: - - ding - - motion ``` Configuration variables: -- **monitored_conditions** array (*Required*): Conditions to display in the frontend. The following conditions can be monitored. +- **monitored_conditions** array (*Optional*): Conditions to display in the frontend. The following conditions can be monitored. If not specified, all conditions below will be enabled. - **ding**: Return a boolean value when the doorbell button was pressed. - - **motion**: Return a boolean value when a moviment was detected by the Ring doorbell. + - **motion**: Return a boolean value when a movement was detected by the Ring doorbell. -Currently only doorbells are supported by this sensor. +Currently it supports doorbell, external chimes and stickup cameras. diff --git a/source/_components/binary_sensor.rpi_gpio.markdown b/source/_components/binary_sensor.rpi_gpio.markdown index 8af41e2a9b1..99a7eda5eb4 100644 --- a/source/_components/binary_sensor.rpi_gpio.markdown +++ b/source/_components/binary_sensor.rpi_gpio.markdown @@ -29,7 +29,7 @@ binary_sensor: Configuration variables: - **ports** array (*Required*): Array of used ports. - - **port: name** (*Required*): Port numbers and corresponding names. + - **port: name** (*Required*): Port numbers (BCM mode pin numbers) and corresponding names. - **pull_mode** (*Optional*): The internal pull to use (UP or DOWN). Default is UP. - **bouncetime** (*Optional*): The time in milliseconds for port debouncing. Default is 50ms. - **invert_logic** (*Optional*): If true, inverts the output logic to ACTIVE LOW. Default is false (ACTIVE HIGH). diff --git a/source/_components/binary_sensor.satel_integra.markdown b/source/_components/binary_sensor.satel_integra.markdown new file mode 100644 index 00000000000..84744aaa9e2 --- /dev/null +++ b/source/_components/binary_sensor.satel_integra.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Satel Integra Binary Sensor" +description: "Instructions how to integrate Satel Integra binary sensors into Home Assistant." +date: 2017-09-07 13:28 +sidebar: true +comments: false +sharing: true +footer: true +logo: satel.jpg +ha_category: Binary Sensor +ha_release: 0.54 +ha_iot_class: "Local Push" +--- + +The `satel_integra` binary sensor allows you to monitor your [SatelIntegra](http://www.satel.pl/en/) alarm zones (inputs). + +Check the [type/class](/components/binary_sensor/) list for a possible visualization of your zone. + +The requirement is that you have setup your [SatelIntegra hub](/components/satel_integra/). diff --git a/source/_components/binary_sensor.skybell.markdown b/source/_components/binary_sensor.skybell.markdown new file mode 100644 index 00000000000..d16766f316d --- /dev/null +++ b/source/_components/binary_sensor.skybell.markdown @@ -0,0 +1,33 @@ +--- +layout: page +title: "Skybell Binary Sensor" +description: "Instructions on how to integrate your Skybell HD devices within Home Assistant." +date: 2017-10-03 16:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: skybell.png +ha_category: Binary Sensor +ha_release: 0.56 +ha_iot_class: "Cloud Polling" +--- + +To get your [Skybell.com](https://skybell.com/) binary sensors working within Home Assistant, please follow the instructions for the general [Skybell component](/components/skybell). + +Once you have enabled the [Skybell component](/components/skybell), add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: skybell + monitored_conditions: + - button + - motion +``` + +Configuration variables: + +- **monitored_conditions** array (*Required*): Conditions to display in the frontend. The following conditions can be monitored. + - **button**: Return a boolean value when the doorbell button was pressed. + - **motion**: Return a boolean value when movement was detected by the Skybell doorbell. diff --git a/source/_components/binary_sensor.tellduslive.markdown b/source/_components/binary_sensor.tellduslive.markdown new file mode 100644 index 00000000000..2a73bea7f46 --- /dev/null +++ b/source/_components/binary_sensor.tellduslive.markdown @@ -0,0 +1,16 @@ +--- +layout: page +title: "Telldus Binary Sensor" +description: "Instructions how to integrate Telldus Live binary sensors into Home Assistant." +date: 2017-10-24 10:09 +sidebar: true +comments: false +sharing: true +footer: true +logo: telldus.png +ha_category: Binary Sensor +featured: false +--- + +Integrates Telldus Live binary sensors into Home Assistant. See the [main component](/components/tellduslive/) for configuration instructions. + diff --git a/source/_components/binary_sensor.template.markdown b/source/_components/binary_sensor.template.markdown index 39ea85e7d22..62f2a50b1ba 100644 --- a/source/_components/binary_sensor.template.markdown +++ b/source/_components/binary_sensor.template.markdown @@ -1,108 +1,205 @@ --- layout: page title: "Template Binary Sensor" -description: "Instructions how to integrate Template binary sensors into Home Assistant." +description: "Instructions how to integrate Template Binary Sensors into Home Assistant." date: 2016-02-25 15:00 sidebar: true comments: false sharing: true footer: true ha_category: Binary Sensor +ha_release: 0.12 +ha_iot_class: "Local Push" logo: home-assistant.png --- -The `template` platform supports sensors which breaks out the `state` and `state_attributes` from other entities. The state of a template binary sensor can only be `on` or `off`. +The `template` platform supports sensors which breaks out the `state` and +`state_attributes` from other entities. The state of a Template Binary Sensor +can only be `on` or `off`. -To enable template binary sensors in your installation, add the following to your `configuration.yaml` file: +To enable Template Binary Sensors in your installation, add the following to +your `configuration.yaml` file: +{% raw %} ```yaml # Example configuration.yaml entry binary_sensor: - platform: template sensors: sun_up: - value_template: {% raw %}'{{ states.sun.sun.attributes.elevation > 0}}'{% endraw %} - friendly_name: 'Sun is up' + friendly_name: "Sun is up" + value_template: >- + {{ states.sun.sun.attributes.elevation|float > 0 }} ``` +{% endraw %} -Configuration variables: +{% configuration binary_sensor.template %} + sensors: + description: List of your sensors. + required: true + type: map + keys: + friendly_name: + description: Name to use in the frontend. + required: false + type: string + entity_id: + description: Add a list of entity IDs so the sensor only reacts to state changes of these entities. This will reduce the number of times the sensor will try to update its state. + required: false + type: string, list + device_class: + description: The type/class of the sensor to set the icon in the frontend. + required: false + type: device_class + default: None + value_template: + description: Defines a template to set the state of the sensor. + required: true + type: template + delay_on: + description: The amount of time the template state must be ***met*** before this sensor will switch to `on`. + required: false + type: time + delay_off: + description: The amount of time the template state must be ***not met*** before this sensor will switch to `off`. + required: false + type: time +{% endconfiguration %} -- **sensors** array (*Required*): List of your sensors. - - **friendly_name** (*Optional*): Name to use in the Frontend. - - **device_class** (*Optional*): The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend. - - **value_template** (*Optional*): Defines a [template](/topics/templating/) to extract a value from the payload. - - **entity_id** (*Optional*): Add a list of entity IDs so the sensor only reacts to state changes of these entities. This will reduce the number of times the sensor will try to update it's state. +## {% linkable_title Considerations %} + +If you are using the state of a platform that takes extra time to load, the +Template Binary Sensor may get an `unknown` state during startup. This results +in error messages in your log file until that platform has completed loading. +If you use `is_state()` function in your template, you can avoid this situation. +For example, you would replace +{% raw %}`{{ states.switch.source.state == 'on' }}`{% endraw %} +with this equivalent that returns `true`/`false` and never gives an unknown +result: +{% raw %}`{{ is_state('switch.source', 'on') }}`{% endraw %} ## {% linkable_title Examples %} In this section you find some real life examples of how to use this sensor. -### {% linkable_title Sensor threshold %} +### {% linkable_title Sensor Threshold %} -This example indicates true if a sensor is above a given threshold. Assuming a sensor of `furnace` that provides a current reading for the fan motor, we can determine if the furnace is running by checking that it is over some threshold: +This example indicates true if a sensor is above a given threshold. Assuming a +sensor of `furnace` that provides a current reading for the fan motor, we can +determine if the furnace is running by checking that it is over some threshold: +{% raw %} ```yaml sensor: - platform: template sensors: furnace_on: - value_template: {% raw %}{{ states.sensor.furnace.state > 2.5 }}{% endraw %} - friendly_name: 'Furnace Running + friendly_name: "Furnace Running" device_class: heat + value_template: "{{ states('sensor.furnace')|float > 2.5 }}" ``` +{% endraw %} -### {% linkable_title Switch as sensor %} +### {% linkable_title Switch as Sensor %} -Some movement sensors and door/window sensors will appear as a switch. By using a template binary sensor, the switch can be displayed as a binary sensors. The original switch can then be hidden by [customizing.](/getting-started/customizing-devices/) +Some movement sensors and door/window sensors will appear as a switch. By using +a Template Binary Sensor, the switch can be displayed as a binary sensors. The +original switch can then be hidden by +[customizing](/getting-started/customizing-devices/). +{% raw %} ```yaml -binary_sensor: - - platform: template +binary_sensor: + - platform: template sensors: movement: - value_template: {% raw %}"{{ states.switch.movement.state == 'on' }}"{% endraw %} device_class: motion + value_template: "{{ is_state('switch.movement', 'on') }}" door: - value_template: {% raw %}"{{ states.switch.door.state == 'on' }}"{% endraw %} device_class: opening + value_template: "{{ is_state('switch.door', 'on') }}" ``` +{% endraw %} +### {% linkable_title Combining Multiple Sensors, and Using `entity_id` %} -### {% linkable_title Combining multiple sensors, and using entity_id: %} - -This example combines multiple CO sensors into a single overall status. It also shows how to use `entity_id` +This example combines multiple CO sensors into a single overall +status. When using templates with binary sensors, you need to return +`true` or `false` explicitly. `entity_id` is used to limit which +sensors are being monitored to update the state, making computing this +sensor far more efficient. +{% raw %} ```yaml -binary_sensor: - - platform: template +binary_sensor: + - platform: template sensors: co: - friendly_name: 'CO' - device_class: 'gas' - value_template: {% raw %}>- - {%- if is_state("sensor.bedroom_co_status", "Ok") - and is_state("sensor.kitchen_co_status", "Ok") - and is_state("sensor.wardrobe_co_status", "Ok") -%} - Off - {%- else -%} - On - {%- endif %}{% endraw %} + friendly_name: "CO" + device_class: gas entity_id: - sensor.bedroom_co_status - sensor.kitchen_co_status - sensor.wardrobe_co_status + value_template: >- + {{ is_state('sensor.bedroom_co_status', 'Ok') + and is_state('sensor.kitchen_co_status', 'Ok') + and is_state('sensor.wardrobe_co_status', 'Ok') }} ``` -### {% linkable_title Change the icon %} +{% endraw %} -This example shows how to change the icon based on the day/night cycle. +### {% linkable_title Washing Machine Running %} +This example creates a washing machine "load running" sensor by monitoring an +energy meter connected to the washer. During the washer's operation, the energy +meter will fluctuate wildly, hitting zero frequently even before the load is +finished. By utilizing `off_delay`, we can have this sensor only turn off if +there has been no washer activity for 5 minutes. + +{% raw %} ```yaml -sensor: +# Determine when the washing machine has a load running. +binary_sensor: - platform: template sensors: - day_night: - friendly_name: 'Day/Night' - value_template: {% raw %}'{% if is_state("sun.sun", "above_horizon") %}Day{% else %}Night{% endif %}'{% endraw %} - icon_template: {% raw %}'{% if is_state("sun.sun", "above_horizon") %}mdi:weather-sunny{% else %}mdi:weather-night{% endif %}'{% endraw %} - + washing_machine: + friendly_name: "Washing Machine" + delay_off: + minutes: 5 + value_template: >- + {{ states('sensor.washing_machine_power')|float > 0 }} ``` +{% endraw %} + +### {% linkable_title Is Anyone Home? %} + +This example is determining if anyone is home based on the combination of device +tracking and motion sensors. It's extremely useful if you have kids/baby sitter/ +grand parents who might still be in your house that aren't represented by a +trackable device in Home Assistant. This is providing a composite of WiFi based +device tracking and Z-Wave multisensor presence sensors. + +{% raw %} +```yaml +binary_sensor: + - platform: template + sensors: + people_home: + entity_id: + - device_tracker.sean + - device_tracker.susan + - binary_sensor.office_124 + - binary_sensor.hallway_134 + - binary_sensor.living_room_139 + - binary_sensor.porch_ms6_1_129 + - binary_sensor.family_room_144 + value_template: >- + {{ is_state('device_tracker.sean', 'home') + or is_state('device_tracker.susan', 'home') + or is_state('binary_sensor.office_124', 'on') + or is_state('binary_sensor.hallway_134', 'on') + or is_state('binary_sensor.living_room_139', 'on') + or is_state('binary_sensor.porch_ms6_1_129', 'on') + or is_state('binary_sensor.family_room_144', 'on') }} +``` +{% endraw %} diff --git a/source/_components/binary_sensor.tesla.markdown b/source/_components/binary_sensor.tesla.markdown new file mode 100644 index 00000000000..c7c1948ae39 --- /dev/null +++ b/source/_components/binary_sensor.tesla.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Tesla Binary Sensor" +description: "Instructions on how to integrate Tesla binary sensors into Home Assistant." +date: 2017-08-30 12:29 +sidebar: true +comments: false +sharing: true +footer: true +logo: tesla.png +ha_category: Binary Sensor +ha_iot_class: "Cloud polling" +ha_release: 0.53 +--- + +The `Tesla` platform allows you to get data from your [Tesla](https://www.tesla.com/) sensors from within Home Assistant. + +They will be automatically discovered if the Tesla component is loaded. + +For more configuration information see the [Tesla component](/components/tesla/) documentation. diff --git a/source/_components/binary_sensor.threshold.markdown b/source/_components/binary_sensor.threshold.markdown index 025b2f2c064..c2e9e875b39 100644 --- a/source/_components/binary_sensor.threshold.markdown +++ b/source/_components/binary_sensor.threshold.markdown @@ -14,7 +14,9 @@ ha_release: 0.34 --- -The `threshold` binary sensor platform is consuming the state from another sensor. If the value is below (`lower`) or higher (`upper`) than the given threshold then state of this sensor change.. +The `threshold` binary sensor platform observes the state of another sensor. If the value is below (`lower`) or higher (`upper`) than the given threshold then state of the threshold sensor is changed. + +If the sensor is configured with no hysteresis and the sensor value is equal to the threshold, the sensor is turned off since it is not `lower` or `upper` with respect to the threshold. It's an alternative to the template binary sensor's `value_template:` to get the abnormal/too high/too low states. @@ -36,7 +38,7 @@ binary_sensor: Configuration variables: - **entity_id** (*Required*): The entity to monitor. Only [sensors](/components/sensor/) are supported. -- **threshold** (*Required*): The value which is the threshold. +- **threshold** (*Required*): The threshold which the observed value is compared against. - **type** (*Required*): `lower` if the value needs to be below the threshold or `upper` if higher. +- **hysteresis** (*Optional*): The distance the observed value must be from the threshold before the state is changed. Defaults to `0.0` - **name** (*Optional*): Name of the sensor to use in the frontend. Defaults to `Stats`. - diff --git a/source/_components/binary_sensor.trend.markdown b/source/_components/binary_sensor.trend.markdown index 15f49c2a2fc..41ac39437eb 100644 --- a/source/_components/binary_sensor.trend.markdown +++ b/source/_components/binary_sensor.trend.markdown @@ -13,7 +13,7 @@ ha_release: 0.28 ha_iot_class: "Local Push" --- -The `trend` platform allows you to create sensors which show the trend of numeric `state` or`state_attributes` from other entities. This sensor requires two updates of the underlying sensor to establish a trend. Thus it can take some time to show an accurate state. It can be useful as part of automations, where you want to base an action on a trend. +The `trend` platform allows you to create sensors which show the trend of numeric `state` or`state_attributes` from other entities. This sensor requires at least two updates of the underlying sensor to establish a trend. Thus it can take some time to show an accurate state. It can be useful as part of automations, where you want to base an action on a trend. To enable Trend binary sensors in your installation, add the following to your `configuration.yaml` file: @@ -29,39 +29,54 @@ binary_sensor: Configuration variables: - **sensors** array (*Required*): List of your sensors. - - **friendly_name** (*Optional*): Name to use in the Frontend. - - **device_class** (*Optional*): The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend. - **entity_id** (*Required*): The entity that this sensor tracks. - **attribute** (*Optional*): The attribute of the entity that this sensor tracks. If no attribute is specified then the sensor will track the state. - - **invert** (*Optional*): Invert the result (so `true` means descending rather than ascending) + - **device_class** (*Optional*): The [type/class](/components/binary_sensor/) of the sensor to set the icon in the frontend. + - **friendly_name** (*Optional*): Name to use in the Frontend. + - **invert** (*Optional*): Invert the result (so `true` means descending rather than ascending). Defaults to `False` + - **max_samples** (*Optional*): Limit the maximum number of stored samples. Defaults to `2`. + - **min_gradient** (*Optional*): The minimum rate at which the observed value must be changing for this sensor to switch on. Defaults to `0.0` + - **sample_duration** (*Optional*): The duration **in seconds** to store samples for. Samples older than this value will be discarded. Defaults to `0` + +## {% linkable_title Using Multiple Samples %} + +If the optional `sample_duration` and `max_samples` parameters are specified then multiple samples can be stored and used to detect long-term trends. + +Each time the state changes, a new sample is stored along with the sample time. Samples older than `sample_duration` seconds will be discarded. + +A trend line is then fitted to the available samples, and the gradient of this line is compared to `min_gradient` to determine the state of the trend sensor. The gradient is measured in sensor units per second - so if you want to know when the temperature is falling by 2 degrees per hour, use a gradient of (-2) / (60 x 60) = -0.00055 + +The current number of stored samples is displayed on the States page. ## {% linkable_title Examples %} In this section you find some real life examples of how to use this sensor. -### {% linkable_title Temperature trend %} - -This example indicates `true` if the temperature is rising: +This example indicates `true` if the sun is still rising: ```yaml binary_sensor: - platform: trend sensors: - temperature_up: - friendly_name: 'Temp increasing' - entity_id: sensor.skylight_temperature + sun_rising: + entity_id: sun.sun +``` + +This example creates two sensors to indicate whether the temperature is rising or falling at a rate of at least 3 degrees an hour, and collects samples over a two hour period: + +```yaml +binary_sensor: + - platform: trend + sensors: + temp_falling: + entity_id: sensor.outside_temperature + sample_duration: 7200 + min_gradient: -0.0008 + device_class: cold + + temp_rising: + entity_id: sensor.outside_temperature + sample_duration: 7200 + min_gradient: 0.0008 device_class: heat ``` - -And this one indicates `true` if the temperature is falling: - -```yaml -binary_sensor: - - platform: trend - sensors: - temperature_down: - friendly_name: 'Temp decreasing' - entity_id: sensor.skylight_temperature - device_class: cold - invert: Yes -``` diff --git a/source/_components/binary_sensor.velbus.markdown b/source/_components/binary_sensor.velbus.markdown new file mode 100644 index 00000000000..7c9c9ef62dd --- /dev/null +++ b/source/_components/binary_sensor.velbus.markdown @@ -0,0 +1,42 @@ +--- +layout: page +title: "Velbus sensors" +description: "Access and control your Velbus sensors." +date: 2017-06-17 16.58 +sidebar: true +comments: false +sharing: true +footer: true +logo: velbus.png +ha_category: Binary Sensor +ha_iot_class: "Local Push" +ha_release: "0.50" +--- + +The `velbus` binary_sensor allows you to control [Velbus](http://www.velbus.eu) connected wall switches. + +To use your Velbus wall switches in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry + +binary_sensor: + - platform: velbus + devices: + - name: Wall Switch 1 + module: 0xda + channel: 4 + - name: Wall Switch 2 + module: 0xbc + channel: 1 + is_pushbutton: true +``` + +Configuration variables: +- **devices** array (*Required*): The array contains the binary sensors to configure + - **name** (*Required*): Name of the binary sensor. + - **module** (*Required*): The hexadecimal module address + - **channel** (*Required*): The channel number in the module. + - **is_pushbutton** (*Optional*): Boolean to indicate if a wall switch is a push button or not (default: false) + +For hub configuration, see [the Velbus component](/components/velbus/). diff --git a/source/_components/binary_sensor.verisure.markdown b/source/_components/binary_sensor.verisure.markdown new file mode 100644 index 00000000000..026ad16ab46 --- /dev/null +++ b/source/_components/binary_sensor.verisure.markdown @@ -0,0 +1,19 @@ +--- +layout: page +title: "Verisure Binary Sensor" +description: "Instructions how to integrate Verisure binary sensors into Home Assistant." +date: 2016-02-23 21:31 +0100 +sidebar: true +comments: false +sharing: true +footer: true +logo: verisure.png +ha_category: Binary Sensor +ha_iot_class: "Cloud Polling" +--- + +Integrates Verisure binary sensors into Home Assistant. See the [main component](/components/verisure/) for configuration instructions. + +The following binary sensor types are supported: + +Door & Window diff --git a/source/_components/binary_sensor.vultr.markdown b/source/_components/binary_sensor.vultr.markdown new file mode 100644 index 00000000000..a78cb30dc37 --- /dev/null +++ b/source/_components/binary_sensor.vultr.markdown @@ -0,0 +1,54 @@ +--- +layout: page +title: "Vultr Binary Sensor" +description: "Instructions on how to set up Vultr binary sensors within Home Assistant." +date: 2017-10-17 21:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: System Monitor +logo: vultr.png +ha_release: "0.58" +ha_iot_class: "Cloud Polling" +--- + +The `vultr` binary sensor platform allows you to monitor your [Vultr](https://www.vultr.com/) subscription to see if it is powered on or not. + +To use this binary sensor, you first have to set up your [Vultr hub](/components/vultr/). + ++The following examples assume a subscription that has an ID of `123456` and a label of `Web Server` +
+ +Minimal `configuration.yaml` (produces `binary_sensor.vultr_web_server`): + +```yaml +# Example configuration.yaml entry +binary_sensor: + - platform: vultr + subscription: 123456 +``` + +{% configuration %} +subscription: + description: The subscription you want to monitor, this can be found in the URL when viewing a server. + required: true + type: string +name: + description: The name you want to give this binary sensor. + required: false + default: "Vultr {subscription label}" + type: string +{% endconfiguration %} + + +Full `configuration.yaml` (produces `binary_sensor.totally_awesome_server`): + +```yaml +binary_sensor: + - platform: vultr + name: totally_awesome_server + subscription: 12345 +``` + diff --git a/source/_components/binary_sensor.wink.markdown b/source/_components/binary_sensor.wink.markdown index aaff7d4e451..862a6b258ec 100644 --- a/source/_components/binary_sensor.wink.markdown +++ b/source/_components/binary_sensor.wink.markdown @@ -25,15 +25,15 @@ The requirement is that you have setup [Wink](/components/wink/). - Window/Door sensors - Motion sensors - Ring Door bells (No hub required) -- Liquid presense sensors +- Liquid presence sensors - Z-wave lock key codes - Lutron connected bulb remote buttons -- Wink Relay buttons and presense detection +- Wink Relay buttons and presence detection - Wink spotter loudness and vibration (No Wink hub required) - Wink hub devices connection status. This includes any paired hubs like Hue, Wink v1, Wink v2, Wink Relay... - Dropcam sensors-The above devices are confimed to work, but others may work as well. +The above devices are confirmed to work, but others may work as well.
diff --git a/source/_components/binary_sensor.workday.markdown b/source/_components/binary_sensor.workday.markdown index 133b28f1b76..45f1d2386cc 100644 --- a/source/_components/binary_sensor.workday.markdown +++ b/source/_components/binary_sensor.workday.markdown @@ -18,7 +18,7 @@ The `workday` binary sensor indicates, whether the current day is a workday or n To enable the `workday` sensor in your installation, add the following to your `configuration.yaml` file: ```yaml -# Example configuation.yaml entry +# Example configuration.yaml entry binary_sensor: - platform: workday country: DE @@ -30,6 +30,7 @@ Configuration variables: - **province** (*Optional*): Province code according to [holidays](https://pypi.python.org/pypi/holidays/0.8.1) notation. Defaults to None. - **workdays** (*Optional*): List of workdays. Defaults to `mon`, `tue`, `wed`, `thu`, `fri`. - **excludes** (*Optional*): List of workday excludes. Defaults to `sat`, `sun`, `holiday`. +- **days_offset** (*Optional*): Set days offset. Defaults to `0`. Days are specified as follows: `mon`, `tue`, `wed`, `thu`, `fri`, `sat`, `sun`. The keyword `holiday` is used for public holidays identified by the holidays module. diff --git a/source/_components/binary_sensor.xiaomi_aqara.markdown b/source/_components/binary_sensor.xiaomi_aqara.markdown new file mode 100644 index 00000000000..a6eb4e95d8e --- /dev/null +++ b/source/_components/binary_sensor.xiaomi_aqara.markdown @@ -0,0 +1,310 @@ +--- +layout: page +title: "Xiaomi Binary Sensor" +description: "Instructions how to setup the Xiaomi binary sensors within Home Assistant." +date: 2017-07-21 16:34 +sidebar: true +comments: false +sharing: true +footer: true +logo: xiaomi.png +ha_category: Binary Sensor +ha_release: "0.50" +ha_iot_class: "Local Push" +--- + + +The `xiaomi aqara` binary sensor platform allows you to get data from your [Xiaomi](http://www.mi.com/en/) binary sensors. + +The requirement is that you have setup the [`xiaomi aqara` component](/components/xiaomi_aqara/). + + +### {% linkable_title Type of sensors supported %} + +| Name | ZigBee entity | Model no. | States | Event | Event key | Event values | +|-----------------------------------|---------------------|----------------------|----------------------------------------------------|-----------------------------------------|--------------------------------------------------------------------------------------------------------------------------| +| Motion Sensor (1st gen) | motion | RTCGQ01LM | on, off | `motion` | | | +| Motion Sensor (2nd gen) | sensor_motion.aq2 | RTCGQ11LM | on, off | `motion` | | | +| Door and Window Sensor (1st gen) | magnet | WSDCGQ01LM | on, off | | | | +| Door and Window Sensor (2nd gen) | sensor_magnet.aq2 | MCCGQ11LM | on, off | | | | +| Smoke Detector | smoke | JTYJ-GD-01LM/BW | on, off | | | | +| Gas Leak Detector | natgas | JTQJ-BF-01LM/BW | on, off | | | | +| Water Leak Sensor | sensor_wleak.aq1 | SJCGQ11LM | on, off | | | | +| Button (1st gen) | switch | WXKG01LM | on (thru long_click_press), off | `click` | `click_type` | `long_click_press`, `long_click_release`, `hold`, `single`, `double` | +| Button (2nd gen) | sensor_switch.aq2 | WXKG11LM | off (always) | `click` | `click_type` | `single`, `double` | +| Aqara Wireless Switch (Single) | 86sw1 | WXKG03LM | off (always) | `click` | `click_type` | `single` | +| Aqara Wireless Switch (Double) | 86sw2 | WXKG02LM | off (always) | `click` | `click_type` | `single`, `both` | +| Cube | cube | MFKZQ01LM | off (always) | `cube_action` | `action_type`, `action_value` (rotate) | `flip90`, `flip180`, `move`, `tap_twice`, `shake_air`, `swing`, `alert`, `free_fall`, `rotate` (degrees at action_value) | + +### {% linkable_title Automation examples %} + +#### {% linkable_title Motion %} + +```yaml +- alias: If there is motion and its dark turn on the gateway light + trigger: + platform: state + entity_id: binary_sensor.motion_sensor_158d000xxxxxc2 + from: 'off' + to: 'on' + condition: + condition: numeric_state + entity_id: sensor.illumination_34ce00xxxx11 + below: 300 + action: + - service: light.turn_on + entity_id: light.gateway_light_34ce00xxxx11 + data: + brightness: 5 + - service: automation.turn_on + data: + entity_id: automation.MOTION_OFF +- alias: If there no motion for 5 minutes turn off the gateway light + trigger: + platform: state + entity_id: binary_sensor.motion_sensor_158d000xxxxxc2 + from: 'on' + to: 'off' + for: + minutes: 5 + action: + - service: light.turn_off + entity_id: light.gateway_light_34ce00xxxx11 + - service: automation.turn_off + data: + entity_id: automation.Motion_off +``` + +#### {% linkable_title Door and/or Window %} + +```yaml +- alias: If the window is open turn off the radiator + trigger: + platform: state + entity_id: binary_sensor.door_window_sensor_158d000xxxxxc2 + from: 'off' + to: 'on' + action: + service: climate.set_operation_mode + entity_id: climate.livingroom + data: + operation_mode: 'Off' +- alias: If the window is closed for 5 minutes turn on the radiator again + trigger: + platform: state + entity_id: binary_sensor.door_window_sensor_158d000xxxxxc2 + from: 'on' + to: 'off' + for: + minutes: 5 + action: + service: climate.set_operation_mode + entity_id: climate.livingroom + data: + operation_mode: 'Smart schedule' +``` + +#### {% linkable_title Smoke %} + +```yaml +- alias: Send notification on fire alarm + trigger: + platform: state + entity_id: binary_sensor.smoke_sensor_158d0001574899 + from: 'off' + to: 'on' + action: + - service: notify.html5 + data: + title: Fire alarm! + message: Fire/Smoke detected! + - service: xiaomi_aqara.play_ringtone + data: + gw_mac: xxxxxxxxxxxx + ringtone_id: 2 + ringtone_vol: 100 +``` + +#### {% linkable_title Gas %} + +```yaml +- alias: Send notification on gas alarm + trigger: + platform: state + entity_id: binary_sensor.natgas_sensor_158dxxxxxxxxxx + from: 'off' + to: 'on' + action: + - service: notify.html5 + data_template: + title: Gas alarm! + message: 'Gas with a density of {% raw %}{{ states.binary_sensor.natgas_sensor_158dxxxxxxxxxx.attributes.density }}{% endraw %} detected.' +``` + +#### {% linkable_title Xiaomi Wireless Button %} + +Available events are `single`, `double`, `hold`, `long_click_press` and `long_click_release`. For Square version (Aqara brand) only `single` and `double` events are supported. Furthermore the space between two clicks to generate a double click must be quite large now. + +```yaml +- alias: Toggle dining light on single press + trigger: + platform: event + event_type: click + event_data: + entity_id: binary_sensor.switch_158d000xxxxxc2 + click_type: single + action: + service: switch.toggle + entity_id: switch.wall_switch_left_158d000xxxxx01 +- alias: Toggle couch light on double click + trigger: + platform: event + event_type: click + event_data: + entity_id: binary_sensor.switch_158d000xxxxxc2 + click_type: double + action: + service: switch.toggle + entity_id: switch.wall_switch_right_158d000xxxxx01 +- alias: Let a dog bark on long press + trigger: + platform: event + event_type: click + event_data: + entity_id: binary_sensor.switch_158d000xxxxxc2 + click_type: long_click_press + action: + service: xiaomi_aqara.play_ringtone + data: + gw_mac: xxxxxxxxxxxx + ringtone_id: 8 + ringtone_vol: 8 +``` + +#### {% linkable_title Xiaomi Cube %} + +Available events are `flip90`, `flip180`, `move`, `tap_twice`, `shake_air`, `swing`, `alert`, `free_fall` and `rotate`. The component stores the last action as the attribute `last_action`. + +```yaml +- alias: Cube event flip90 + trigger: + platform: event + event_type: cube_action + event_data: + entity_id: binary_sensor.cube_15xxxxxxxxxxxx + action_type: flip90 + action: + - service: light.turn_on + entity_id: light.gateway_light_28xxxxxxxxxx + data: + color_name: "springgreen" +- alias: Cube event flip180 + trigger: + platform: event + event_type: cube_action + event_data: + entity_id: binary_sensor.cube_15xxxxxxxxxxxx + action_type: flip180 + action: + - service: light.turn_on + entity_id: light.gateway_light_28xxxxxxxxxx + data: + color_name: "darkviolet" +- alias: Cube event move + trigger: + platform: event + event_type: cube_action + event_data: + entity_id: binary_sensor.cube_15xxxxxxxxxxxx + action_type: move + action: + - service: light.turn_on + entity_id: light.gateway_light_28xxxxxxxxxx + data: + color_name: "gold" +- alias: Cube event tap_twice + trigger: + platform: event + event_type: cube_action + event_data: + entity_id: binary_sensor.cube_15xxxxxxxxxxxx + action_type: tap_twice + action: + - service: light.turn_on + entity_id: light.gateway_light_28xxxxxxxxxx + data: + color_name: "deepskyblue" +- alias: Cube event shake_air + trigger: + platform: event + event_type: cube_action + event_data: + entity_id: binary_sensor.cube_15xxxxxxxxxxxx + action_type: shake_air + action: + - service: light.turn_on + entity_id: light.gateway_light_28xxxxxxxxxx + data: + color_name: "blue" +``` + +#### {% linkable_title Aqara Wireless Switch %} + +The Aqara Wireless Switch is available as single-key and double-key version. Each key behaves like the Wireless Button limited to the click event `single`. The double key version adds a third device called `binary_sensor.wall_switch_both_158xxxxxxxxx12` which reports a click event called `both` if both keys are pressed. + +```yaml +- alias: Decrease brightness of the gateway light + trigger: + platform: event + event_type: click + event_data: + entity_id: binary_sensor.wall_switch_left_158xxxxxxxxx12 + click_type: single + action: + service: light.turn_on + entity_id: light.gateway_light_34xxxxxxxx13 + data_template: + brightness: {% raw %}>- + {% if states.light.gateway_light_34xxxxxxxx13.attributes.brightness %} + {% if states.light.gateway_light_34xxxxxxxx13.attributes.brightness - 60 >= 10 %} + {{states.light.gateway_light_34xxxxxxxx13.attributes.brightness - 60}} + {% else %} + {{states.light.gateway_light_34xxxxxxxx13.attributes.brightness}} + {% endif %} + {% else %} + 10 + {% endif %}{% endraw %} + +- alias: Increase brightness of the gateway light + trigger: + platform: event + event_type: click + event_data: + entity_id: binary_sensor.wall_switch_right_158xxxxxxxxx12 + click_type: single + action: + service: light.turn_on + entity_id: light.gateway_light_34xxxxxxxx13 + data_template: + brightness: {% raw %}>- + {% if states.light.gateway_light_34xxxxxxxx13.attributes.brightness %} + {% if states.light.gateway_light_34xxxxxxxx13.attributes.brightness + 60 <= 255 %} + {{states.light.gateway_light_34xxxxxxxx13.attributes.brightness + 60}} + {% else %} + {{states.light.gateway_light_34xxxxxxxx13.attributes.brightness}} + {% endif %} + {% else %} + 10 + {% endif %}{% endraw %} + +- alias: Turn off the gateway light + trigger: + platform: event + event_type: click + event_data: + entity_id: binary_sensor.wall_switch_both_158xxxxxxxxx12 + click_type: both + action: + service: light.turn_off + entity_id: light.gateway_light_34xxxxxxxx13 +``` diff --git a/source/_components/binary_sensor.zha.markdown b/source/_components/binary_sensor.zha.markdown index 96f607ea5d0..755e4396ed6 100644 --- a/source/_components/binary_sensor.zha.markdown +++ b/source/_components/binary_sensor.zha.markdown @@ -12,4 +12,4 @@ ha_category: Binary Sensor ha_iot_class: "Local Polling" --- -To get your ZigBee binary sensors working with Home Assistant, follow then instructions for the general [ZigBee Home Automationcomponent](/components/zha/). +To get your ZigBee binary sensors working with Home Assistant, follow the instructions for the general [ZigBee Home Automation component](/components/zha/). diff --git a/source/_components/blink.markdown b/source/_components/blink.markdown index 21cd6b4447b..217dcce7438 100644 --- a/source/_components/blink.markdown +++ b/source/_components/blink.markdown @@ -36,9 +36,9 @@ Once loaded, your front end will have the following components: * A camera image for each camera in your system. * A binary_sensor per camera that indicates whether motion detection is enabled. * A binary_sensor for the system that indicates if the system is armed or disarmed. -* A sesnor per camera that reports temperature. +* A sensor per camera that reports temperature. * A sensor per camera that reports battery level. -* A sensor per camera that reports unread notification (ie. detected motion events). +* A sensor per camera that reports unread notification (i.e., detected motion events). Since the cameras are battery operated, the images are only updated in Home Assistant when the user manually forces a new photo. This image can be updated with the `snap_picture` service to force Home Assistant to request an update from Blink's servers. As a note, all of the camera-specific sensors are only polled when a new image is requested from the camera. This means that relying on any of these sensors to provide timely and accurate data is not recommended. @@ -59,7 +59,7 @@ For `arm_system`, the value sent can be either `True` or `False` and will arm an } ``` -Arm camera follows a similar structure, but each indidivual camera can have motion detection enabled or disabled. Because of this, you also need to supply a name. For example, if you have a camera named "Living Room" and you want to turn off motion detection on that camera, you would call the `arm_camera` service with the following payload: +Arm camera follows a similar structure, but each individual camera can have motion detection enabled or disabled. Because of this, you also need to supply a name. For example, if you have a camera named "Living Room" and you want to turn off motion detection on that camera, you would call the `arm_camera` service with the following payload: ```json { diff --git a/source/_components/browser.markdown b/source/_components/browser.markdown index 36bb6176789..c5fa4b424eb 100644 --- a/source/_components/browser.markdown +++ b/source/_components/browser.markdown @@ -8,7 +8,7 @@ comments: false sharing: true footer: true logo: home-assistant.png -ha_category: Other +ha_category: Utility --- @@ -25,7 +25,7 @@ browser: | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | -| `url` | no | The url to open +| `url` | no | The URL to open. ### {% linkable_title Usage %} diff --git a/source/_components/calendar.todoist.markdown b/source/_components/calendar.todoist.markdown new file mode 100644 index 00000000000..65401ebc643 --- /dev/null +++ b/source/_components/calendar.todoist.markdown @@ -0,0 +1,136 @@ +--- +layout: page +title: "Todoist" +description: "Instructions on how to integrate Todoist into Home Assistant." +date: 2017-08-31 2:22 +sidebar: true +comments: false +sharing: true +footer: true +logo: todoist.png +ha_category: Calendar +ha_iot_class: "Cloud Polling" +ha_release: 0.54 +--- + + +This platform allows you to connect to your [Todoist Projects](https://todoist.com) and generate binary sensors. A different sensor will be created for each individual project, or you can specify "custom" projects which match against criteria you set (more on that below). These sensors will be `on` if you have a task due in that project or `off` if all the tasks in the project are completed or if the project doesn't have any tasks at all. All tasks get updated roughly every 15 minutes. + +### {% linkable_title Prerequisites %} + +You need to determine your Todoist API token. This is fairly simple to do; just go [to the Integrations section on your Todoist settings page](https://todoist.com/Users/viewPrefs?page=authorizations) and find the section labeled "API token" at the bottom of the page. Copy that token and use it in your configuration file. + +### {% linkable_title Basic Setup %} + +To integrate Todoist in Home Assistant, add the following section to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +calendar: + - platform: todoist + token: API_token_created_from_steps_above +``` + +Configuration variables: + +- **token** (*Required*): The API token used to authorize Home Assistant to access your projects. +- **custom_projects** (*Optional*): Details on any "custom" binary sensor projects you want to create. + - **name** (*Required*): The name of your custom project. Only required if you specify that you want to create a custom project. + - **due_date_days** (*Optional*): Only include tasks due within this many days. If you don't have any tasks with a due date set, this returns nothing. + - **labels** (*Optional*): Only include tasks with at least one of these labels (i.e., this works as an `or` statement).. + - **include_projects** (*Optional*): Only include tasks in these projects. Tasks in all other projects will be ignored. + + +### {% linkable_title Custom Projects %} +Creating custom projects is super-easy and quite powerful. All you need to run the basic Todoist projects is your API token, but if you wanted, you could go even deeper. Here's an example: + +```yaml +# Example configuration.yaml entry +calendar: + - platform: todoist + token: !secret todoist_token + custom_projects: + - name: 'All Projects' + - name: 'Due Today' + due_date_days: 0 + - name: 'Due This Week' + due_date_days: 7 + - name: 'Math Homework' + labels: + - Homework + include_projects: + - Mathematical Structures II + - Calculus II +``` + +(See [here](https://home-assistant.io/docs/configuration/secrets/) for more details about what that `!secret` does -- it's not exclusive to Todoist, and can help keep your API keys and passwords a little safer!) + +As you can see, there are 4 custom projects here: + +- A project containing *all* of the tasks on this account. + +- A project containing *all* the tasks on this account that are due today. + +- A project containing *all* the tasks on this account due within the next week. + +- A project containing everything with the label "Homework", taking only 2 projects into account. + +You can mix-and-match these attributes to create all sorts of custom projects. You can even use [IFTTT](https://ifttt.com/todoist) to create a task with a certain label, then have Home Assistant do some kind of automation when a task with that label comes due. + +Home Assistant does its best to determine what task in each project is "most" important, and it's that task which has its state reported. You can access the other tasks you have due soon via the `all_tasks` array (see below). + +### {% linkable_title Sensor attributes %} + + - **offset_reached**: Not used. + + - **all_day**: `True` if the reported task doesn't have a due date. `False` if there is a due date set. + + - **message**: The title of the "most important" task coming up in this project. + + - **description**: A URL pointing to the task on the Todoist website. + + - **location**: Not used. + + - **start_time**: The last time the Todoist component got updated. Usually within the last 15 minutes. + + - **end_time**: When the task is due. + +- **all_tasks**: A list of all tasks in this project, sorted from most important to least important. + +- **priority**: The priority Todoist reports this task as having. 1 means lowest priority, 4 means highest. Note that this is the **opposite** of how things are displayed in the Todoist app! + +- **task_comments**: Any comments added to this task. + +- **task_labels**: All labels associated with this task. + +- **overdue**: Whether the reported task is past its due date. + +- **due_today**: Whether the reported task is due today. + +### {% linkable_title Services %} + +Todoist also comes with access to a service, `todoist.new_task`. This service can be used to create a new Todoist task. You can specify labels and a project, or you can leave them blank, and the task will go to your "Inbox" project. + +Here's an example JSON payload: + +```json +{ + "content": "Pick up the mail", + "project": "Errands", + "labels":"Homework,School", + "priority":3, + "due_date":"2017-09-12 14:00" +} +``` + +- **content** (*Required*): The name of the task you want to create. + +- **project** (*Optional*): The project to put the task in. + +- **labels** (*Optional*): Any labels you want to add to the task, separated by commas. + +- **priority** (*Optional*): The priority of the task, from 1-4. Again, 1 means least important, and 4 means most important. + +- **due_date** (*Optional*): When the task should be due, in either YYYY-MM-DD format or YYYY-MM-DD HH:MM format. + +Note that there's (currently) no way to mark tasks as done through Home Assistant; task names do not necessarily have to be unique, so you could find yourself in a situation where you close the wrong task. diff --git a/source/_components/camera.abode.markdown b/source/_components/camera.abode.markdown new file mode 100644 index 00000000000..a95b6d2fcfb --- /dev/null +++ b/source/_components/camera.abode.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Abode Camera" +description: "Instructions how to integrate Abode cameras into Home Assistant." +date: 2017-08-26 13:28 +sidebar: true +comments: false +sharing: true +footer: true +logo: abode.jpg +ha_release: 0.54 +ha_category: Camera +ha_iot_class: "Cloud Push" +--- + +The `abode` security control panel platform allows you to control your [Abode](https://goabode.com/) alarms. + +This component will automatically add `Cameras` configured in your Abode account. You can request a new still image capture by passing the `entity_id` of your cameras to the [capture_image service](/components/abode/#capture_image). + +The requirement is that you have setup your [Abode hub](/components/abode/). diff --git a/source/_components/camera.amcrest.markdown b/source/_components/camera.amcrest.markdown index ee9d7761118..2c1a042c877 100644 --- a/source/_components/camera.amcrest.markdown +++ b/source/_components/camera.amcrest.markdown @@ -13,33 +13,14 @@ ha_iot_class: "Local Polling" ha_release: 0.34 --- -The `amcrest` platform allows you to integrate your [Amcrest](https://amcrest.com/) IP camera in Home Assistant. +To get your [Amcrest](https://amcrest.com/) cameras working within Home Assistant, please follow the instructions for the general [Amcrest component](/components/amcrest). -To enable your camera in your installation, add the following to your `configuration.yaml` file: +Once you have enabled the [Amcrest component](/components/amcrest), add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry camera: - platform: amcrest - host: IP_ADDRESS - username: USERNAME - password: PASSWORD ``` -Configuration variables: - -- **host** (*Required*): The IP address or hostname of your camera. If using hostname, make sure the DNS works as expected. -- **username** (*Required*): The username for accessing your camera. -- **password** (*Required*): The password for accessing your camera. -- **name** (*Optional*): This parameter allows you to override the name of your camera. The default is "Amcrest Camera". -- **port** (*Optional*): The port that the camera is running on. The default is 80. -- **resolution** (*Optional*): This parameter allows you to specify the camera resolution. For a high resolution (1080/720p), specify the option `high`. For VGA resolution (640x480p), specify the option `low`. If omitted, it defaults to *high*. -- **stream_source** (*Optional*): The data source for the live stream. `mjpeg` will use the camera's native MJPEG stream, whereas `snapshot` will use the camera's snapshot API to create a stream from still images. You can also set the `rtsp` option to generate the streaming via RTSP protocol. If omitted, it defaults to *mjpeg*. -- **ffmpeg_arguments**: (*Optional*): Extra options to pass to ffmpeg, e.g. image quality or video filter options. - -**Note:** Amcrest cameras with newer firmwares no longer have the ability to stream `high` definition video with MJPEG encoding. You may need to use `low` resolution stream or the `snapshot` stream source instead. If the quality seems too poor, lower the `Frame Rate (FPS)` and max out the `Bit Rate` settings in your camera's configuration manager. - -**Note:** If you set the `stream_source` option to `rtsp`, make sure to follow the steps mentioned at -[FFMPEG](https://home-assistant.io/components/ffmpeg/) documentation to install the `ffmpeg`. - To check if your Amcrest camera is supported/tested, visit the [supportability matrix](https://github.com/tchellomello/python-amcrest#supportability-matrix) link from the `python-amcrest` project. diff --git a/source/_components/camera.android_ip_webcam.markdown b/source/_components/camera.android_ip_webcam.markdown new file mode 100644 index 00000000000..04c6e41d8e8 --- /dev/null +++ b/source/_components/camera.android_ip_webcam.markdown @@ -0,0 +1,27 @@ +--- +layout: page +title: "Android IP Webcam Camera" +description: "Instructions how to integrate Android IP Webcam cameras within Home Assistant." +date: 2015-07-11 0:36 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Camera +logo: android_ip_webcam.png +ha_release: "0.40" +ha_iot_class: "Local Polling" +--- + + +The `android_ip_webcam` component adds a camera by default if you choose not to use the component but still want to see the video feed then the [`mjpeg` camera](/components/camera.mjpeg/) platform can be used. + +To enable only the camera in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +camera: + - platform: mjpeg + mjpeg_url: http://IP_ADDRESS:8080/video +``` + diff --git a/source/_components/camera.arlo.markdown b/source/_components/camera.arlo.markdown index 0a659827ea6..1d66a90bbf0 100644 --- a/source/_components/camera.arlo.markdown +++ b/source/_components/camera.arlo.markdown @@ -28,6 +28,6 @@ camera: Configuration variables: -- **ffmpeg_arguments**: (*Optional*): Extra options to pass to ffmpeg, e.g. image quality or video filter options. +- **ffmpeg_arguments**: (*Optional*): Extra options to pass to ffmpeg, e.g., image quality or video filter options. **Note:** To be able to playback the last capture, it is required to install the `ffmpeg` component. Make sure to follow the steps mentioned at [FFMPEG](https://home-assistant.io/components/ffmpeg/) documentation. diff --git a/source/_components/camera.doorbird.markdown b/source/_components/camera.doorbird.markdown new file mode 100644 index 00000000000..55fcb419f8c --- /dev/null +++ b/source/_components/camera.doorbird.markdown @@ -0,0 +1,32 @@ +--- +layout: page +title: "DoorBird Camera" +description: "Instructions how to integrate DoorBird video doorbell images into Home Assistant." +date: 2017-08-06 11:30 +sidebar: true +comments: false +sharing: true +footer: true +logo: doorbird.png +ha_category: Camera +ha_release: "0.54" +ha_iot_class: "Local Polling" +--- + +The `doorbird` implementation allows you to view the live video and saved images from your [DoorBird](http://www.doorbird.com/) device in Home Assistant. + ++ You must have the [DoorBird component](/components/doorbird/) configured to use this camera. +
+ +To enable the camera, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +camera: + - platform: doorbird +``` + +Configuration variables: + +- **last_visitor** (*Optional*): Adds a second camera that shows the last picture taken when someone rang the doorbell. Default is `false`. diff --git a/source/_components/camera.generic.markdown b/source/_components/camera.generic.markdown index a090c45235b..69637387a44 100644 --- a/source/_components/camera.generic.markdown +++ b/source/_components/camera.generic.markdown @@ -14,7 +14,7 @@ ha_iot_class: "depends" --- -The `generic` camera platform allows you to integrate any IP camera or other url into Home Assistant. Templates can be used to generate the urls on the fly. +The `generic` camera platform allows you to integrate any IP camera or other URL into Home Assistant. Templates can be used to generate the URLs on the fly. Home Assistant will serve the images via its server, making it possible to view your IP camera's while outside of your network. The endpoint is `/api/camera_proxy/camera.[name]`. @@ -34,7 +34,8 @@ Configuration variables: - **username** (*Optional*): The username for accessing your camera. - **password** (*Optional*): The password for accessing your camera. - **authentication** (*Optional*): Type for authenticating the requests `basic` (default) or `digest`. -- **limit_refetch_to_url_change** (*Optional*): True/false value (default: false). Limits refetching of the remote image to when the url changes. Only relevant if using a template to fetch the remote image. +- **limit_refetch_to_url_change** (*Optional*): True/false value (default: false). Limits re-fetching of the remote image to when the URL changes. Only relevant if using a template to fetch the remote image. +- **content_type** (*Optional*): Set the content type for the IP camera if it is not a jpg file (default: `image/jpeg`). Use `image/svg+xml` to add a dynamic svg file.@@ -43,3 +44,16 @@ Configuration variables:
+## {% linkable_title Examples %} + +In this section you find some real life examples of how to use this camera platform. + +### {% linkable_title Weather graph from yr.no %} + +```yaml +camera: + - platform: generic + name: Weather + still_image_url: https://www.yr.no/place/Norway/Oslo/Oslo/Oslo/meteogram.svg + content_type: 'image/svg+xml' +``` diff --git a/source/_components/camera.markdown b/source/_components/camera.markdown index 88840ff2112..48d1f58f5f0 100644 --- a/source/_components/camera.markdown +++ b/source/_components/camera.markdown @@ -12,3 +12,44 @@ footer: true The camera component allows you to use IP cameras with Home Assistant. With a little additional work you could use [USB cameras](/blog/2016/06/23/usb-webcams-and-home-assistant/) as well. +### {% linkable_title Service %} + +Once loaded, the `camera` platform will expose services that can be called to perform various actions. + +Available services: `enable_motion_detection`, `disable_motion_detection`, and `snapshot`. + +#### {% linkable_title Service `enable_motion_detection` %} + +Enable the motion detection in a camera. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | Name(s) of entities to enable motion detection, e.g., `camera.living_room_camera`. | + +#### {% linkable_title Service `disable_motion_detection` %} + +Disable the motion detection in a camera. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | Name(s) of entities to disable motion detection, e.g., `camera.living_room_camera`. | + +#### {% linkable_title Service `snapshot` %} + +Take a snapshot from a camera. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | Name(s) of entities to create a snopshot from, e.g., `camera.living_room_camera`. | +| `filename ` | no | Template of a file name. Variable is `entity_id`, e.g., {% raw %}`/tmp/snapshot_{{ entity_id }}`{% endraw %}. | + +### {% linkable_title Test if it works %} + +A simple way to test if you have set up your `camera` platform correctly, is to use
There is a known issue in urllib3 that you will get error messages in your logs like [StartBoundaryNotFoundDefect(), MultipartInvariantViolationDefect()], unparsed data: ''
but the component still works fine. You can ignore the messages.
+You must have the [USPS component](/components/usps/) configured to use this camera. The camera will be setup if the `usps` component is configured and the required configuration is set. +
+ +To customize the interval that mail images are rotated in the mail camera you can edit your `configuration.yaml` file with the following settings: +```yaml +# Example configuration.yaml entry +camera: + - platform: usps + scan_interval: 5 +``` + +To enable this camera in your installation, set up the [USPS component](/components/usps) with your username and password. diff --git a/source/_components/camera.yi.markdown b/source/_components/camera.yi.markdown new file mode 100644 index 00000000000..98cc2b1f38b --- /dev/null +++ b/source/_components/camera.yi.markdown @@ -0,0 +1,83 @@ +--- +layout: page +title: "Yi Home Camera" +description: "Instructions on how to integrate a video feed (via FFmpeg) as a camera within Home Assistant." +date: 2017-10-10 13:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: yi.png +ha_category: Camera +ha_release: 0.56 +ha_iot_class: "Local Polling" +--- + +The `yi` camera platform allows you to utilize [Yi Home Cameras](https://www.yitechnology.com/) within Home Assistant. Specifically, this platform supports the line of Yi Home Cameras that are based on the Hi3518e Chipset. This includes: + +* Yi Home 17CN +* Yi 1080p Home +* Yi Dome +* Yi 1080p Dome + +To successfully implement this platform, the Home Assistant host should be capable of multiple simultaneous reads. For every concurrent Home Assistant user, a connection will be made to the camera every 10 seconds. This should normally not be a problem. + +## {% linkable_title Preparing the Device %} + +### {% linkable_title Installing Alternative Firmware %} + +In order to integrate the camera with Home Assitant, it is necessary to install a custom firmware on the device. Instructions for doing so can be found via the [yi-hack-v3 GitHub project](https://github.com/shadow-1/yi-hack-v3). + +Once installed, please ensure that you have enabled FTP and Telnet on your device. + ++Some alternative Yi firmwares enable an experimental RTSP server, which will allow you to connect to your camera via other Home Assistant camera platforms. However, this RTSP server disables the ability to use the supremely-useful Yi Home app. In order to maintain both Home Assistant compatibility _and_ the native app, this platform retrieves videos via FTP. +
+ +### {% linkable_title Changing the FTP Password %} + +Once the custom firmware is installed, a password must be added to the FTP +server. To do so: + +1. Telnet into your camera: `telnet-The above devices are confimed to work, but others may work as well. +The above devices are confirmed to work, but others may work as well.
diff --git a/source/_components/comfoconnect.markdown b/source/_components/comfoconnect.markdown new file mode 100644 index 00000000000..fcce2b619f0 --- /dev/null +++ b/source/_components/comfoconnect.markdown @@ -0,0 +1,55 @@ +--- +layout: page +title: "Zehnder ComfoAir Q Ventilation" +description: "Instructions how to integrate Zehnder ComfoAir Q350/450/600 ventilation systems into Home Assistant." +date: 2017-06-28 18:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: zehnder.png +ha_category: Hub +ha_release: "0.48" +--- + +The `comfoconnect` component lets you control Zehnder ComfoAir [Q350](http://www.international.zehnder-systems.com/products-and-systems/comfosystems/zehnder-comfoair-q350-st)/[450](http://www.international.zehnder-systems.com/products-and-systems/comfosystems/zehnder-comfoair-q450-st)/[600](http://www.international.zehnder-systems.com/products-and-systems/comfosystems/zehnder-comfoair-q600-st) +ventilation units from Home Assistant. You need a [ComfoConnect LAN C](http://www.zehnder.co.uk/products-and-systems/comfortable-indoor-ventilation/ms-comfoair-q/ideal-control#node-21233) +bridge to connect the unit to your local network. + +There is an official iPhone and Android app to configure and control your unit. This platform connects with the help of +the unofficial [pycomfoconnect](https://github.com/michaelarnauts/comfoconnect) library. + +The component has a fan platform to view and control the ventilation speed, and a sensors platform to read out the outdoor temperature and humidity, the indoor temperature and humidity, and the extract and supply air flow (in m³ per hour). + +To set it up, add the following information to your `configuration.yaml` file: + +```yaml +comfoconnect: + host: 192.168.1.213 +``` + +Configuration variables: + +- **host** (*Required*): The ip or hostname of the ComfoConnect LAN C bridge. +- **name** (*Optional*): The name of this device as you want to see it in Home Assistant. +- **token** (*Optional*): The token you want to use when registering with the device. This is a random 32 char hexadecimal string. The default value is `00000000000000000000000000000001`. +- **user_agent** (*Optional*): The name you want to supply when registering with the device. The default value is `Home Assistant`. +- **pin** (*Optional*): The pin code to use when registering. This is `0000` by default. You only need to change this if you have changed the factory default pin. + +To register the sensors, add the following to your `configuration.yaml` file: + +```yaml +sensor: + - platform: comfoconnect + resources: + - current_temperature + - current_humidity + - outside_temperature + - outside_humidity + - air_flow_supply + - air_flow_exhaust +``` + ++Note that it's not possible to have multiple connection to the bridge at the same time. This component will keep the connection open, and if you open the app, it will ask you to disconnect Home Assistant. If you close the app again, Home Assistant will reconnect automatically. +
diff --git a/source/_components/config.markdown b/source/_components/config.markdown index 1de117ef841..514840e7f73 100644 --- a/source/_components/config.markdown +++ b/source/_components/config.markdown @@ -1,14 +1,14 @@ --- layout: page title: "Config" -description: "Instructions how to setup the configuration panel Home Assistant." +description: "Instructions how to setup the configuration panel for Home Assistant." date: 2017-02-24 20:00 sidebar: true comments: false sharing: true footer: true logo: home-assistant.png -ha_category: Other +ha_category: Front end ha_release: 0.39 --- @@ -21,16 +21,7 @@ To enable the configuration panel, add the following to your `configuration.yaml config: ``` -### {% linkable_title Group & Views %} - -The **Groups & Views** sections allows you to re-arrange your [groups](/components/group/). Also, you can edit the group's setting and switch between "view" and "group". - -
-
-
-The above devices are confimed to work, but others may work as well. +The above devices are confirmed to work, but others may work as well.
diff --git a/source/_components/cover.xiaomi_aqara.markdown b/source/_components/cover.xiaomi_aqara.markdown new file mode 100644 index 00000000000..d2bbdf5fa9d --- /dev/null +++ b/source/_components/cover.xiaomi_aqara.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Xiaomi Cover" +description: "Instructions how to setup the Xiaomi cover within Home Assistant." +date: 2017-07-21 16:34 +sidebar: true +comments: false +sharing: true +footer: true +logo: xiaomi.png +ha_category: Cover +ha_release: "0.50" +ha_iot_class: "Local Push" +--- + + +The `xiaomi aqara` cover platform allows you to get data from your [Xiaomi](http://www.mi.com/en/) covers. + +The requirement is that you have setup [Xiaomi aqara](/components/xiaomi_aqara/). + diff --git a/source/_components/demo.markdown b/source/_components/demo.markdown index 5210b128839..b399c9485cd 100644 --- a/source/_components/demo.markdown +++ b/source/_components/demo.markdown @@ -31,6 +31,7 @@ Available demo platforms: - [Switch](/components/switch/) (`switch`) - [Text-to-speech](/components/tts/) (`tts`) - [Weather](/components/weather/) (`weather`) +- [Mailbox](/components/mailbox/) (`mailbox`) To integrate a demo platform in Home Assistant, add the following section to your `configuration.yaml` file: diff --git a/source/_components/device_tracker.automatic.markdown b/source/_components/device_tracker.automatic.markdown index 67569e4c62a..dff0b45fec9 100644 --- a/source/_components/device_tracker.automatic.markdown +++ b/source/_components/device_tracker.automatic.markdown @@ -16,9 +16,9 @@ ha_iot_class: "Cloud Push" The `automatic` platform offers presence detection by retrieving your car's information from the [Automatic](http://automatic.com/) cloud service. -To use Automatic with Home Assistant, first you must [create a free development account](https://developer.automatic.com/). Automatic will generate a Client ID and Secret for you to use in your Home Assistant configuration. You will also need to update your Event Delivery preferences to ensure Home Assistant can receive updates. On the developer page, under App Settings / Event Delivery, select "Websocket" for Event Delivery Preference. +To use Automatic with Home Assistant, first you must [create a free development account](https://developer.automatic.com/). Automatic will generate a Client ID and Secret for you to use in your Home Assistant configuration. You will need to update your Event Delivery preferences to ensure Home Assistant can receive updates. On the developer page, under App Settings / Event Delivery, select "Websocket" for Event Delivery Preference. Next, specify the OAuth Redirect URL in the developer page. This should be configured to `+[Hass.io](/hassio/) only supports Bluetooth on Raspberry Pi 3 via the Bluetooth BCM43xx (/addons/bluetooth_bcm43xx/) addon. [Hass.io](/hassio/) doesn't support external Bluetooth dongles. +
To use the Bluetooth tracker in your installation, add the following to your `configuration.yaml` file: @@ -23,6 +27,6 @@ device_tracker: - platform: bluetooth_tracker ``` -In some cases it can be that your device is not discovered. In that case let your phone scan for BT devices while you restart Home Assistant. Just hit `Scan` on your phone all the time until Home Assistant is fully restarted and the device should appear in `known_devices.yaml`. +In some cases it can be that your device is not discovered. In that case let your phone scan for Bluetooth devices while you restart Home Assistant. Just hit `Scan` on your phone all the time until Home Assistant is fully restarted and the device should appear in `known_devices.yaml`. For additional configuration variables check the [Device tracker page](/components/device_tracker/). diff --git a/source/_components/device_tracker.geofency.markdown b/source/_components/device_tracker.geofency.markdown new file mode 100644 index 00000000000..320b59d4883 --- /dev/null +++ b/source/_components/device_tracker.geofency.markdown @@ -0,0 +1,46 @@ +--- +layout: page +title: "Geofency" +description: "Instructions for how to use Geofency to track devices in Home Assistant." +date: 2017-08-22 19:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: geofency.png +ha_category: Presence Detection +ha_release: 0.53 +--- + +This platform allows you to detect presence using [Geofency](http://www.geofency.com/). Geofency is a [paid app](https://itunes.apple.com/app/id615538630) for iOS that lets users to configure a request that will be sent when a geofence or iBeacon region is entered or exited. This can be configured with Home Assistant to update your location. + +To integrate Geofency in Home Assistant, add the following section to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +device_tracker: + - platform: geofency +``` + +Configuration variables: + +- **mobile_beacons** (*Optional*): List of beacon names that are to be treated as *mobile*. The name must match the name you configure in Geofency. By default, beacons will be treated as *stationary*. + +A full sample configuration for the `geofency` platform is shown below: + +```yaml +# Example configuration.yaml entry +device_tracker: + - platform: geofency + mobile_beacons: + - car + - keys +``` + +To configure Geofency, you must configure (via the Webhook feature) to send a POST request to your Home Assistant server at `http://
+
+ GPSLogger Settings
+
+
+ Logging Details
+
+
+ Log to custom URL details
+
+
+ Performance
+
+For this platform to work correctly, it is necessary to disable the "Access via wireless" feature in the Local Management Access section of the router administration page. If "Access via wireless" is not disabled, a connectivity conflict arises because the Home Assistant integration is trying to pass userid and password, but the router is only expecting a password. +
+ +To use a Linksys Smart Wifi Router in your Home Assistant installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +device_tracker: + - platform: linksys_smart + host: 192.168.1.1 +``` + +Configuration variables: + +- **host** (*Required*): The hostname or IP address of your router, eg. `192.168.1.1`. + +See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_components/device_tracker.locative.markdown b/source/_components/device_tracker.locative.markdown index 7409c6960b2..2a185c924e4 100644 --- a/source/_components/device_tracker.locative.markdown +++ b/source/_components/device_tracker.locative.markdown @@ -11,6 +11,10 @@ logo: locative.png ha_category: Presence Detection --- ++Locative is no longer under active development. See https://blog.locative.io/bye-everyone-df01871fe949 +
+ This platform allows you to detect presence using [Locative](https://my.locative.io/). Locative is an open source app for [iOS](https://github.com/LocativeHQ/ios-app) and [Android](https://github.com/LocativeHQ/Locative-Android) that allows users to set up a `GET` or `POST` request when a geofence is entered or exited. This can be configured with Home Assistant to update your location. To integrate Locative in Home Assistant, add the following section to your `configuration.yaml` file: diff --git a/source/_components/device_tracker.markdown b/source/_components/device_tracker.markdown index 45d58877d7a..105dec1e7f3 100644 --- a/source/_components/device_tracker.markdown +++ b/source/_components/device_tracker.markdown @@ -68,11 +68,11 @@ devicename: | Parameter | Default | Description | |----------------|-------------------------------|---------------------------------------------------------------------------------------------------------| -| `name` | Host name or "Unnamed Device" | The friendly name of the device | -| `mac` | None | The MAC address of the device. Add this if you are using a network device tracker like Nmap or SNMP | +| `name` | Host name or "Unnamed Device" | The friendly name of the device. | +| `mac` | None | The MAC address of the device. Add this if you are using a network device tracker like Nmap or SNMP. | | `picture` | None | A picture that you can use to easily identify the person or device. You can also save the image file in a folder "www" in the same location (can be obtained from developer tools) where you have your configuration.yaml file and just use `picture: /local/favicon-192x192.png`. | | `icon` | mdi:account | An icon for this device (use as an alternative to `picture`). | -| `gravatar` | None | An email address for the device's owner. If provided, it will override `picture` | -| `track` | [uses platform setting] | If `yes`/`on`/`true` then the device will be tracked. Otherwise its location and state will not update | -| `hide_if_away` | False | If `yes`/`on`/`true` then the device will be hidden if it is not at home | -| `consider_home` | [uses platform setting] | Allows you to override the global `consider_home` setting from the platform configuration on a per device level | +| `gravatar` | None | An email address for the device's owner. If provided, it will override `picture`. | +| `track` | [uses platform setting] | If `yes`/`on`/`true` then the device will be tracked. Otherwise its location and state will not update. | +| `hide_if_away` | False | If `yes`/`on`/`true` then the device will be hidden if it is not at home. | +| `consider_home` | [uses platform setting] | Seconds to wait till marking someone as not home after not being seen. Allows you to override the global `consider_home` setting from the platform configuration on a per device level. | diff --git a/source/_components/device_tracker.mikrotik.markdown b/source/_components/device_tracker.mikrotik.markdown index efb52eb46c6..e3e49c48469 100644 --- a/source/_components/device_tracker.mikrotik.markdown +++ b/source/_components/device_tracker.mikrotik.markdown @@ -15,6 +15,21 @@ ha_release: 0.44 The `mikrotik` platform offers presence detection by looking at connected devices to a [Mikrotik Routerboard](http://routerboard.com) based router. +You need to enable the RouterOS API to use this platform. + +Terminal: + +```bash +/ip service +set api disabled=no port=8728 +``` + +Web Frontend: + +Go to **IP** -> **Services** -> **API** and enable it. + +Make sure that port 8728 or the port you choose is accessible from your network. + To use an Mikrotik router in your installation, add the following to your `configuration.yaml` file: ```yaml @@ -31,6 +46,6 @@ Configuration variables: - **host** (*Required*): The IP address of your router. - **username** (*Required*: The username of an user with administrative privileges. - **password** (*Required*): The password for your given admin account. -- **port** (*Optional*): Mikrotik API port (see IP -> Services -> api ). Defaults to `8728`. +- **port** (*Optional*): Mikrotik API port. Defaults to `8728`. See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_components/device_tracker.mqtt.markdown b/source/_components/device_tracker.mqtt.markdown index 2b1bd0d519a..d60b895c50e 100644 --- a/source/_components/device_tracker.mqtt.markdown +++ b/source/_components/device_tracker.mqtt.markdown @@ -22,8 +22,8 @@ To use this device tracker in your installation, add the following to your `conf device_tracker: - platform: mqtt devices: - paulus_oneplus: /location/paulus - annetherese_n4: /location/annetherese + paulus_oneplus: 'location/paulus' + annetherese_n4: 'location/annetherese' ``` Configuration variables: diff --git a/source/_components/device_tracker.mysensors.markdown b/source/_components/device_tracker.mysensors.markdown index be28b220e80..14db68931ad 100644 --- a/source/_components/device_tracker.mysensors.markdown +++ b/source/_components/device_tracker.mysensors.markdown @@ -47,7 +47,7 @@ For more information, visit the [serial api] of MySensors. #define SN "GPS Sensor" #define SV "1.0" -// GPS position send interval (in millisectonds) +// GPS position send interval (in milliseconds) #define GPS_SEND_INTERVAL 30000 // The child id used for the gps sensor #define CHILD_ID_GPS 1 diff --git a/source/_components/device_tracker.netgear.markdown b/source/_components/device_tracker.netgear.markdown index 4a5a94f638a..70dbbce1025 100644 --- a/source/_components/device_tracker.netgear.markdown +++ b/source/_components/device_tracker.netgear.markdown @@ -29,9 +29,13 @@ device_tracker: Configuration variables: -- **host** (*Required*): The IP address of your router, e.g. `192.168.1.1`. -- **username** (*Required*): The username of an user with administrative privileges, usually `admin`. +- **host** (*Optional*): The IP address of your router, e.g. `192.168.1.1`. If not provided `routerlogin.net` will be used. +- **username** (*Optional*): The username of an user with administrative privileges. If not provided `admin` will be used. +- **port** (*Optional*): The port your router communicates with (defaults to `5000`, but `80` is also known to be used on some models). - **password** (*Required*): The password for your given admin account. -- **port** (*Optional*): The port your router communicates with (defaults to 5000, but 80 is also known to be used on some models) + +List of models that are known to use port 80: +- Nighthawk X4S - AC2600 (R7800) +- Orbi See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_components/device_tracker.nmap_tracker.markdown b/source/_components/device_tracker.nmap_tracker.markdown index 26e4a3fabd6..74b40f25eed 100644 --- a/source/_components/device_tracker.nmap_tracker.markdown +++ b/source/_components/device_tracker.nmap_tracker.markdown @@ -17,6 +17,10 @@ As an alternative to the router-based device tracking, it is possible to directl If you're on Debian or Ubuntu, you might have to install the packages for `arp` and `nmap`. Do so by running `$ sudo apt-get install net-tools nmap`. On a Fedora host run `$ sudo dnf -y install nmap`. ++If you are using [Hass.io](/hassio/) then just move forward to the configuration as all requirements are already fulfilled. +
+ Host detection is done via Nmap's "fast scan" (`-F`) of the most frequently used 100 ports, with a host timeout of 5 seconds. To use this device tracker in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/device_tracker.owntracks.markdown b/source/_components/device_tracker.owntracks.markdown index f7fc9192a8a..20cf68ab97a 100644 --- a/source/_components/device_tracker.owntracks.markdown +++ b/source/_components/device_tracker.owntracks.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: owntracks.png ha_category: Presence Detection -featured: true +featured: false ha_release: 0.7.4 --- @@ -30,8 +30,8 @@ Configuration variables: - **max_gps_accuracy** (*Optional*): Sometimes Owntracks can report GPS location with a very low accuracy (few kilometers). That can trigger false zoning in your Home Assistant installation. With the parameter, you can filter these GPS reports. The number has to be in meter. For example, if you put 200 only GPS report with an accuracy under 200 will be take in account. - **waypoints** (*Optional*): Owntracks users can define [waypoints](http://owntracks.org/booklet/features/waypoints/) (a.k.a regions) which are similar in spirit to Home Assistant zones. If this configuration variable is `True`, the Owntracks users who are in `waypoint_whitelist` can export waypoints from the device and Home Assistant will import them as zone definitions. Defaults to `True`. -- **waypoint_whitelist** (*Optional*): A list of user names (as defined for [Owntracks](/components/device_tracker.owntracks/)) who can export their waypoints from Owntracks to Home Assistant. Defaults to all users who are connected to Home Assistant via Owntracks. -- **secret** (*Optional*): [Payload encryption key](http://owntracks.org/booklet/features/encrypt/). This is usable when communicating with a third-party untrusted server or a public server (where anybody can subscribe to any topic). By default the payload is assumed to be unecrypted (although the comunication between Home Assistant and the server might still be encrypted). This feature requires the `libsodium` library to be present. +- **waypoint_whitelist** (*Optional*): A list of user names (as defined for [Owntracks](/components/device_tracker.owntracks/)) who can export their waypoints from Owntracks to Home Assistant. This would be the `username` portion of the Base Topic Name, (e.g. owntracks/**username**/iPhone). Defaults to all users who are connected to Home Assistant via Owntracks. +- **secret** (*Optional*): [Payload encryption key](http://owntracks.org/booklet/features/encrypt/). This is usable when communicating with a third-party untrusted server or a public server (where anybody can subscribe to any topic). By default the payload is assumed to be unencrypted (although the communication between Home Assistant and the server might still be encrypted). This feature requires the `libsodium` library to be present. A full sample configuration for the `owntracks` platform is shown below: @@ -71,13 +71,13 @@ When you exit a zone, Home Assistant will start using location updates to track ### {% linkable_title Using Owntracks regions - forcing Owntracks to update using %}iBeacons When run in the usual *significant changes mode* (which is kind to your phone battery), Owntracks sometimes doesn't update your location as quickly as you'd like when you arrive at a zone. This can be annoying if you want to trigger an automation when you get home. You can improve the situation using iBeacons. -iBeacons are simple bluetooth devices that send out an "I'm here" message. They are supported by IOS and some Android devices. Owntracks explain more [here](http://owntracks.org/booklet/guide/beacons/). +iBeacons are simple Bluetooth devices that send out an "I'm here" message. They are supported by IOS and some Android devices. Owntracks explain more [here](http://owntracks.org/booklet/guide/beacons/). When you enter an iBeacon region, Owntracks will send a `region enter` message to HA as described above. So if you want to have an event triggered when you arrive home, you can put an iBeacon outside your front door. If you set up an OwnTracks iBeacon region called `home` then getting close to the beacon will trigger an update to HA that will set your zone to be `home`. When you exit an iBeacon region HA will switch back to using GPS to determine your location. Depending on the size of your zone, and the accuracy of your GPS location this may change your HA zone. -Sometimes Owntracks will lose connection with an iBeacon for a few seconds. If you name your beacon starting with `-` Owntracks will wait longer before deciding it has exited the beacon zone. HA will ignore the `-` when it matches the Owntracks region with Zones. So if you call your Owntracks region `-home` then HA will recognise it as `home`, but you will have a more stable iBeacon connection. +Sometimes Owntracks will lose connection with an iBeacon for a few seconds. If you name your beacon starting with `-` Owntracks will wait longer before deciding it has exited the beacon zone. HA will ignore the `-` when it matches the Owntracks region with Zones. So if you call your Owntracks region `-home` then HA will recognize it as `home`, but you will have a more stable iBeacon connection. ### {% linkable_title Using Owntracks iBeacons to track devices %} iBeacons don't need to be stationary. You could put one on your key ring, or in your car. diff --git a/source/_components/device_tracker.owntracks_http.markdown b/source/_components/device_tracker.owntracks_http.markdown new file mode 100644 index 00000000000..7e91746e55a --- /dev/null +++ b/source/_components/device_tracker.owntracks_http.markdown @@ -0,0 +1,36 @@ +--- +layout: page +title: "OwnTracks (via HTTP)" +description: "Instructions how to use Owntracks via HTTP to track devices in Home Assistant." +date: 2017-09-28 07:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: owntracks.png +ha_category: Presence Detection +featured: true +ha_release: 0.55 +--- + +OwnTracks is a free and open source application that allows you to track your location in Home Assistant. This is a platform that supports OwnTracks via their HTTP publishing method. + +To integrate Owntracks tracking via HTTP in Home Assistant, add the following section to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +device_tracker: + - platform: owntracks_http +``` + +For configuration options and usage instructions, read the documentation for the [OwnTracks platform](/components/device_tracker.owntracks/). + +## {% linkable_title Configuring OwnTracks to submit data via HTTP %} + +Open OwnTracks and go to Connection preferences: + + - Mode: Select **Private HTTP** + - Host: [Home Assistant URL]:[port]/api/owntracks/[your name]/[device name] + - Identification: Turn **Authentication** on, username `homeassistant` and password is your API password that you use to login to Home Assistant. + +Host example: If I host my Home Assistant at `https://example.duckdns.org`, my name is Paulus and my phone is a Pixel I would set the host to be `https://example.duckdns.org/api/owntracks/paulus/pixel`. This will result in an entity with an ID of `device_tracker.paulus_pixel`. You can pick any name for the user and the device. diff --git a/source/_components/device_tracker.snmp.markdown b/source/_components/device_tracker.snmp.markdown index d8559db08c0..b6a140f3920 100644 --- a/source/_components/device_tracker.snmp.markdown +++ b/source/_components/device_tracker.snmp.markdown @@ -13,23 +13,26 @@ ha_release: 0.7.5 --- -A lot WiFi access points and WiFi routers support the Simple Network Management Protocol (SNMP). This is a standardized method for monitoring/manageing network connected devices. SNMP uses a tree-like hierarchy where each node is an object. Many of these objects contain (live) lists of insances and metrics, like network interfaces, disks, and wifi registrations. +A lot WiFi access points and WiFi routers support the Simple Network Management Protocol (SNMP). This is a standardized method for monitoring/manageing network connected devices. SNMP uses a tree-like hierarchy where each node is an object. Many of these objects contain (live) lists of instances and metrics, like network interfaces, disks, and WiFi registrations.-This device tracker needs SNMP to be enabled on the router. +This device tracker needs SNMP to be enabled on the router. It could be that you need to install the SNMP support manually.
OID examples: -- Mikrotik: `1.3.6.1.4.1.14988.1.1.1.2.1.1` (confirmed, unknown RouterOS version/model) -- Mikrotik: `1.3.6.1.2.1.4.22.1.2` (confirmed, RouterOS 6.x on RB2011) -- Aruba: `1.3.6.1.4.1.14823.2.3.3.1.2.4.1.2` (untested) -- BiPAC 7800DXL: `1.3.6.1.2.1.17.7.1.2.2.1.1` (confirmed on firmware 2.32e) -- OpenWrt: `1.3.6.1.2.1.4.22.1.2` (tested on Chaos Calmer 15.05 firmware, need to install snmpd package) -- pfSense: `1.3.6.1.2.1.4.22.1.2` (tested on 2.2.4-RELEASE, need to enable SNMP service) -- TPLink: `1.3.6.1.2.1.3.1.1.2.19.1` (Archer VR2600v, need to enable SNMP service) -- EdgeRouter `1.3.6.1.2.1.4.22.1.2` (EdgeRouter Lite v1.9.0, need to enable SNMP service) -- Ruckus: `1.3.6.1.4.1.25053.1.2.2.1.1.3.1.1.1.6` (Ruckus ZoneDirector, tested on 9.13.3) +| Brand | Device/Firmware | OID | +|---|---|---|---| +| Mikrotik | unknown RouterOS version/model | `1.3.6.1.4.1.14988.1.1.1.2.1.1` | +| Mikrotik | RouterOS 6.x on RB2011 | `1.3.6.1.2.1.4.22.1.2` | +| Aruba | (untested) | `1.3.6.1.4.1.14823.2.3.3.1.2.4.1.2` | +| pfSense | 2.2.4 | `1.3.6.1.2.1.4.22.1.2` | +| BiPAC | 7800DXL Firmware 2.32e | `1.3.6.1.2.1.17.7.1.2.2.1.1` | +| OpenWrt | Chaos Calmer 15.05 | `1.3.6.1.2.1.4.22.1.2` | +| TP-Link | Archer VR2600v | `1.3.6.1.2.1.3.1.1.2.19.1` | +| TP-Link | Archer VR600 | `1.3.6.1.2.1.3.1.1.2` | +| EdgeRouter | Lite v1.9.0 | `1.3.6.1.2.1.4.22.1.2` | +| Ruckus | ZoneDirector 9.13.3 | `1.3.6.1.4.1.25053.1.2.2.1.1.3.1.1.1.6` | To use the SNMP version 1 platform in your installation, add the following to your `configuration.yaml` file: @@ -58,7 +61,7 @@ device_tracker: Configuration variables: - **host** (*Required*): The IP address of the router, eg. 192.168.1.1. -- **community** (*Required*): The SNMP community which is set for the device. Most devices have a default community set to to `public` with read-only permission (which is sufficient). +- **community** (*Required*): The SNMP community which is set for the device. Most devices have a default community set to `public` with read-only permission (which is sufficient). - **baseoid** (*Required*): The OID prefix where wireless client registrations can be found, usually vendor specific. It's advised to use the numerical notation. To find this base OID, check vendor documentation or check the MIB file for your device. - **authkey** (*Inclusive*): Authentication key for SNMPv3. Variable privkey must also be set. - **privkey** (*Inclusive*): Privacy key SNMPv3. Variable authkey must also be set. diff --git a/source/_components/device_tracker.tado.markdown b/source/_components/device_tracker.tado.markdown index fdbba6cdcf7..446c79131d6 100644 --- a/source/_components/device_tracker.tado.markdown +++ b/source/_components/device_tracker.tado.markdown @@ -14,8 +14,7 @@ ha_release: 0.37 The `tado` device tracker is using the [Tado Smart Thermostat](https://www.tado.com/) and it's support for person presence detection based on smartphone location by geofencing. -This tracker uses the Tado API to determine if a mobile device is at home. -It tracks all devices in your home that Tado knows about. +This tracker uses the Tado API to determine if a mobile device is at home. It tracks all devices in your home that Tado knows about. To use the Tado platform in your installation, add the following to your `configuration.yaml` file: @@ -37,15 +36,25 @@ Configuration variables: After configuration, your device has to be at home at least once before showing up as *home* or *away*. Polling Tado API for presence information will happen at most once every 30 seconds. -See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. +See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. Beware that the Tado (v2) API does not provide GPS location of devices, only a bearing, therefore Home Assistant only uses `home`/`not-home` status. ### {% linkable_title Finding your `home_id` %} Find your `home_id` by browsing to `https://my.tado.com/api/v2/me?username=YOUR_USERNAME&password=YOUR_PASSWORD`. There you'll see something like the following: ```json -{"name":"Mark","email":"your@email.tld","username":"your@email.tld", -"homes":[{"id":12345,"name":"Home Sweet Home"}],"locale":"en_US", -"mobileDevices":[]} +{ + "name": "Mark", + "email": "your@email.tld", + "username": "your@email.tld", + "homes": [ + { + "id": 12345, + "name": "Home Sweet Home" + } + ], + "locale": "en_US", + "mobileDevices": [] +} ``` In this example `12345` is the `home_id` you'll need to configure. diff --git a/source/_components/device_tracker.tesla.markdown b/source/_components/device_tracker.tesla.markdown new file mode 100644 index 00000000000..68307d1057f --- /dev/null +++ b/source/_components/device_tracker.tesla.markdown @@ -0,0 +1,19 @@ +--- +layout: page +title: "Tesla" +description: "Instructions on for how to integrate Tesla into Home Assistant." +date: 2017-08-02 12:20 +sidebar: true +comments: false +sharing: true +footer: true +logo: tesla.png +ha_category: Presence Detection +ha_release: 0.53 +--- + +The `Tesla` platform allows you to get data about the location of your [Tesla](https://www.tesla.com/) car within Home Assistant. + +The device tracker platform will be automatically configured if Tesla component is configured. + +For more configuration information see the [Tesla component](/components/tesla/) documentation. diff --git a/source/_components/device_tracker.trackr.markdown b/source/_components/device_tracker.trackr.markdown index 19ced73c084..6337b8f7870 100644 --- a/source/_components/device_tracker.trackr.markdown +++ b/source/_components/device_tracker.trackr.markdown @@ -16,7 +16,7 @@ ha_iot_class: "Cloud Polling" The `trackr` platform allows you to detect presence using [TrackR](https://www.thetrackr.com/) devices. -The offical TrackR mobile app handles the tracking of the TrackR devices using your phones bluetooth and GPS. +The official TrackR mobile app handles the tracking of the TrackR devices using your phones Bluetooth and GPS. To integrate TrackR in Home Assistant, add the following section to your `configuration.yaml` file: diff --git a/source/_components/device_tracker.ubus.markdown b/source/_components/device_tracker.ubus.markdown index 28bff580c35..d408fec5448 100644 --- a/source/_components/device_tracker.ubus.markdown +++ b/source/_components/device_tracker.ubus.markdown @@ -68,6 +68,8 @@ Configuration variables: - **host** (*Required*): The IP address of your router, eg. 192.168.1.1. - **username** (*Required*): The username of an user with administrative privileges, usually *root*. - **password** (*Required*): The password for your given account. +- **dhcp_software** (*Optional*): The DHCP software used in your router: `dnsmasq` or `dhcpd`. Defaults to `dnsmasq`. + See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_components/device_tracker.unifi.markdown b/source/_components/device_tracker.unifi.markdown index f70e877e401..af017915885 100644 --- a/source/_components/device_tracker.unifi.markdown +++ b/source/_components/device_tracker.unifi.markdown @@ -33,5 +33,6 @@ Configuration variables: - **password** (*Required*): The password for your given admin account. - **site_id** (*Optional*): Allows you to specify a `site_id` for device tracking. Defaults to `default`. Found in the URL of the controller (i.e. https://CONTROLLER:PORT/manage/site/SITE_ID/dashboard). - **verify_ssl** (*Optional*): Controls if the SSL certificate running on your Unifi webserver must be trusted by a known Certificate Authority on the server running Home Assistant. Defaults to 'True' but can also be a value that points to your custom cert "path/to/custom_cert.pem". +- **detection_time** (*Optional*): The Unifi component will not return a device that has not been seen by the controller in the last 180 seconds. You can adjust this threshold with this variable and accepts seconds or `00:00:00` time formats. See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_components/device_tracker.upc_connect.markdown b/source/_components/device_tracker.upc_connect.markdown index bb5261269a5..d58a1878e93 100644 --- a/source/_components/device_tracker.upc_connect.markdown +++ b/source/_components/device_tracker.upc_connect.markdown @@ -21,12 +21,10 @@ To use a Connect Box in your installation, add the following to your `configurat # Example configuration.yaml entry device_tracker: - platform: upc_connect - password: YOUR_PASSWORD ``` Configuration variables: -- **password** (*Required*): The password for your Connect Box. - **host** (*Optional*): The IP address of your router. Set it if you are not using `192.168.0.1`. See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked. diff --git a/source/_components/dialogflow.markdown b/source/_components/dialogflow.markdown new file mode 100644 index 00000000000..a034f72e28c --- /dev/null +++ b/source/_components/dialogflow.markdown @@ -0,0 +1,120 @@ +--- +layout: page +title: "Dialogflow" +description: "Instructions how integrate Dialogflow with Home Assistant." +date: 2017-01-27 11:28 +sidebar: true +comments: false +sharing: true +footer: true +logo: dialogflow.png +ha_category: Voice +featured: false +ha_release: 0.56 +redirect_from: /components/apiai/ +--- + ++Before 0.56 this component was named `apiai`. +
+ +The `dialogflow` component is designed to be used with the [webhook](https://dialogflow.com/docs/fulfillment#webhook) integration of [Dialogflow](https://dialogflow.com/). When a conversation ends with a user, Dialogflow sends an action and parameters to the webhook. + +Dialogflow requires a public endpoint (HTTPS recommended), so your Home Assistant should be exposed to the Internet. Dialogflow will return fallback answers if your server does not answer or takes too long (more than 5 seconds). + +Dialogflow could be [integrated](https://dialogflow.com/docs/integrations/) with many popular messaging, virtual assistant and IoT platforms. + +Using Dialogflow will be easy to create conversations like: + + > User: What is the temperature at home? + > + > Bot: The temperature is 34 degrees + + > User: Turn on the light + > + > Bot: In which room? + > + > User: In the kitchen + > + > Bot: Turning on kitchen light + +To use this integration, you should define a conversation (intent) in Dialogflow, configure Home Assistant with the speech to return and, optionally, the action to execute. + +### {% linkable_title Configuring your Dialogflow account %} + +- [Login](https://console.dialogflow.com/) with your Google account +- Click on "Create Agent" +- Select name, language (if you are planning to use Google Actions check their [supported languages](https://support.google.com/assistant/answer/7108196?hl=en)) and time zone +- Click "Save" +- Go to "Fulfillment" (in the left menu) +- Enable Webhook and set your Home Assistant URL with the Dialogflow endpoint, e.g. `https://myhome.duckdns.org/api/dialogflow?api_password=HA_PASSWORD` +- Click "Save" +- Create a new intent +- Below "User says" write one phrase that you, the user, will tell Dialogflow, e.g. `What is the temperature at home?` +- In "Action" set some key (this will be the bind with Home Assistant configuration), eg.: GetTemperature +- In "Response" set "Cannot connect to Home Assistant or it is taking to long" (fall back response) +- At the end of the page, click on "Fulfillment" and check "Use webhook" +- Click "Save" +- On the top right, where is written "Try it now...", write, or say, the phrase you have previously defined and hit enter +- Dialogflow has send a request to your Home Assistant server + +Take a look to "Integrations", in the left menu, to configure third parties. + + +### {% linkable_title Configuring Home Assistant %} + +When activated, the [`alexa` component](/components/alexa/) will have Home Assistant's native intent support handle the incoming intents. If you want to run actions based on intents, use the [`intent_script`](/components/intent_script) component. + +## {% linkable_title Examples %} + +Download [this zip](https://github.com/home-assistant/home-assistant.github.io/blob/next/source/assets/HomeAssistant_APIAI.zip) and load it in your Dialogflow agent (**Settings** -> **Export and Import**) for examples intents to use with this configuration: + +{% raw %} +```yaml +# Example configuration.yaml entry +dialogflow: + +intent_script: + Temperature: + speech: + text: The temperature at home is {{ states('sensor.home_temp') }} degrees + LocateIntent: + speech: + text: > + {%- for state in states.device_tracker -%} + {%- if state.name.lower() == User.lower() -%} + {{ state.name }} is at {{ state.state }} + {%- elif loop.last -%} + I am sorry, I do not know where {{ User }} is. + {%- endif -%} + {%- else -%} + Sorry, I don't have any trackers registered. + {%- endfor -%} + WhereAreWeIntent: + speech: + text: > + {%- if is_state('device_tracker.adri', 'home') and + is_state('device_tracker.bea', 'home') -%} + You are both home, you silly + {%- else -%} + Bea is at {{ states("device_tracker.bea") }} + and Adri is at {{ states("device_tracker.adri") }} + {% endif %} + TurnLights: + speech: + text: Turning {{ Room }} lights {{ OnOff }} + action: + - service: notify.pushbullet + data_template: + message: Someone asked via apiai to turn {{ Room }} lights {{ OnOff }} + - service_template: > + {%- if OnOff == "on" -%} + switch.turn_on + {%- else -%} + switch.turn_off + {%- endif -%} + data_template: + entity_id: "switch.light_{{ Room | replace(' ', '_') }}" +``` +{% endraw %} + diff --git a/source/_components/discovery.markdown b/source/_components/discovery.markdown index c93c0927cc3..62f9c0c1b34 100644 --- a/source/_components/discovery.markdown +++ b/source/_components/discovery.markdown @@ -12,27 +12,31 @@ ha_category: Other --- -Home Assistant can discover and automatically configure zeroconf/mDNS and uPnP devices on your network. Currently the `discovery` component can detect: +Home Assistant can discover and automatically configure [zeroconf](https://en.wikipedia.org/wiki/Zero-configuration_networking)/[mDNS](https://en.wikipedia.org/wiki/Multicast_DNS) and [uPnP](https://en.wikipedia.org/wiki/Universal_Plug_and_Play) devices on your network. Currently the `discovery` component can detect: - * Google Chromecast - * Belkin WeMo switches - * Philips Hue - * Netgear routers - * Plex media server - * Panasonic Viera - * Roku media player - * Sonos Speakers - * Yamaha media player - * Logitech media server (Squeezebox) - * DirecTV - * Apple TV - * Yeelight Sunflower Bulb - * Flux Led/MagicLight - * Linn / Openhome - * Denon Network Receivers - * Bose Soundtouch speakers - * Axis Communications security devices - * IKEA Trådfri (Tradfri) + * [Apple TV](https://home-assistant.io/components/apple_tv/) + * [Axis Communications security devices](https://home-assistant.io/components/axis/) + * [Belkin WeMo switches](https://home-assistant.io/components/wemo/) + * [Bluesound speakers](https://home-assistant.io/components/media_player.bluesound/) + * [Bose Soundtouch speakers](https://home-assistant.io/components/media_player.soundtouch/) + * [Denon network receivers](https://home-assistant.io/components/media_player.denonavr/) + * [DirecTV receivers](https://home-assistant.io/components/media_player.directv/) + * [Frontier Silicon internet radios](https://home-assistant.io/components/media_player.frontier_silicon/) + * [Google Cast](https://home-assistant.io/components/media_player.cast/) + * [IKEA Trådfri (Tradfri)](https://home-assistant.io/components/tradfri/) + * [Linn / Openhome](https://home-assistant.io/components/media_player.openhome/) + * [Logitech Harmony Hub](https://home-assistant.io/components/remote.harmony/) + * [Logitech media server (Squeezebox)](https://home-assistant.io/components/media_player.squeezebox/) + * [Netgear routers](https://home-assistant.io/components/device_tracker.netgear/) + * [Panasonic Viera](https://home-assistant.io/components/media_player.panasonic_viera/) + * [Philips Hue](https://home-assistant.io/components/light.hue/) + * [Plex media server](https://home-assistant.io/components/media_player.plex/) + * [Roku media player](https://home-assistant.io/components/media_player.roku/) + * [SABnzbd downloader](https://home-assistant.io/components/sensor.sabnzbd/) + * [Samsung TVs](https://home-assistant.io/components/media_player.samsungtv/) + * [Sonos speakers](https://home-assistant.io/components/media_player.sonos/) + * [Yamaha media player](https://home-assistant.io/components/media_player.yamaha/) + * [Yeelight Sunflower bulb](https://home-assistant.io/components/light.yeelightsunflower/) It will be able to add Google Chromecasts and Belkin WeMo switches automatically, for Philips Hue it will require some configuration from the user. @@ -53,38 +57,44 @@ Configuration variables: Valid values for ignore are: * `apple_tv`: Apple TV - * `axis`: (Axis Communications security devices) - * `denonavr`: Denon Network Receivers - * `directv`: DirecTV - * `flux_led`: Flux Led/MagicLight - * `google_cast`: Google Chromecast - * `ikea_tradfri`: IKEA Trådfri - * `logitech_mediaserver`: Logitech media server - Squeezebox player + * `axis`: Axis Communications security devices + * `belkin_wemo`: Belkin WeMo switches + * `bluesound`: Bluesound speakers + * `bose_soundtouch`: Bose Soundtouch speakers + * `denonavr`: Denon network receivers + * `directv`: DirecTV receivers + * `frontier_silicon`: Frontier Silicon internet radios + * `google_cast`: Google Cast + * `harmony`: Logitech Harmony Hub + * `ikea_tradfri`: IKEA Trådfri (Tradfri) + * `logitech_mediaserver`: Logitech media server (Squeezebox) + * `netgear_router`: Netgear routers * `openhome`: Linn / Openhome * `panasonic_viera`: Panasonic Viera * `philips_hue`: Philips Hue * `plex_mediaserver`: Plex media server * `roku`: Roku media player - * `samsung_tv`: (Samsung TV - * `sonos`: Sonos Speakers + * `sabnzbd`: SABnzbd downloader + * `samsung_tv`: Samsung TVs + * `sonos`: Sonos speakers * `yamaha`: Yamaha media player - * `yeelight`: Yeelight Sunflower Bulb - + * `yeelight`: Yeelight Sunflower bulb +Home Assistant must be on the same network as the devices for uPnP discovery to work. -If running Home Assistant in a Docker container use switch `--net=host` to put it on the host's network. +If running Home Assistant in a [Docker container](/docs/installation/docker/) use switch `--net=host` to put it on the host's network.
-If you are developing a new platform, please read [how to make your platform discoverable]({{site_root}}/developers/add_new_platform/#discovery). --There is currently a known issue with running this platform on a 64-bit version of Python and Windows. +There is currently a known issue with running this component on a 64-bit version of Python and Windows.
-If you are on Windows and you're using Python 3.5, download the Netifaces dependency here. +If you are on Windows and you're using Python 3.5, download the [Netifaces](http://www.lfd.uci.edu/~gohlke/pythonlibs/#netifaces) dependency.
If you see `Not initializing discovery because could not install dependency netdisco==0.6.1` in the logs, you will need to install the `python3-dev` or `python3-devel` package on your system manually (eg. `sudo apt-get install python3-dev` or `sudo dnf -y install python3-devel`). On the next restart of home-assistant, discovery should work. If you still get an error, check if you have a compiler (`gcc`) available on your system.
+ +If you are developing a new platform, please read [how to make your platform discoverable](/developers/component_discovery/) for further details. diff --git a/source/_components/doorbird.markdown b/source/_components/doorbird.markdown new file mode 100644 index 00000000000..0b7f1e4120a --- /dev/null +++ b/source/_components/doorbird.markdown @@ -0,0 +1,32 @@ +--- +layout: page +title: "DoorBird" +description: "Instructions on how to integrate your DoorBird video doorbell with Home Assistant." +date: 2017-08-06 11:30 +sidebar: true +comments: false +sharing: true +footer: true +logo: doorbird.png +ha_category: Hub +ha_release: "0.54" +ha_iot_class: "Local Polling" +--- + +The `doorbird` implementation allows you to integrate your [DoorBird](http://www.doorbird.com/) device in Home Assistant. + +To connect your device, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +doorbird: + host: IP_OR_HOSTNAME + username: abcdef0001 + password: xxxxxxxxxx +``` + +Configuration variables: + +- **host** (*Required*): The LAN IP address or hostname of your device. You can find this by going to the [DoorBird Online check](http://www.doorbird.com/checkonline) and entering the information from the paper that was included in the box. +- **username** (*Required*): The username of a non-administrator user account on the device. +- **password** (*Required*): The password for the user specified. diff --git a/source/_components/downloader.markdown b/source/_components/downloader.markdown index e77b2308d57..53063587d69 100644 --- a/source/_components/downloader.markdown +++ b/source/_components/downloader.markdown @@ -28,7 +28,7 @@ Configuration variables: ### {% linkable_title Use the service %} -Go the the "Developer Tools", then to "Call Service", and choose `downloader/download_file` from the list of available services. Fill the "Service Data" field as shown in the example below and hit "CALL SERVICE". +Go to the "Developer Tools", then to "Call Service", and choose `downloader/download_file` from the list of available services. Fill the "Service Data" field as shown in the example below and hit "CALL SERVICE". ```json {"url":"http://domain.tld/path/to/file"} @@ -36,7 +36,9 @@ Go the the "Developer Tools", then to "Call Service", and choose `downloader/dow This will download the file from the given URL. -| Service data attribute | Optional | Description | -| ---------------------- | -------- | ----------- | -| `url` | no | The url of the file to download. - +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ---------------------------------------------- | +| `url` | no | The URL of the file to download. | +| `subdir` | yes | Download into subdirectory of **download_dir** | +| `filename` | yes | Determine the filename. | +| `overwrite` | yes | Whether to overwrite the file or not, defaults to `false`. | diff --git a/source/_components/duckdns.markdown b/source/_components/duckdns.markdown new file mode 100644 index 00000000000..bd18114a18e --- /dev/null +++ b/source/_components/duckdns.markdown @@ -0,0 +1,36 @@ +--- +layout: page +title: "DuckDNS" +description: "Keep your computer registered with the DuckDNS dynamic DNS." +date: 2017-09-23 07:08 +sidebar: true +comments: false +sharing: true +footer: true +logo: duckdns.png +ha_category: Utility +featured: false +ha_release: 0.55 +--- + +With the DuckDNS component you can keep your DuckDNS record up to date. DuckDNS is a free dynamic DNS service that allows you to point a subdomain under `duckdns.org` at your computer. + +To use the component in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +duckdns: + domain: mysubdomain + access_token: abcdefgh +``` + +{% configuration duckdns %} + domain: + description: Your duckdns subdomain (without the `.duckdns.org` suffix). + required: true + type: string + access_token: + description: Your DuckDNS access token. Log in to the site to get one. + required: true + type: string +{% endconfiguration %} diff --git a/source/_components/dweet.markdown b/source/_components/dweet.markdown index ae2fabf2376..fdfab021d8f 100644 --- a/source/_components/dweet.markdown +++ b/source/_components/dweet.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Dweet.io" -description: "Record events in InfluxDB." +description: "Transfer events to Dweet.io." date: 2016-05-07 07:08 sidebar: true comments: false @@ -24,14 +24,14 @@ The `dweet` component makes it possible to transfer details collected with Home The publishing interval is limited to 1 second. This means that it's possible to miss fast changes. -To use the `deweet` component in your installation, add the following to your `configuration.yaml` file: +To use the `dweet` component in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry dweet: name: HAExport whitelist: - - input_slider.brightness + - input_number.brightness - input_boolean.notify_home - sensor.weather_temperature - sensor.cpu diff --git a/source/_components/dyson.markdown b/source/_components/dyson.markdown index ef77841c847..a3d015001ce 100644 --- a/source/_components/dyson.markdown +++ b/source/_components/dyson.markdown @@ -13,9 +13,7 @@ ha_iot_class: "Cloud Polling" ha_release: 0.47 --- -The `dyson` component is the main component to integrate all [Dyson](https://dyson.com) related platforms. - -Currently limited to Cool Link Purifier. +The `dyson` component is the main component to integrate all [Dyson](https://dyson.com) related platforms: [Fans](/components/fan/dyson/) and [Robot vacuum](/components/vacuum/dyson/). To enable this component, add the following lines to your `configuration.yaml`: @@ -25,9 +23,9 @@ dyson: password:+At this time `emulated_hue` doesn't appear to be working for new Google Home users. +
+ The `emulated_hue` component provides a virtual Philips Hue bridge, written entirely in software, that allows services that work with the Hue API to interact with Home Assistant entities. The driving use case behind this functionality is to allow Home Assistant to work with an Amazon Echo or Google Home with no set up cost outside of configuration changes. The virtual bridge has the ability to turn entities on or off, or change the brightness of dimmable lights. The volume level of media players can be controlled as brightness.- It is recommended to assign a static IP address to the computer running Home Assistant. This is because the Amazon Echo discovers devices by IP addresses, and if the IP changes, the Echo won't be able to control it. This is easiest done from your router, see your router's manual for details. +A physical Hue Bridge is required for the lights to function - this virtual bridge will not replace a physical bridge. +
+ ++It is recommended to assign a static IP address to the computer running Home Assistant. This is because the Amazon Echo discovers devices by IP addresses, and if the IP changes, the Echo won't be able to control it. This is easiest done from your router, see your router's manual for details.
### {% linkable_title Configuration %} @@ -28,7 +36,6 @@ To enable the emulated Hue bridge, add one of the following configs to your `con ```yaml # Google Home example configuration.yaml entry emulated_hue: - type: google_home listen_port: 80 # Google Home does not work on different ports. ``` @@ -36,13 +43,11 @@ emulated_hue: ```yaml # Amazon Echo example configuration.yaml entry emulated_hue: - type: alexa - listen_port: 80 ``` Configuration variables: -- **type** (*Optional*): The type of assistant who we are emulated for. Either `alexa` or `google_home`, defaults to `google_home`. +- **type** (*Optional*): The type of assistant who we are emulated for. Either `alexa` or `google_home`, defaults to `google_home`. **This configuration option is deprecated and will be removed in a future release. It is no longer necessary to define type.** - **host_ip** (*Optional*): The IP address that your Home Assistant installation is running on. If you do not specify this option, the component will attempt to determine the IP address on its own. - **listen_port** (*Optional*): The port the Hue bridge API web server will run on. If not specified, this defaults to 8300. This can be any free port on your system. @@ -52,11 +57,11 @@ Configuration variables: - **upnp_bind_multicast** (*Optional*): Whether or not to bind the UPNP (SSDP) listener to the multicast address (239.255.255.250) or instead to the (unicast) host_ip address specified above (or automatically determined). The default is true, which will work for most situations. In special circumstances, like running in a FreeBSD or FreeNAS jail, you may need to disable this. - **off_maps_to_on_domains** (*Optional*): The domains that maps an "off" command to an "on" command. - + For example, if `script` is included in the list, and you ask Alexa to "turn off the *water plants* script," the command will be handled as if you asked her to turn on the script. - + If not specified, this defaults to the following list: - + - `script` - `scene` @@ -87,7 +92,7 @@ emulated_hue: - light ``` -With additional customization you will be able to specify the behaviour of the existing entities. +With additional customization you will be able to specify the behavior of the existing entities. ```yaml # Example customization @@ -95,7 +100,7 @@ homeassistant: customize: light.bedroom_light: # Don't allow light.bedroom_light to be controlled by the emulated Hue bridge - emulated_hue: false + emulated_hue_hidden: true light.office_light: # Address light.office_light as "back office light" emulated_hue_name: "back office light" @@ -103,7 +108,7 @@ homeassistant: The following are attributes that can be applied in the `customize` section: -- **emulated_hue** (*Optional*): Whether or not the entity should be exposed by the emulated Hue bridge. The default value for this attribute is controlled by the `expose_by_default` option. +- **emulated_hue_hidden** (*Optional*): Whether or not the entity should be exposed by the emulated Hue bridge. Adding `emulated_hue_hidden: false` will expose the entity to Alexa. The default value for this attribute is controlled by the `expose_by_default` option. - **emulated_hue_name** (*Optional*): The name that the emulated Hue will use. The default for this is the entity's friendly name. ### {% linkable_title Troubleshooting %} @@ -113,13 +118,14 @@ You can verify that the `emulated_hue` component has been loaded and is respondi - `http://-Make sure that your topic is an exact match. `some-topic/` and `some-topic` are different topics. +Make sure that your topics match exactly. `some-topic/` and `some-topic` are different topics.
## {% linkable_title Examples %} diff --git a/source/_components/fan.velbus.markdown b/source/_components/fan.velbus.markdown new file mode 100644 index 00000000000..ff0652f233f --- /dev/null +++ b/source/_components/fan.velbus.markdown @@ -0,0 +1,41 @@ +--- +layout: page +title: "Velbus Fans" +description: "Access and control your Velbus fans." +date: 2017-06-17 16.58 +sidebar: true +comments: false +sharing: true +footer: true +logo: velbus.png +ha_category: Fan +ha_iot_class: "Local Push" +ha_release: "0.50" +--- + +The `velbus` fan allows you to control [Velbus](http://www.velbus.eu) connected fans. + +To use your Velbus fans in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry + +fan: + - platform: velbus + devices: + - name: Fan 1 + module: 0xda + channel_low: 4 + channel_medium: 3 + channel_high: 2 +``` + +Configuration variables: +- **devices** array (*Required*): The array contains the fans to configure + - **name** (*Required*): Name of the fan. + - **module** (*Required*): The hexadecimal module address + - **channel_low** (*Required*): The channel number in the module for low-speed. + - **channel_medium** (*Required*): The channel number in the module for medium-speed. + - **channel_high** (*Required*): The channel number in the module for high-speed. + +For hub configuration, see [the Velbus component](/components/velbus/). diff --git a/source/_components/fan.wink.markdown b/source/_components/fan.wink.markdown index df8fa5a4556..23369dfad2e 100644 --- a/source/_components/fan.wink.markdown +++ b/source/_components/fan.wink.markdown @@ -21,10 +21,12 @@ The requirement is that you have setup [Wink](/components/wink/). ### {% linkable_title Supported fan devices %} -- Gardinier +- Home Decorator Wink-enabled Gardinier ceiling fan +- Hampton Bay ceiling fan moduleThe above devices are confimed to work, but others may work as well.
+ diff --git a/source/_components/fan.xiaomi_miio.markdown b/source/_components/fan.xiaomi_miio.markdown new file mode 100644 index 00000000000..7acf1291e45 --- /dev/null +++ b/source/_components/fan.xiaomi_miio.markdown @@ -0,0 +1,111 @@ +--- +layout: page +title: "Xiaomi Air Purifier 2" +description: "Instructions how to integrate your Xiaomi Air Purifier 2 within Home Assistant." +date: 2017-10-13 12:35 +sidebar: true +comments: false +sharing: true +footer: true +logo: xiaomi.png +ha_category: Switch +ha_version: 0.57 +ha_iot_class: "Local Polling" +--- + +The `xiaomi_miio` fan platform allows you to control the Xiaomi Air Purifier 2. The Air Purifier Pro isn't supported right now. + +Currently, the supported features are + +* On, Off +* Operation modes (auto, silent, favorite, idle) +* Buzzer (on, off) +* LED (on, off), LED brightness (bright, dim, off) +* Favorite Level +* States + - power + - aqi + - humidity + - temperature + - mode + - led + - led_brightness + - buzzer + - child_lock + - brightness + - favorite_level + - filter1_life + - f1_hour_used + - use_time + - motor1_speed + +## {% linkable_title Setup %} + +Please follow the instructions on [Retrieving the Access Token](/components/vacuum.xiaomi_miio/#retrieving-the-access-token) to get the API token to use in the `configuration.yaml` file. + +To add a Xiaomi Air Purifier to your installation, add the following to your `configuration.yaml` file: + +```yaml +fan: + - platform: xiaomi_miio + name: Xiaomi Air Purifier 2 + host: 192.168.130.66 + token: YOUR_TOKEN +``` + +Configuration variables: +- **host** (*Required*): The IP of your plug. +- **token** (*Required*): The API token of your plug. +- **name** (*Optional*): The name of your plug. + +## {% linkable_title Platform Services %} + +### Service fan/xiaomi_miio_set_buzzer_on + +Turn the buzzer on. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on specific air purifier. Else targets all. | + +### Service fan/xiaomi_miio_set_buzzer_off + +Turn the buzzer off. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on specific air purifier. Else targets all. | + +### Service fan/xiaomi_miio_set_led_on + +Turn the led on. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on specific air purifier. Else targets all. | + +### Service fan/xiaomi_miio_set_led_off + +Turn the led off. + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on specific air purifier. Else targets all. | + +### Service fan/xiaomi_miio_set_led_brightness + +Set the led brightness. Supported values are 0 (Bright), 1 (Dim), 2 (Off). + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on specific air purifier. Else targets all. | +| `brightness` | no | Brightness, between 0 and 2. | + +### Service fan/xiaomi_miio_set_favorite_level + +Set the favorite level of the operation mode "favorite". + +| Service data attribute | Optional | Description | +|---------------------------|----------|-------------------------------------------------------| +| `entity_id` | yes | Only act on specific air purifier. Else targets all. | +| `level` | no | Level, between 0 and 16. | diff --git a/source/_components/feedreader.markdown b/source/_components/feedreader.markdown index efaee1fb50a..15b72129655 100644 --- a/source/_components/feedreader.markdown +++ b/source/_components/feedreader.markdown @@ -22,6 +22,7 @@ feedreader: urls: - https://home-assistant.io/atom.xml - https://github.com/blog.atom + - https://hasspodcast.io/feed/podcast ``` Configuration variables: @@ -48,11 +49,14 @@ automation: platform: event event_type: feedreader action: - service: notify.notify - data_template: "{{ trigger.event.data.title }}" + service: persistent_notification.create + data_template: + title: "New HA Podcast available" + message: {% raw %}"New Podcast available - {{ as_timestamp(now()) | timestamp_custom('%I:%M:%S %p %d%b%Y', true) }}"{% endraw %} + notification_id: {% raw %}"{{ trigger.event.data.title }}"{% endraw %} ``` -*Any field under the `You need the `ffmpeg` binary in your system path. On Debian 8 or Raspbian (Jessie) you can install it from [debian-backports](https://backports.debian.org/Instructions/). If you want [hardware acceleration](https://trac.ffmpeg.org/wiki/HWAccelIntro) support on a Raspberry Pi, you will need to build from source by yourself. Windows binaries are available on the [FFmpeg](http://www.ffmpeg.org/) website.
++If you are using [Hass.io](/hassio/) then just move forward to the configuration as all requirements are already fulfilled. +
+ To set it up, add the following information to your `configuration.yaml` file: ```yaml @@ -48,7 +52,7 @@ ffmpeg: In most cases, `ffmpeg` automatically detects all needed options to read a video or audio stream or file. But it is possible in rare cases that you will need to set options to help `ffmpeg` out. -First check that your stream is playable by `ffmpeg` outside of Home Assistant with (use option `-an` or `-vn` to disable video or audio stream): +First, check that your stream is playable by `ffmpeg` outside of Home Assistant with (use option `-an` or `-vn` to disable video or audio stream): ``` $ ffmpeg -i INPUT -an -f null - @@ -57,19 +61,19 @@ $ ffmpeg -i INPUT -an -f null - Now you should be able to see what is going wrong. The following list contains some common problems and solutions: - `[rtsp @ ...] UDP timeout, retrying with TCP`: You need to set an RTSP transport in the configuration with: `input: -rtsp_transport tcp -i INPUT` -- `[rtsp @ ...] Could not find codec parameters for stream 0 (Video: ..., none): unspecified size`: FFmpeg needs more data or time for autodetection (the default is 5 seconds). You can set the `analyzeduration` and/or `probesize` options to experiment with giving FFmpeg more leeway. If you find the needed value, you can set it with: `input: -analyzeduration xy -probesize xy -i INPUT`. More information about this can be found [here](https://www.ffmpeg.org/ffmpeg-formats.html#Description). +- `[rtsp @ ...] Could not find codec parameters for stream 0 (Video: ..., none): unspecified size`: FFmpeg needs more data or time for autodetection (the default is 5 seconds). You can set the `analyzeduration` and/or `probesize` options to experiment with giving FFmpeg more leeway. If you find the needed value, you can set it with: `input: -analyzeduration xy -probesize xy -i INPUT`. More information about this can be found [here](https://www.ffmpeg.org/ffmpeg-formats.html#Description). #### {% linkable_title USB cameras %} -For `INPUT` a valid source is needed. USB camera are an easy way to test your video setup. To get all available USB cameras connected to the system, eg. use the v4l2 tools on a Linux machine. +For `INPUT` a valid source is needed. A USB camera is an easy way to test your video setup. To get all available USB cameras connected to the system, e.g., use the v4l2 tools on a Linux machine. ```bash $ v4l2-ctl --list-devices UVC Camera (046d:0825) (usb-0000:00:14.0-1): - /dev/video1 + /dev/video1 Integrated Camera (usb-0000:00:14.0-10): - /dev/video0 + /dev/video0 ``` Record a test video with your USB device `/dev/video1`: diff --git a/source/_components/foursquare.markdown b/source/_components/foursquare.markdown index c8070eff9a2..10b5d6ebe61 100644 --- a/source/_components/foursquare.markdown +++ b/source/_components/foursquare.markdown @@ -46,7 +46,7 @@ After that, you will get redirected to your `REDIRECT_URL` with the `access_toke The component accepts pushes from Foursquare at `/api/foursquare`. The route does not require authentication. -Foursquare checkin events can be used out of the box to trigger automation actions, e.g.: +Foursquare check-in events can be used out of the box to trigger automation actions, e.g.: ```yaml automation: @@ -69,7 +69,7 @@ Parameters: - **eventId** (*Optional*): The event the user is checking in to. - **shout** (*Optional*): A message about your check-in. The maximum length of this field is 140 characters. - **mentions** (*Optional*): Mentions in your check-in. This parameter is a semicolon-delimited list of mentions. A single mention is of the form "start,end,userid", where start is the index of the first character in the shout representing the mention, end is the index of the first character in the shout after the mention, and userid is the userid of the user being mentioned. If userid is prefixed with "fbu-", this indicates a Facebook userid that is being mention. Character indices in shouts are 0-based. -- **broadcast** (*Optional*): "Who to broadcast this check-in to. Accepts a comma-delimited list of values: private (off the grid) or public (share with friends), facebook share on facebook, twitter share on twitter, followers share with followers (celebrity mode users only), If no valid value is found, the default is public." +- **broadcast** (*Optional*): "Who to broadcast this check-in to. Accepts a comma-delimited list of values: private (off the grid) or public (share with friends), Facebook share on Facebook, twitter share on twitter, followers share with followers (celebrity mode users only), If no valid value is found, the default is public." - **ll** (*Optional*): Latitude and longitude of the user's location. Only specify this field if you have a GPS or other device reported location for the user at the time of check-in. - **llAcc** (*Optional*): Accuracy of the user's latitude and longitude, in meters. - **alt** (*Optional*): Altitude of the user's location, in meters. diff --git a/source/_components/frontend.markdown b/source/_components/frontend.markdown index 47027c322bf..dc48dd837fb 100644 --- a/source/_components/frontend.markdown +++ b/source/_components/frontend.markdown @@ -17,3 +17,105 @@ This offers the official frontend to control Home Assistant. # Example configuration.yaml entry frontend: ``` + +{% configuration %} + themes: + description: Allow to define different themes. See below for further details. + required: false + type: map + keys: + "[identifier]": + description: Name to use in the frontend. + required: true + type: [list, map] + keys: + "[css-identifier]": + description: The CSS identifier. + required: true + type: [list, string] + extra_html_url: + description: "List of addtional [resources](/developers/frontend_creating_custom_ui/) to load." + required: false + type: list + development_repo: + description: Allow to point to a directory containing frontend files instead of taking them from a pre-built PyPI package. Useful for Frontend development. + required: false + type: string +{% endconfiguration %} + + +## {% linkable_title Themes %} + +Starting with version 0.49 you can define themes: + +Example: + +```yaml +# Example configuration.yaml entry +frontend: + themes: + happy: + primary-color: pink + sad: + primary-color: blue +``` + +The example above defined two themes named `happy` and `sad`. For each theme you can set values for CSS variables. For a partial list of variables used by the main frontend see [ha-style.html](https://github.com/home-assistant/home-assistant-polymer/blob/master/src/resources/ha-style.html). + +There are 2 themes-related services: + + - `frontend.reload_themes`: reloads theme configuration from your `configuration.yaml` file. + - `frontend.set_theme(name)`: sets backend-preferred theme name. + +Example in automation: + +Set a theme at the startup of Home Assistant: + +```yaml +automation: + - alias: 'Set theme at startup' + initial_state: 'on' + trigger: + - platform: homeassistant + event: start + action: + service: frontend.set_theme + data: + name: happy +``` + +To enable "night mode": + +```yaml +automation: + - alias: 'Set dark theme for the night' + initial_state: True + trigger: + - platform: time + at: '21:00' + action: + - service: frontend.set_theme + data: + name: darkred +``` + +### {% linkable_title Manual Theme Selection %} + +When themes are enabled in the `configuration.yaml` file, a new option will show up in the Configuration panel under `configuration.yaml` called "Set a theme." You can then choose any installed theme from the dropdown list and it will be applied immediately. + + +## {% linkable_title Loading extra HTML %} + +Starting with version 0.53 you can specify extra HTML files to load. + +Example: + +```yaml +# Example configuration.yaml entry +frontend: + extra_html_url: + - https://example.com/file1.html + - /file2.html +``` + +Those will be loaded via `` on any page (states and panels) diff --git a/source/_components/gc100.markdown b/source/_components/gc100.markdown new file mode 100644 index 00000000000..063dddcab09 --- /dev/null +++ b/source/_components/gc100.markdown @@ -0,0 +1,31 @@ +--- +layout: page +title: "gc100" +description: "Instructions on how to integrate gc100 with Home Assistant." +date: 2017-10-26 17:20 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Hub +ha_release: 0.57 +--- + +The Global Caché [GC-100](https://www.globalcache.com/products/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. + +Currently, only relays and ports configured to be digital inputs are supported in Home Assistant. For IR support, please use the iTach remote platform (https://home-assistant.io/components/remote.itach/), but note that it will likely not function concurrently on the same GC100 due to limitations in the TCP socket server implementation used by Global Caché. + +To enable this device, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +gc100: + host: 192.168.1.114 + port: 4998 +``` + +Configuration variables: + +- **host** (*Required*): The hostname/IP address of your GC100 device. +- **port** (*Optional*): The port on which the GC100 is listening. diff --git a/source/_components/google_assistant.markdown b/source/_components/google_assistant.markdown new file mode 100644 index 00000000000..23c1ce73397 --- /dev/null +++ b/source/_components/google_assistant.markdown @@ -0,0 +1,125 @@ +--- +layout: page +title: "Google Assistant" +description: "Setup for Google Assistant integration" +date: 2017-10-17 12:30 +sidebar: true +comments: false +sharing: true +footer: true +logo: google-assistant.png +ha_category: Voice +featured: true +ha_release: 0.56 +--- + +# Google Assistant Docs +The Google Assistant component requires a bit more setup than most due to the way Google requires Assistant Apps to be set up. + ++To use Google Assistant your Home Assistant configuration has to be externally accessible, with a hostname and SSL certificate. If you haven't already configured that you should do so before continuing. +
+ +### {% linkable_title Configuration %} + +```yaml +# Example configuration.yaml entry +google_assistant: + project_id: someproject-2d0b8 + client_id: [long URL safe random string] + access_token: [a different long URL safe random string] + exposed_domains: + - switch + - light + - group +``` + +*Note:* It's very important that you use very long strings for `client_id` and `access_token`. Those are essentially the credentials to your Home Assistant instance. You can generate them with the following command: + +`cat /dev/urandom|fold -w 120|head -n 1|base64 -w 0|tr -dc '0-9A-Za-z'|cut -c -80` + +*Configuration Variables:* +* *expose_by_default* (Optional): Expose devices in all supported domains by default. +* *project_id* (Required): Project ID from the Google Developer console (looks like `words-2ab12`) +* *client_id* (Required): A long random URL safe string (no spaces or special characters) that will be used for Implicit OAuth. +* *access_token* (Required): Another different long random URL safe string. +* *exposed_domains* (Optional): An array of Home Assistant domains to expose to Google Assistant. Options include: + - `switch` + - `light` + - `cover` + - `media_player` + - `group` + - `fan` + - `scene` + - `script` + +You can also customize your devices similar to other components by adding keys to entities: + +```yaml +homeassistant: + customize: + master_bedroom_light: + google_assistant: true + google_assistant_name: bedroom light + bedroom_blinds: + aliases: + - bedroom shades + - bedroom covers + hallway_ceiling_switch: + google_assistant: true + google_assistant_type: light +``` + +*Entity Customization Keys:* +* *google_assistant*: True exposes entity, false will hide it +* *google_assistant_name*: Can be used to override the primary name of an entity. By default the `friendly_name` of an entity is used. +* *google_assistant_type*: Can be used to override the domain/type of an entity. For example a switch can be treated as a light +* *aliases*: Provides "nicknames" to Google Assistant. These function as alternate names for an entity that Assistant will understand when spoken. + +### {% linkable_title Setup %} + +1. Install the [gactions CLI](https://developers.google.com/actions/tools/gactions-cli) (you'll use this later) - you can download this anywhere, just remember where you put it for later (and don't forget to run `chmod +x gactions`) +2. Create a new file named `project.json` (in the same directory you downloaded `gactions` to) and replace the `[YOUR HOME ASSISTANT URL]` below with the URL you use to access Home Assistant. + Note: This must be an HTTPS URL to work. + +```json +{ + "actions": [{ + "name": "actions.devices", + "deviceControl": { + }, + "fulfillment": { + "conversationName": "automation" + } + }], + "conversations": { + "automation" : + { + "name": "automation", + "url": "https://[YOUR HOME ASSISTANT URL]/api/google_assistant" + } + } +} +``` + +3. Create a new project in the [developer console](https://console.actions.google.com/). + 1. Add/Import project + 2. Go to Build under the Actions SDK box + 3. Copy the command that looks like: + `gactions update --action_package PACKAGE_NAME --project doctest-2d0b8` +4. Replace `PACKAGE_NAME` with `project.json` and run that command from the same directory you saved `project.json` in (you'll need to put `./` before `gactions` so that it reads `./gactions`). It should output a URL like `https://console.actions.google.com/project/doctest-2d0b8/overview` - go there. +5. You'll need to fill out most of the information on that page, but none of it really matters since you won't be addressing the App directly, only through the Smart Home functionality built into Google Assistant. +6. The final item on that page `Account linking` is required for your app to interact with Home Assistant. + 1. Grant type: `Implicit` + 2. Client ID: Should be the same as `client_id` from your hass config above + 3. Authorization URL (replace with your actual URL): `https://[YOUR HOME ASSISTANT URL]/api/google_assistant/auth` + 4. Configure your client. Add scopes for `email` and `name` + 5. Testing instructions: doesn't matter since you won't submit this app +7. Back on the main app draft page. Click `Test Draft`. That will take you to the simulator (which won't work) so just close that window. +8. Open the Google Assistant app and go into `Settings > Home Control` +9. Click the `+` sign, and near the bottom, you should have `[test] your app name`. Selecting that should lead to you the screen where you can set rooms for your devices or nicknames for your devices. +10. If you want to allow other houshold users to control the devices: + 1. Go to the developer console using address from point 4. + 2. Under the gear icon, click `Permissions` + 3. Click `Add`, type the new user's e-mail address and choose `Project -> Editor` role + 4. Have the new user go to [developer console](https://console.actions.google.com/) and repeat steps starting from point 7. diff --git a/source/_components/google_domains.markdown b/source/_components/google_domains.markdown new file mode 100644 index 00000000000..df42475a519 --- /dev/null +++ b/source/_components/google_domains.markdown @@ -0,0 +1,45 @@ +--- +layout: page +title: "Google Domains" +description: "Keep your computer registered with the Google Domains dynamic DNS." +date: 2017-10-23 12:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: google_domains.png +ha_category: Utility +ha_release: 0.57 +--- + +With the Google Domains component you can keep your Google Domains record up to date. + +To use the component in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +google_domains: + domain: subdomain.domain.com + username: YOUR_USERNAME + password: YOUR_PASSWORD +``` + +{% configuration %} + domain: + description: Your FQDN. + required: true + type: string + username: + description: The generated username for this DDNS record. + required: true + type: string + password: + description: The generated password for this DDNS record. + required: true + type: string + timeout: + description: Timeout (in seconds) for the API calls. + required: false + type: number + default: 10 +{% endconfiguration %} diff --git a/source/_components/group.markdown b/source/_components/group.markdown index 78005f8fb4c..5dd01ab44c5 100644 --- a/source/_components/group.markdown +++ b/source/_components/group.markdown @@ -58,8 +58,8 @@ Configuration variables: - **view** (*Optional*): If yes then the entry will be shown as a view (tab) at the top. - **name** (*Optional*): Name of the group. -- **icon** (*Optional*): If the group is a view, this icon will show at the top in the frontend instead of the name. If it's not a view, then the icon shows when this group is used in another group. -- **control** (*Optional*): If hidden then the group switch will be hidden. +- **icon** (*Optional*): If the group is a view, this icon will show at the top in the frontend instead of the name. If the group is a view and both name and icon have been specified, the icon will appear at the top of the frontend and the name will be displayed as the mouse-over text. If it's not a view, then the icon shows when this group is used in another group. +- **control** (*Optional*): Set value to `hidden`. If hidden then the group switch will be hidden. - **entities** (*Required*): array or comma delimited string, list of entities to group.
@@ -89,3 +89,38 @@ Notice in the example below that in order to refer to the group "Living Room", y
- group.living_room
- group.bedroom
```
+
+## {% linkable_title Default groups %}
+
+Some components automatically create special groups containing component entities. These groups are named like `group.all_...`, for example:
+- `group.all_switches`
+- `group.all_lights`
+- `group.all_devices`
+- `group.all_scripts`
+- `group.all_automations`
+
+You can see list of these groups in **State** page of the **Developer Tools**.
+
+Default groups appear in the HOME tab, if not overridden by user views and groups. Default groups are hidden by default, so you must [customize](/docs/configuration/customizing-devices/) them to be visible in your custom groups and views.
+
+```yaml
+# Example configuration.yaml to include default groups in custom view
+
+customize:
+ group.all_automations:
+ hidden: false
+ group.all_scripts:
+ hidden: false
+
+group:
+ automation_view:
+ name: Automation
+ view: yes
+ entities:
+ - group.all_automations
+ - group.all_scripts
+```
+
+## {% linkable_title Group behaviour %}
+
+When any member of a group is `on` then the group will also be `on`. Similarly with a device tracker, when any member of the group is `home` then the group is `home`.
diff --git a/source/_components/ha.markdown b/source/_components/ha.markdown
deleted file mode 100644
index a3ae92104a6..00000000000
--- a/source/_components/ha.markdown
+++ /dev/null
@@ -1,19 +0,0 @@
----
-layout: page
-title: "Home Assistant 0.47"
-description: ""
-date: 2016-12-16 17:00
-sidebar: true
-comments: false
-sharing: true
-footer: true
-logo: home-assistant.png
-ha_category: Other
-ha_release: 0.47
----
-
-Details about the latest release can always be found at:
-
-- [Release blog posts](https://home-assistant.io/blog/categories/release-notes/)
-- [GitHub releases](https://github.com/home-assistant/home-assistant/releases)
-- [Python Package Index](https://pypi.python.org/pypi/homeassistant/)
diff --git a/source/_components/hdmi_cec.markdown b/source/_components/hdmi_cec.markdown
index 18b4f7b12d9..43c95c45ada 100644
--- a/source/_components/hdmi_cec.markdown
+++ b/source/_components/hdmi_cec.markdown
@@ -13,7 +13,7 @@ ha_release: 0.23
ha_iot_class: "Local Push"
---
-The HDMI CEC component provides services that allow selecting the active device, powering on all devices, setting all devices to standby and creates switch entites for HDMI devices. Devices are defined in the configuration file by associating HDMI port number and a device name. Connected devices that provide further HDMI ports, such as Soundbars and AVRs are also supported. Devices are listed from the perspective of the CEC-enabled Home Assistant device. Any connected device can be listed, regardless of whether it supports CEC. Ideally the HDMI port number on your device will map correctly the CEC physical address. If it does not, use `cec-client` (part of the `libcec` package) to listen to traffic on the CEC bus and discover the correct numbers.
+The `hdmi_cec` component provides services that allow selecting the active device, powering on all devices, setting all devices to standby and creates switch entities for HDMI devices. Devices are defined in the configuration file by associating HDMI port number and a device name. Connected devices that provide further HDMI ports, such as sound-bars and AVRs are also supported. Devices are listed from the perspective of the CEC-enabled Home Assistant device. Any connected device can be listed, regardless of whether it supports CEC. Ideally the HDMI port number on your device will map correctly the CEC physical address. If it does not, use `cec-client` (part of the `libcec` package) to listen to traffic on the CEC bus and discover the correct numbers.
## {% linkable_title CEC Setup %}
@@ -25,6 +25,10 @@ The computer running Home Assistant must support CEC, and of course be connected
[libcec](https://github.com/Pulse-Eight/libcec) must be installed for this component to work. Follow the installation instructions for your environment, provided at the link. `libcec` installs Python 3 bindings by default as a system Python module. If you are running Home Assistant in a [Python virtual environment](/getting-started/installation-virtualenv/), make sure it can access the system module, by either symlinking it or using the `--system-site-packages` flag.
+
+If you are using [Hass.io](/hassio/) then just move forward to the configuration as all requirements are already fulfilled. +
+ #### {% linkable_title Symlinking into virtual environment %} Create a symlink to the `cec` installation. Keep in mind different installation methods will result in different locations of cec. @@ -231,7 +235,7 @@ Toggle mute: {"mute": ""} ``` -value is ignores. +value is ignored. ## {% linkable_title Useful References %} diff --git a/source/_components/history_graph.markdown b/source/_components/history_graph.markdown new file mode 100644 index 00000000000..f38cd482907 --- /dev/null +++ b/source/_components/history_graph.markdown @@ -0,0 +1,62 @@ +--- +layout: page +title: "History Graph" +description: "Instructions for setting up History Graph." +date: 2017-09-20 15:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: History +logo: home-assistant.png +ha_release: "0.55" +--- +
+
+
-It's HIGHLY recommended that you set the `api_password`, especially if you are planning to expose your installation to the internet. +It is HIGHLY recommended that you set the `api_password`, especially if you are planning to expose your installation to the internet.
```yaml @@ -26,17 +26,16 @@ http: Configuration variables: - **api_password** (*Optional*): Protect Home Assistant with a password. -- **server_host** (*Optional*): Only listen to incoming requests on specific ip/host (default: accept all) +- **server_host** (*Optional*): Only listen to incoming requests on specific IP/host (default: accept all) - **server_port** (*Optional*): Let you set a port to use. Defaults to 8123. -- **base_url** (*Optional*): The URL that Home Assistant is available on the internet. For example: `hass-example.duckdns.org:8123`. Defaults to local IP address. The IOS app finds local installations, if you have an outside URL use this so that you can auto fill when discovered in the app. -- **development** (*Optional*): Disable caching and load unvulcanized assets. Useful for Frontend development. +- **base_url** (*Optional*): The URL that Home Assistant is available on the internet. For example: `hass-example.duckdns.org:8123`. Defaults to the local IP address. The iOS app finds local installations, if you have an outside URL use this so that you can auto-fill when discovered in the app. - **ssl_certificate** (*Optional*): Path to your TLS/SSL certificate to serve Home Assistant over a secure connection. - **ssl_key** (*Optional*): Path to your TLS/SSL key to serve Home Assistant over a secure connection. - **cors_allowed_origins** (*Optional*): A list of origin domain names to allow [CORS](https://en.wikipedia.org/wiki/Cross-origin_resource_sharing) requests from. Enabling this will set the `Access-Control-Allow-Origin` header to the Origin header if it is found in the list, and the `Access-Control-Allow-Headers` header to `Origin, Accept, X-Requested-With, Content-type, X-HA-access`. You must provide the exact Origin, i.e. `https://home-assistant.io` will allow requests from `https://home-assistant.io` but __not__ `http://home-assistant.io`. - **use_x_forwarded_for** (*Optional*): Enable parsing of the `X-Forwarded-For` header, passing on the client's correct IP address in proxied setups. You should only enable this in a trustworthy network environment, as clients passing that header could easily spoof their source IP address. Defaults to False. -- **trusted_networks** (*Optional*): List of trusted networks, consisting of IP addresses or networks, that are allowed to bypass password protection when accessing Home Assistant. It should be noted that if you use a reverse proxy, all requests to home assistant, regardless of source, will arrive from the reverse proxy IP address. Therefore in a reverse proxy scenario this option should be used with extreme care. +- **trusted_networks** (*Optional*): List of trusted networks, consisting of IP addresses or networks, that are allowed to bypass password protection when accessing Home Assistant. It should be noted that if you use a reverse proxy, all requests to Home Assistant, regardless of source, will arrive from the reverse proxy IP address. Therefore in a reverse proxy scenario, this option should be used with extreme care. - **ip_ban_enabled** (*Optional*): Flag indicating whether additional IP filtering is enabled. Defaults to False. -- **login_attempts_threshold** (*Optional*): Number of failed login attemt from single IP after which it will be automatically banned if `ip_ban_enabled` is True. Defaults to -1, meaning that no new automatic bans will be added. +- **login_attempts_threshold** (*Optional*): Number of failed login attempt from single IP after which it will be automatically banned if `ip_ban_enabled` is True. Defaults to -1, meaning that no new automatic bans will be added. The sample below shows a configuration entry with possible values: @@ -62,6 +61,8 @@ http: The [Set up encryption using Let's Encrypt](/blog/2015/12/13/setup-encryption-using-lets-encrypt/) blog post gives you details about the encryption of your traffic using free certificates from [Let's Encrypt](https://letsencrypt.org/). +Or use a self signed certificate following the instructions here [Self-signed certificate for SSL/TLS](/docs/ecosystem/certificates/tls_self_signed_certificate/) + On top of the `http` component is a [REST API](/developers/rest_api/) and a [Python API](/developers/python_api/) available. There is also support for [Server-sent events](/developers/server_sent_events/). 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. @@ -72,7 +73,7 @@ All [requests](/developers/rest_api/#post-apistatesltentity_id) need to be sent If you want to use Home Assistant to host or serve static files then create a directory called `www` under the `.homeassistant` configuration path. The static files in `.homeassistant/www/` can be accessed by the following URL `http://your.domain:8123/local/`. -If you want to apply additional IP filtering, and automatically ban bruteforce attempts, set `ip_ban_enabled` to `True` and select number of attempts. After first ban file `ip_bans.yaml` will be created in the root configuration folder. It will have IP address and time in UTC when it was added: +If you want to apply additional IP filtering, and automatically ban brute force attempts, set `ip_ban_enabled` to `True` and the maximum number of attempts. After the first ban, an `ip_bans.yaml` file will be created in the root configuration folder. It will have the banned IP address and time in UTC when it was added: ```yaml 127.0.0.1: diff --git a/source/_components/ifttt.manything.markdown b/source/_components/ifttt.manything.markdown index 5113b8bbcb7..7288afb90b9 100644 --- a/source/_components/ifttt.manything.markdown +++ b/source/_components/ifttt.manything.markdown @@ -11,7 +11,7 @@ logo: manything.png ha_category: Camera --- -[Manything](https://manything.com) is a smart app that turns your Android device, iPhone, iPod, or iPad into a wifi camera for monitoring your home, your pets, anything! Comes with live streaming, motion activated alerts, cloud video recording, and more. +[Manything](https://manything.com) is a smart app that turns your Android device, iPhone, iPod, or iPad into a WiFi camera for monitoring your home, your pets, anything! Comes with live streaming, motion activated alerts, cloud video recording, and more. To get manything support, HA will use IFTTT's [Maker Channel](https://ifttt.com/maker) and the [ManyThing Channel](https://ifttt.com/manything). Use the [IFTTT Setup instructions](/components/ifttt/) to activate the IFTTT Platform. diff --git a/source/_components/ifttt.markdown b/source/_components/ifttt.markdown index 8aa8aa16b57..fc330b5f799 100644 --- a/source/_components/ifttt.markdown +++ b/source/_components/ifttt.markdown @@ -13,15 +13,15 @@ featured: true ha_iot_class: "Cloud Push" --- -[IFTTT](https://ifttt.com) is a web service that allows users to create chains of simple conditional statements, so called "Applets". With the IFTTT component you can trigger applets through the **"Maker"** channel. See the [announcement blog post](/blog/2015/09/13/home-assistant-meets-ifttt/) for examples how to use it. +[IFTTT](https://ifttt.com) is a web service that allows users to create chains of simple conditional statements, so called "Applets". With the IFTTT component you can trigger applets through the **"Webhooks"** service (which was previously the **"Maker"** channel). See the [announcement blog post](/blog/2015/09/13/home-assistant-meets-ifttt/) for examples how to use it. ```yaml # Example configuration.yaml entry ifttt: - key: xxxxx-x-xxxxxxxxxxxxx + key: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx ``` -`key` is your API key which can be obtained by viewing the **Settings** of the [Maker Channel](https://ifttt.com/services/maker_webhooks/settings). It's the last part of the URL (e.g. https://maker.ifttt.com/use/MYAPIKEY) you will find under **Settings** > **Account Info**. +`key` is your API key which can be obtained by viewing the **Settings** of the [Webhooks applet](https://ifttt.com/services/maker_webhooks/settings). It's the last part of the URL (e.g. https://maker.ifttt.com/use/MYAPIKEY) you will find under **My Applets** > **Webhooks** > **Settings**.@@ -37,7 +37,7 @@ After restarting the server, be sure to watch the console for any logging errors ### {% linkable_title Testing your trigger %} -You can use the **Developer tools** to test your [Maker Channel](https://ifttt.com/maker) trigger. To do this, open the Home Assistant frontend, open the sidebar, click on the first icon in the developer tools. This should get you to the **Call Service** screen. Fill in the following values: +You can use the **Developer tools** to test your [Webhooks](https://ifttt.com/maker_webhooks) trigger. To do this, open the Home Assistant frontend, open the sidebar, click on the first icon in the developer tools. This should get you to the **Call Service** screen. Fill in the following values: Field | Value ----- | ----- @@ -52,11 +52,11 @@ When your screen looks like this, click the 'call service' button. ### {% linkable_title Setting up a recipe %} -Press the *New applet* button and search for *Maker* . +Press the *New applet* button and search for *Webhooks*.
-Choose "Maker" as service.
+Choose "Webhooks" as service.
diff --git a/source/_components/image_processing.dlib_face_detect.markdown b/source/_components/image_processing.dlib_face_detect.markdown index e6a9fc48981..6673146847d 100644 --- a/source/_components/image_processing.dlib_face_detect.markdown +++ b/source/_components/image_processing.dlib_face_detect.markdown @@ -13,9 +13,9 @@ featured: false ha_release: 0.44 --- -The `dlib_face_detect` image processing platform allows you to use the [Dlib](http://www.dlib.net/) through Home Assistant. This platform enables you do detect face on camera and fire a event with attributes. +The `dlib_face_detect` image processing platform allows you to use the [Dlib](http://www.dlib.net/) through Home Assistant. This platform enables face detection from cameras, and can fire events with attributes. -For using the result inside an automation rule, take a look at the [component](/components/image_processing/) page. +This can be used to trigger an automation rule. Further info is on the [component](/components/image_processing/) page. ### {% linkable_title Configuration Home Assistant %} diff --git a/source/_components/image_processing.dlib_face_identify.markdown b/source/_components/image_processing.dlib_face_identify.markdown index f7f1ab1e75b..1e47bf13e40 100644 --- a/source/_components/image_processing.dlib_face_identify.markdown +++ b/source/_components/image_processing.dlib_face_identify.markdown @@ -13,7 +13,7 @@ featured: false ha_release: 0.44 --- -The `dlib_face_identify` image processing platform allows you to use the [Dlib](http://www.dlib.net/) through Home Assistant. This platform allow you do identify persons on camera and fire a event with identify persons. +The `dlib_face_identify` image processing platform allows you to use the [Dlib](http://www.dlib.net/) through Home Assistant. This platform allow you to identify persons on camera and fire a event with identify persons. For using the result inside an automation rule, take a look at the [component](/components/image_processing/) page. diff --git a/source/_components/image_processing.markdown b/source/_components/image_processing.markdown index 41f36134250..e74ef6ec5c8 100644 --- a/source/_components/image_processing.markdown +++ b/source/_components/image_processing.markdown @@ -15,7 +15,7 @@ Image processing enables Home Assistant to process images from [cameras](/compon For interval control, use `scan_interval` in platform.
-If you are running Home Assistant over SSL or from within a container, you will have to setup a base url inside the [http component](/components/http/). +If you are running Home Assistant over SSL or from within a container, you will have to setup a base URL (`base_url`) inside the [http component](/components/http/).
## {% linkable_title ALPR %} diff --git a/source/_components/image_processing.openalpr_cloud.markdown b/source/_components/image_processing.openalpr_cloud.markdown index 7049a3e0ed9..3a13097c872 100644 --- a/source/_components/image_processing.openalpr_cloud.markdown +++ b/source/_components/image_processing.openalpr_cloud.markdown @@ -28,6 +28,7 @@ image_processing: source: - entity_id: camera.garage ``` + Configuration variables: - **region** (*Required*): Country or region. List of supported [values](https://github.com/openalpr/openalpr/tree/master/runtime_data/config). diff --git a/source/_components/image_processing.openalpr_local.markdown b/source/_components/image_processing.openalpr_local.markdown index 76e00486710..593a9212614 100644 --- a/source/_components/image_processing.openalpr_local.markdown +++ b/source/_components/image_processing.openalpr_local.markdown @@ -22,7 +22,7 @@ For using inside automation look on [component](/components/image_processing) pa If you want process all data locally, you need version 2.3.1 or higher of the `alpr` commandline tool. -If you don't find binaries for your distribution you can compile from source. Documention of how to build OpenALPR is found [here](https://github.com/openalpr/openalpr/wiki). +If you don't find binaries for your distribution you can compile from source. Documentation of how to build OpenALPR is found [here](https://github.com/openalpr/openalpr/wiki). On a Debian system you can use this `cmake` command to build only the command line tool: diff --git a/source/_components/image_processing.opencv.markdown b/source/_components/image_processing.opencv.markdown index de29cbee745..db6bfd2d5cb 100644 --- a/source/_components/image_processing.opencv.markdown +++ b/source/_components/image_processing.opencv.markdown @@ -15,9 +15,7 @@ ha_release: 0.47 [OpenCV](http://www.opencv.org) is an open source computer vision image and video processing library. -Some pre-defined classifiers can be found here: https://github.com/opencv/opencv/tree/master/data - -### {% linkable_title Configuration %} +Some pre-defined classifiers can be found [here](https://github.com/opencv/opencv/tree/master/data). To setup OpenCV with Home Assistant, add the following section to your `configuration.yaml` file: @@ -36,7 +34,7 @@ image_processing: - **source** array (*Required*): List of image sources. - **entity_id** (*Required*): A camera entity id to get picture from. - **name** (*Optional*): This parameter allows you to override the name of your `image_processing` entity. -- **classifier** (*Optional*): Dictionary of name to path to the classifier xml file. If this field is not provided, a face classifier will be downloaded from OpenCV's github repo. +- **classifier** (*Optional*): Dictionary of name to path to the classifier xml file. If this field is not provided, a face classifier will be downloaded from OpenCV's Github repo. **classifier** may also be defined as a dictionary of names to classifier configurations: @@ -51,3 +49,5 @@ image_processing: - **file** (*Required*): The path to the classifier xml file. - **scale** (*Optional*): The scale to perform when processing, this is a `float` value that must be greater than or equal to `1.0`, default is `1.1`. - **neighbors** (*Optional*): The minimum number of neighbors required for a match, default is `4`. The higher this number, the more picky the matching will be; lower the number, the more false positives you may experience. + +If you would like to see the regions that OpenCV has detected, add this OpenCV camera to your config's `custom_components/camera` directory: [https://gist.github.com/Teagan42/bf4b941b34a79a3e184e149ff1efd82f](https://gist.github.com/Teagan42/bf4b941b34a79a3e184e149ff1efd82f) diff --git a/source/_components/image_processing.seven_segments.markdown b/source/_components/image_processing.seven_segments.markdown index e56eda3bdd5..db0ebf4f1b7 100644 --- a/source/_components/image_processing.seven_segments.markdown +++ b/source/_components/image_processing.seven_segments.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Seven segments display" -description: "Instructions how to use OCR for seven segemnts displays into Home Assistant." +description: "Instructions how to use OCR for seven segments displays into Home Assistant." date: 2017-05-18 08:00 sidebar: true comments: false @@ -15,17 +15,26 @@ og_image: /images/screenshots/ssocr.png ha_iot_class: "Local Polling" --- -The `seven_segments` image processing platform allows you to read physical seven segments displays through Home Assistant. [`ssocr`](https://www.unix-ag.uni-kl.de/~auerswal/ssocr/) is used to extract the value shown on the display which is observed by a [camera](/components/camera/). `ssocr` need to be available on your system. Check the installation instruction for Fedora below or use `$ sudo apt-get install ssocr` on a Debian-based system: +The `seven_segments` image processing platform allows you to read physical seven segments displays through Home Assistant. [`ssocr`](https://www.unix-ag.uni-kl.de/~auerswal/ssocr/) is used to extract the value shown on the display which is observed by a [camera](/components/camera/). + ++If you are using [Hass.io](/hassio/) then just move forward to the configuration as all requirements are already fulfilled. +
+ +`ssocr` needs to be available on your system. Check the installation instruction below: ```bash -$ sudo dnf -y install imlib2-devel +$ sudo dnf -y install imlib2-devel # Fedora +$ sudo apt install libimlib2-dev # Ubuntu +$ brew install imlib2 # macOS $ git clone https://github.com/auerswal/ssocr.git $ cd ssocr $ make -$ sudo make PREFIX=/usr install +$ sudo make PREFIX=/usr install # On most systems +$ make deb # (Optional) This allows you to make a deb so that you apt is aware of ssocr ``` -To enable the OCR of a seven segement display in your installation, add the following to your `configuration.yaml` file: +To enable the OCR of a seven segment display in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -89,7 +98,7 @@ sensor: - platform: template sensors: power_meter: - value_template: '{{ states.image_processing.sevensegement_ocr_seven_segments.state }}' + value_template: '{{ states.image_processing.sevensegment_ocr_seven_segments.state }}' friendly_name: 'Ampere' unit_of_measurement: 'A' ``` diff --git a/source/_components/influxdb.markdown b/source/_components/influxdb.markdown index c046bf0edbc..60bd6cac432 100644 --- a/source/_components/influxdb.markdown +++ b/source/_components/influxdb.markdown @@ -36,6 +36,8 @@ Configuration variables: - **verify_ssl** (*Optional*): Verify SSL certificate for https request. Defaults to false. - **default_measurement** (*Optional*): Measurement name to use when an entity doesn't have a unit. Defaults to entity id. - **override_measurement** (*Optional*): Measurement name to use instead of unit or default measurement. This will store all data points in a single measurement. +- **component_config**, **component_config_domain**, **component_config_glob** (*Optional*): These attributes contains component-specific override values. See [Customizing devices and services](https://home-assistant.io/getting-started/customizing-devices/) for format. + - **override_measurement** (*Optional*): Measurement name to use for this component, takes precedence over the global 'override_measurement' and component-specific 'unit_of_measurement' attribute. - **exclude** (*Optional*): Configure which components should be excluded from recording to InfluxDB. - **entities** (*Optional*): The list of entity ids to be excluded from recording to InfluxDB. - **domains** (*Optional*): The list of domains to be excluded from recording to InfluxDB. @@ -43,6 +45,7 @@ Configuration variables: - **entities** (*Optional*): The list of entity ids to be included from recordings to InfluxDB. - **domains** (*Optional*): The list of domains to be included from recordings to InfluxDB. - **tags** (*Optional*): Tags to mark the data. +- **tags_attributes** (*Optional*): The list of attribute names which should be reported as tags and not fields to InfluxDB. For example, if set to `friendly_name`, it will be possible to group by entities' friendly names as well, in addition to their ids. ## {% linkable_title Data migration %} @@ -106,10 +109,10 @@ optional arguments: If you want to import all the recorded data from your recorder database you can use the data import script. It will read all your state_change events from the database and add them as data-points to the InfluxDB. -You can specify the source database either by pointing the `--config` option to the config directory which includes the default sqlite database or by giving a sqlalchemy connection URI with `--uri`. +You can specify the source database either by pointing the `--config` option to the config directory which includes the default SQLite database or by giving a sqlalchemy connection URI with `--uri`. The writing to InfluxDB is done in batches that can be changed with `--step`. -You can control, which data is imported by using the commandline options `--exclude_entities` and `--exclude_domains`. +You can control, which data is imported by using the command line options `--exclude_entities` and `--exclude_domains`. Both get a comma separated list of either entity-ids or domain names that are excluded from the import. To test what gets imported you can use the `--simulate` option, which disables the actual write to the InfluxDB instance. diff --git a/source/_components/input_boolean.markdown b/source/_components/input_boolean.markdown index fa05489a7fa..61e82ff846c 100644 --- a/source/_components/input_boolean.markdown +++ b/source/_components/input_boolean.markdown @@ -13,6 +13,8 @@ ha_category: Automation The `input_boolean` component allows the user to define boolean values that can be controlled via the frontend and can be used within conditions of automation. This can for example be used to disable or enable certain automations. +To enable input booleans in your installation, add the following lines to your `configuration.yaml`: + ```yaml # Example configuration.yaml entry input_boolean: @@ -25,9 +27,9 @@ input_boolean: Configuration variables: - **[alias]** (*Required*): Alias for the input. -- **name** (*Optional*): Friendly name of the input. -- **initial** (*Optional*): Initial value when Home Assistant starts. -- **icon** (*Optional*): Icon for entry. + - **name** (*Optional*): Friendly name of the input. + - **initial** (*Optional*): Initial value when Home Assistant starts. Defaults to `False`. + - **icon** (*Optional*): Icon for entry. Pick an icon that you can find on [materialdesignicons.com](https://materialdesignicons.com/) to use for your input and prefix the name with `mdi:`. For example `mdi:car`, `mdi:ambulance`, or `mdi:motorbike`. diff --git a/source/_components/input_datetime.markdown b/source/_components/input_datetime.markdown new file mode 100644 index 00000000000..f9351f09848 --- /dev/null +++ b/source/_components/input_datetime.markdown @@ -0,0 +1,50 @@ +--- +layout: page +title: "Input Datetime" +description: "Instructions how to integrate the Input Datetime component into Home Assistant." +date: 2017-09-14 16:01 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: Automation +ha_release: 0.55 +--- + +The `input_datetime` component allows the user to define date and time values that can be controlled via the frontend and can be used within automations and templates. + +To add three datetime inputs to your installation, one with both date and time, and one with date or time each, add the following lines to your `configuration.yaml`: + +```yaml +# Example configuration.yaml entry +input_datetime: + both_date_and_time: + name: Input with both date and time + has_date: true + has_time: true + only_date: + name: Input with only date + has_date: true + has_time: false + only_time: + name: Input with only time + has_date: false + has_time: true +``` + +Configuration variables: + +- **[alias]** (*Required*): Alias for the datetime input. Multiple entries are allowed. + - **name** (*Optional*): Friendly name of the datetime input. + - **has_time** (*Optional*): Set to `true` if this input should have time. Defaults to `false`. + - **has_date** (*Optional*): Set to `true` if this input should have a date. Defaults to `false`. + - **initial** (*Optional*): Set the initial value of this input. Defaults to '1970-01-01 00:00'. + +A datetime input entity's state exports several attributes that can be useful in automations and templates: + +- **has_time**: `true` if this entity has time. +- **has_date**: `true` if this entity has a date. +- **year**, **month**, **day** (Only available if *has_date* is true): The year, month and day of the date. +- **hour**, **minute**, **second** (Only available if *has_time* is true): The hour, minute and second of the time. +- **timestamp**: A timestamp representing the time held in the input. If *has_date* is true, this is the UNIX timestamp of the date / time held by the input. Otherwise (i.e., if only *has_time* is true) the number of seconds since midnight representing the time held by the input. diff --git a/source/_components/input_slider.markdown b/source/_components/input_number.markdown similarity index 52% rename from source/_components/input_slider.markdown rename to source/_components/input_number.markdown index beb458a5b25..e043b924696 100644 --- a/source/_components/input_slider.markdown +++ b/source/_components/input_number.markdown @@ -1,49 +1,66 @@ --- layout: page -title: "Input Slider" -description: "Instructions how to integrate the Input Slider component into Home Assistant." -date: 2016-03-15 06:00 +title: "Input Number" +description: "Instructions how to integrate the Input Number component into Home Assistant." +date: 2017-09-19 03:30 sidebar: true comments: false sharing: true footer: true logo: home-assistant.png ha_category: Automation -ha_release: 0.16 +ha_release: 0.55 +redirect_from: /components/input_slider/ --- -The `input_slider` component allows the user to define values that can be controlled via the frontend and can be used within conditions of automation. Changes to the slider generate state events. These state events can be utilized as `automation` triggers as well. ++Before version 0.55 this component was known as `input_slider` and did not have the `mode` configuration option. +
+ +The `input_number` component 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. + +To enable this input number in your installation, add the following lines to your `configuration.yaml`: ```yaml # Example configuration.yaml entry -input_slider: +input_number: slider1: - name: Slider 1 + name: Slider initial: 30 min: -20 max: 35 step: 1 + box1: + name: Numeric Input Box + initial: 30 + min: -20 + max: 35 + step: 1 + mode: box ``` Configuration variables: -- **[alias]** (*Required*): Alias for the slider input. -- **min** (*Required*): Minimum value for the slider. -- **max** (*Required*): Maximum value for the slider. -- **name** (*Optional*): Friendly name of the slider input. -- **initial** (*Optional*): Initial value when Home Assistant starts. -- **step** (*Optional*): Step value for the slider. +- **[alias]** (*Required*): Alias for the input. Multiple entries are allowed. + - **min** (*Required*): Minimum value. + - **max** (*Required*): Maximum value. + - **name** (*Optional*): Friendly name of the input. + - **initial** (*Optional*): Initial value when Home Assistant starts. Defaults to 0. + - **step** (*Optional*): Step value for the slider. Defaults to 1. + - **mode** (*Optional*): Can specify `box`, or `slider`. Defaults to `slider`. + - **unit_of_measurement** (*Optional*): Unit of measurement in which the value of the slider is expressed in. + - **icon** (*Optional*): Icon to display in front of the box/slider in the frontend. Refer to the [Customizing devices](https://home-assistant.io/docs/configuration/customizing-devices/#possible-values) page for possible values. ## {% linkable_title Automation Examples %} -Here's an example of `input_slider` being used as a trigger in an automation. +Here's an example of `input_number` being used as a trigger in an automation. ```yaml {% raw %} -# Example configuration.yaml entry using 'input_slider' as a trigger in an automation +# Example configuration.yaml entry using 'input_number' as a trigger in an automation -# Define input_slider -input_slider: +# Define input_number +input_number: bedroom_brightness: name: Brightness initial: 254 @@ -56,7 +73,7 @@ automation: - alias: Bedroom Light - Adjust Brightness trigger: platform: state - entity_id: input_slider.bedroom_brightness + entity_id: input_number.bedroom_brightness action: - service: light.turn_on # Note the use of 'data_template:' below rather than the normal 'data:' if you weren't using an input variable @@ -66,11 +83,11 @@ automation: {% endraw %} ``` -Another code example using `input_slider`, this time being used in an action in an automation. +Another code example using `input_number`, this time being used in an action in an automation. ```yaml {% raw %} -# Example configuration.yaml entry using 'input_slider' in an action in an automation +# Example configuration.yaml entry using 'input_number' in an action in an automation # Define 'input_select' input_select: @@ -85,8 +102,8 @@ input_select: - 'OFF' initial: 'Select' -# Define input_slider -input_slider: +# Define input_number +input_number: bedroom_brightness: name: Brightness initial: 254 @@ -106,19 +123,19 @@ automation: # Again, note the use of 'data_template:' rather than the normal 'data:' if you weren't using an input variable. data_template: entity_id: light.bedroom - brightness: '{{ states.input_slider.bedroom_brightness.state | int }}' + brightness: '{{ states.input_number.bedroom_brightness.state | int }}' {% endraw %} ``` -Example of `input_slider` being used in a bidirectional manner, both being set by and controlled by an MQTT action in an automation. +Example of `input_number` being used in a bidirectional manner, both being set by and controlled by an MQTT action in an automation. ```yaml {% raw %} -# Example configuration.yaml entry using 'input_slider' in an action in an automation +# Example configuration.yaml entry using 'input_number' in an action in an automation -# Define input_slider -input_slider: +# Define input_number +input_number: target_temp: name: Target Heater Temperature Slider min: 1 @@ -134,11 +151,11 @@ input_slider: trigger: platform: mqtt topic: "setTemperature" - # entity_id: input_slider.target_temp + # entity_id: input_number.target_temp action: - service: input_slider.select_value + service: input_number.set_value data_template: - entity_id: input_slider.target_temp + entity_id: input_number.target_temp value: '{{ trigger.payload}}' # This automation script runs when the target temperature slider is moved. @@ -146,12 +163,12 @@ input_slider: - alias: Temp slider moved trigger: platform: state - entity_id: input_slider.target_temp + entity_id: input_number.target_temp action: service: mqtt.publish data_template: topic: "setTemperature" retain: true - payload: '{{ states.input_slider.target_temp.state | int }}' + payload: '{{ states.input_number.target_temp.state | int }}' {% endraw %} ``` diff --git a/source/_components/input_select.markdown b/source/_components/input_select.markdown index 45dbc19c0d8..e8cf94f94d1 100644 --- a/source/_components/input_select.markdown +++ b/source/_components/input_select.markdown @@ -14,7 +14,7 @@ ha_release: 0.13 The `input_select` component allows the user to define a list of values that can be selected via the frontend and can be used within conditions of automation. When a user selects a new item, a state transition event is generated. This state event can be used in an `automation` trigger. -To enable this platform, add the following lines to your `configuration.yaml`: +To enable this platform in your installation, add the following lines to your `configuration.yaml`: ```yaml # Example configuration.yaml entry @@ -35,14 +35,18 @@ input_select: Configuration variables: -- **[alias]** (*Required*): Alias for the input. -- **name** (*Optional*): Friendly name of the input. -- **options** array: List of options to choose from -- **initial** (*Optional*): Initial value when Home Assistant starts. -- **icon** (*Optional*): Icon for entry. +- **[alias]** array (*Required*): Alias for the input. Multiple entries are allowed.. + - **name** (*Optional*): Friendly name of the input. + - **options** array (*Required*): List of options to choose from. + - **initial** (*Optional*): Initial value when Home Assistant starts. + - **icon** (*Optional*): Icon for entry. Pick an icon that you can find on [materialdesignicons.com](https://materialdesignicons.com/) to use for your input and prefix the name with `mdi:`. For example `mdi:car`, `mdi:ambulance`, or `mdi:motorbike`. ++Because YAML defines [booleans](http://yaml.org/type/bool.html) as equivalent, any variations of 'On', 'Yes', 'Y', 'Off', 'No', or 'N' (regardless of case) used as option names will be replaced by True and False unless they are defined in quotation marks. +
+ ### {% linkable_title Services %} This components provide three services to modify the state of the `input_select`: @@ -67,6 +71,22 @@ automation: option: Paulus ``` +To dynamically set the `input_select` options you can call `input_select.set_options`. The following example can be used in an automation rule: + +```yaml +# Example configuration.yaml entry +automation: + - alias: example automation + trigger: + platform: event + event_type: MY_CUSTOM_EVENT + action: + - service: input_select.set_options + data: + entity_id: input_select.who_cooks + options: ["Item A", "Item B", "Item C"] +``` + ### {% linkable_title Scenes %} To specify a target option in a [Scene](/components/scene/) you have to specify the target as `option` attribute: diff --git a/source/_components/input_text.markdown b/source/_components/input_text.markdown new file mode 100644 index 00000000000..26ad4846a74 --- /dev/null +++ b/source/_components/input_text.markdown @@ -0,0 +1,39 @@ +--- +layout: page +title: "Input Text" +description: "Instructions how to integrate the Input Text component into Home Assistant." +date: 2016-03-15 06:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: Automation +ha_release: 0.53 +--- + +The `input_text` component 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. + +```yaml +# Example configuration.yaml entries +input_text: + text1: + name: Text 1 + initial: Some Text + text2: + name: Text 2 + min: 8 + max: 40 + text3: + name: Text 3 + pattern: '[a-fA-F0-9]*' +``` + +Configuration variables: + +- **[alias]** (*Required*): Alias for the text input. +- **min** (*Optional*): Minimum length for the text value. Default is `0`. +- **max** (*Optional*): Maximum length for the text value. Default is `100`. +- **name** (*Optional*): Friendly name of the text input. +- **initial** (*Optional*): Initial value when Home Assistant starts. Default is empty string. +- **pattern** (*Optional*): Regex pattern for client side validation. Default is empty string, which is treated same as `.*`. diff --git a/source/_components/insteon_hub.markdown b/source/_components/insteon_hub.markdown index 7318b88ee15..03bf4b8a6ec 100644 --- a/source/_components/insteon_hub.markdown +++ b/source/_components/insteon_hub.markdown @@ -32,6 +32,6 @@ insteon_hub: Configuration variables: -- **username** (*Required*): The username used to access the Insteon interface (e.g. the [connect.insteon.com](connect.insteon.com) site). +- **username** (*Required*): The username used to access the Insteon interface (e.g. the [connect.insteon.com](http://connect.insteon.com/) site). - **password** (*Required*): The password used to access the Insteon interface. - **api_key** (*Required*): The Insteon REST API key emailed to you once you are approved in the Insteon Developer program. diff --git a/source/_components/insteon_local.markdown b/source/_components/insteon_local.markdown index 1b1343083a3..96a339f0f03 100644 --- a/source/_components/insteon_local.markdown +++ b/source/_components/insteon_local.markdown @@ -50,5 +50,8 @@ light: switch: - platform: insteon_local + +fan: + - platform: insteon_local ``` diff --git a/source/_components/insteon_plm.markdown b/source/_components/insteon_plm.markdown index 8949d4872ed..f28db9b74cd 100644 --- a/source/_components/insteon_plm.markdown +++ b/source/_components/insteon_plm.markdown @@ -63,7 +63,7 @@ unambiguous, but sometimes the component will not be able to guess the actual usage of the device. For example, there might be a table lamp plugged into an INSTEON appliance relay module. By default, this will show as a 'switch' device in Home Assistant, but it really should be a 'light' device. For -exceptions like this, the component supports a device plaform override. You +exceptions like this, the component supports a device platform override. You can set any device (by address) to explicitly use a specific platform if the default is not correct. diff --git a/source/_components/intent_script.markdown b/source/_components/intent_script.markdown new file mode 100644 index 00000000000..68336fd79d5 --- /dev/null +++ b/source/_components/intent_script.markdown @@ -0,0 +1,36 @@ +--- +layout: page +title: "Intent Script" +description: "Instructions on how to setup scripts to run on intents." +date: 2016-02-10 17:11 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: Intent +ha_release: "0.50" +--- + +The intent_script component allows users to configure actions and responses to intents. Intents can be fired by any component that supports it. Examples are Alexa (Amazon Echo), API.ai (Google Assistant) and Snips. + +```yaml +# Example configuration.yaml entry +intent_script: + GetTemperature: # Intent type + speech: + text: We have {% raw %}{{ states.sensor.temperature }}{% endraw %} degrees + action: + service: notify.notify + data_template: + message: Hello from an intent! +``` +Configuration variables: + +Inside an intent we can define these variables: + +- **intent** (*Required*): Name of the intent. Multiple entries are possible. + - **speech** (*Optional*): Text or template to return. + - **action** (*Optional*): [Script syntax](/docs/scripts/). + - **async_action** (*Optional*): Set to True to have Home Assistant not wait for the script to finish before returning the intent response. + diff --git a/source/_components/isy994.markdown b/source/_components/isy994.markdown index bcdbc50d6f6..8cf050f2383 100644 --- a/source/_components/isy994.markdown +++ b/source/_components/isy994.markdown @@ -88,7 +88,7 @@ A device is created by creating a directory, with the name for the device, under * *HA.lock* will create a lock * *HA.switch* will create a switch -A program, named *status*, is required under the program device directory. A program, named *actions*, is required for all program devices except for binary_sensor. Any other programs in these device directories will be ignored. +A program, named *status*, is required under the program device directory. A program, named *actions*, is required for all program devices except for binary_sensor. Any other programs in these device directories will be ignored. The *status* program requires that you create a variable with the name of your choice. This variable will store the actual status of the new device and will be updated by the *action* program.
diff --git a/source/_components/joaoapps_join.markdown b/source/_components/joaoapps_join.markdown
index a66389a6c88..e27aa82e1a1 100644
--- a/source/_components/joaoapps_join.markdown
+++ b/source/_components/joaoapps_join.markdown
@@ -13,7 +13,7 @@ ha_release: "0.24"
---
-The Join platform exposes services from [Join](http://joaoapps.com/join). In Home Assistant, the Join features are divided up in two locations, the Join component, and the Join notify platform. The notify platform allows us to send messages to Join devices, the the component allows us to access the other special features that Join offers.
+The Join platform exposes services from [Join](http://joaoapps.com/join). In Home Assistant, the Join features are divided up in two locations, the Join component, and the Join notify platform. The notify platform allows us to send messages to Join devices, the component allows us to access the other special features that Join offers.
In the `configuration.yaml` file you need to provide the api key and device id or name of the target device. You can find your device id and api key [here](https://joinjoaomgcd.appspot.com/).
diff --git a/source/_components/keyboard_remote.markdown b/source/_components/keyboard_remote.markdown
index 5c6a3502ad0..f1d80bfa973 100644
--- a/source/_components/keyboard_remote.markdown
+++ b/source/_components/keyboard_remote.markdown
@@ -69,7 +69,7 @@ automation:
```
## {% linkable_title Disconnections %}
-This component manages disconnections and re-connections of the keyboard, for example in the case of a bluetooth device that turns off automatically to preserve battery.
+This component manages disconnections and re-connections of the keyboard, for example in the case of a Bluetooth device that turns off automatically to preserve battery.
If the keyboard disconnects, the component will fire an event `keyboard_remote_disconnected`.
When the keyboard reconnects, an event `keyboard_remote_connected` will be fired.
diff --git a/source/_components/knx.markdown b/source/_components/knx.markdown
index 89137d2ee90..b813ac3aee4 100644
--- a/source/_components/knx.markdown
+++ b/source/_components/knx.markdown
@@ -1,34 +1,100 @@
---
layout: page
title: "KNX"
-description: "Instructions on how to integrate KXN components with Home Assistant."
+description: "Instructions on how to integrate KNX components with Home Assistant."
date: 2016-06-08 12:00
sidebar: true
comments: false
sharing: true
footer: true
logo: knx.png
-ha_category: DIY
+ha_category: Hub
ha_release: 0.24
ha_iot_class: "Local Polling"
---
-[KNX/EIB](http://www.knx.org) integration for Home Assistant allows you to connect to a KNX bus. The component requires a local KNX/IP interface like the [Weinzierl 730](http://www.weinzierl.de/index.php/en/all-knx/knx-devices-en/knx-ip-interface-730-en). Through this it will send and receive commands to and from other devices to the KNX bus.
+
+The [KNX](http://www.knx.org) integration for Home Assistant allows you to connect to a KNX/IP devices.
+
+The component requires a local KNX/IP interface like the [Weinzierl 730](http://www.weinzierl.de/index.php/en/all-knx/knx-devices-en/knx-ip-interface-730-en). Through this, it will send and receive commands to and from other devices to the KNX bus.
There is currently support for the following device types within Home Assistant:
-
+
- [Binary Sensor](/components/binary_sensor.knx)
+- [Cover](/components/cover.knx)
- [Sensor](/components/sensor.knx)
- [Switch](/components/switch.knx)
- [Light](/components/light.knx)
- [Thermostat](/components/climate.knx)
+- [Notify](/components/notify.knx)
-A `knx` section must be present in the `configuration.yaml` file and contain the following options as required:
+### {% linkable_title Configuration %}
+
+To use your KNX in your installation, add the following lines to your `configuration.yaml` file:
```yaml
-# Example configuration.yaml entry
knx:
```
-- **host** (*Optional*): The IP address of the KNX/IP interface to use. It defaults to `0.0.0.0` which will start discovery for your KNX/IP gateway.
-- **port** (*Optional*): The UDP port number. Defaults to `3671`.
+Optional, recommended for large KNX installations (>100 devices) and/or if you want to use the XKNX abstraction also for other scripted tools outside of Home Assistant:
+
+```yaml
+knx:
+ config_file: '/path/to/xknx.yaml'
+```
+
+- **config_file** (*Optional*): The path for XKNX configuration file.
+
+If the auto detection of the KNX/IP device does not work you can specify ip/port of the tunneling device:
+
+```yaml
+knx:
+ tunneling:
+ host: '192.168.2.23'
+ port: 3671
+ local_ip: '192.168.2.109'
+```
+
+- **host**: Host of the KNX/IP tunneling device.
+- **port**: Port of the KNX/IP tunneling device.
+- **local_ip**: IP of the local interface.
+
+Explicit connection to a KNX/IP routing device:
+
+```yaml
+knx:
+ config_file: '/path/to/xknx.yaml'
+ routing:
+ local_ip: '192.168.2.109'
+```
+
+- **local_ip**: The local IP address of interface (which should be used for multicasting).
+
+```yaml
+knx:
+ fire_event: True
+ fire_event_filter: ["1/0/*", "6/2,3,4-6/*"]
+```
+
+- **fire_event** (*Optional*): If set to True, platform will write all received KNX messages to event bus
+- **fire_event_filter** (*Optional*): If `fire_event` is set `fire_event_filter` has to be specified. `fire_event_filter` defines a list of patterns for filtering KNX addresses. Only telegrams which match this pattern are sent to the HOme Assistant event bus.
+- **state_updater** (*Optional*): The component will collect the current state of each configured device from the KNX bus to display it correctly within Home-Assistant. Set this option to False to prevent this behaviour.
+
+### {% linkable_title Services %}
+
+In order to directly interact with the KNX bus, you can now use the following service:
+
+```
+Domain: knx
+Service: send
+Service Data: {"address": "1/0/15", "payload": 0}
+```
+
+* **address**: KNX group address
+* **payload**: Payload, either an integer or an array of integers
+
+
+### {% linkable_title Known issues %}
+
+Due to lame multicast support the routing abstraction and the gateway scanner only work with Python >=3.5.
+
diff --git a/source/_components/lametric.markdown b/source/_components/lametric.markdown
new file mode 100644
index 00000000000..6431b954542
--- /dev/null
+++ b/source/_components/lametric.markdown
@@ -0,0 +1,28 @@
+---
+layout: page
+title: "LaMetric"
+description: "Instructions on how to integrate LaMetric with Home Assistant."
+date: 2017-04-02 13:28
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: lametric.png
+ha_category: Hub
+ha_release: 0.49
+---
+
+[LaMetric Time](http://lametric.com) is a smart clock that can be used to access applications, listen to web radio and display notifications.
+
+There is currently support for the following device types within Home Assistant:
+
+- [Notify](/components/notify.lametric)
+
+The LaMetric Time can only be accessed by authorized applications. Therefore, each application that wants to access the LaMetric time needs to be registered at the LaMetric Developer web page. Sign Up and login to the developer web page. Click the Create button in the upper right corner, then select Notification App and click Create again. Enter an app name, a description and a redirect URL. Finally, click Save to create the application. For the newly created app you will obtain a client id and a client secret that is required in the following configuration.
+
+```yaml
+# configuration.yaml example
+lametric:
+ client_id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxx
+ client_secret: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
+```
diff --git a/source/_components/light.abode.markdown b/source/_components/light.abode.markdown
new file mode 100644
index 00000000000..bb6d597deef
--- /dev/null
+++ b/source/_components/light.abode.markdown
@@ -0,0 +1,20 @@
+---
+layout: page
+title: "Abode Light"
+description: "Instructions how to integrate Abode lights into Home Assistant."
+date: 2017-08-26 13:28
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: abode.jpg
+ha_release: 0.54
+ha_category: Light
+ha_iot_class: "Cloud Push"
+---
+
+The `abode` security control panel platform allows you to control your [Abode](https://goabode.com/) alarms.
+
+This component will automatically add `Lights` configured in your Abode account. You can reclassify `Switches` to show up within Home Assistant as lights by listing the Abode device ID in your [configuration](/components/abode/#configuration).
+
+The requirement is that you have setup your [Abode hub](/components/abode/).
diff --git a/source/_components/light.avion.markdown b/source/_components/light.avion.markdown
index 6fbcab8a579..74260e93957 100644
--- a/source/_components/light.avion.markdown
+++ b/source/_components/light.avion.markdown
@@ -19,6 +19,27 @@ To enable these lights, add the following lines to your `configuration.yaml` fil
```yaml
# Example configuration.yaml entry
+light:
+ - platform: avion
+ username: testuser@fakedomain.com
+ password: foobar
+```
+
+Configuration variables:
+
+- **username** (*Optional*): The username used in the Avion app. If username and password are both provided, any associated switches will automatically be added to your configuration.
+- **password** (*Optional*): The password used in the Avion app.
+- **devices** (*Optional*): An optional list of devices with their Bluetooth address, a custom name to use in the frontend and the API key. The API key can be obtained by executing the following command:
+```
+curl -X POST -H "Content-Type: application/json" -d '{"email": "fakename@example.com", "password": "password"}' https://admin.avi-on.com/api/sessions | jq
+```
+
+with the email and password fields replaced with those used when registering the device via the mobile app. The pass phrase field of the output should be used as the API key in the configuration.
+
+If username and password are not supplied, devices must be configured manually like so:
+
+```yaml
+# Manual device configuration.yaml entry
light:
- platform: avion
devices:
@@ -26,16 +47,6 @@ light:
name: Light 1
api_key: Gr35a/rt3RgaRenl9ag8Ba==
00:21:3D:20:00:a1:
- name: Bulb 2
+ name: Light 2
api_key: Gr35a/rt3RgaRenl9ag8Ba==
```
-
-Configuration variables:
-
-- **devices**: A list of devices with their bluetooth address, a custom name to use in the frontend and the API key. The API key can be obtained by executing the following command:
-
-```
-curl -X POST -H "Content-Type: application/json" -d '{"email": "fakename@example.com", "password": "password"}' https://admin.avi-on.com/api/sessions | jq
-```
-
-with the email and password fields replaced with those used when registering the device via the mobile app. The passphrase field of the output should be used as the API key in the configuration.
diff --git a/source/_components/light.decora.markdown b/source/_components/light.decora.markdown
index d40acae2bac..b9f0063e3f5 100644
--- a/source/_components/light.decora.markdown
+++ b/source/_components/light.decora.markdown
@@ -1,6 +1,6 @@
---
layout: page
-title: "Decora"
+title: "Leviton Decora"
description: "Instructions on how to setup Leviton Decora Bluetooth dimmers within Home Assistant."
date: 2017-01-18 22:45
sidebar: true
@@ -33,4 +33,24 @@ Configuration variables:
- **devices** array (*Required*): A list of lights to use.
- **[mac address]** (*Required*): The bluetooth address of the switch.
- **name** (*Optional*): The custom name to use in the frontend.
- - **api_key** (*Required*): The API key to acces the device.
+ - **api_key** (*Required*): The API key to access the device.
+
+
+If you get an error looking like this: + +```bash +Jun 20 19:41:18 androlapin hass[29588]: ERROR:homeassistant.components.light:Error while setting up platform decora +[...] +Jun 20 19:41:18 androlapin hass[29588]: File "/usr/lib/python3.6/concurrent/futures/thread.py", line 55, in run +Jun 20 19:41:18 androlapin hass[29588]: result = self.fn(*self.args, **self.kwargs) +Jun 20 19:41:18 androlapin hass[29588]: File "/opt/homeassistant/custom_components/light/decora.py", line 68, in setup_platform +Jun 20 19:41:18 androlapin hass[29588]: light = DecoraLight(device) +[...] +Jun 20 19:41:18 androlapin hass[29588]: OSError: [Errno 8] Exec format error +``` + +1. Go to your `.homeassistant` folder +2. Then go to `deps/bluepy` subfolder. +3. Then run `make all` +4. Restart Home Assistant +
diff --git a/source/_components/light.decora_wifi.markdown b/source/_components/light.decora_wifi.markdown new file mode 100644 index 00000000000..85dbcd0e575 --- /dev/null +++ b/source/_components/light.decora_wifi.markdown @@ -0,0 +1,37 @@ +--- +layout: page +title: "Leviton Decora Wi-Fi" +description: "Instructions on how to setup Leviton Decora Smart Wi-Fi switches/dimmers within Home Assistant." +date: 2017-07-19 12:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Light +ha_iot_class: "Local Polling" +logo: leviton.png +ha_release: 0.51 +--- + +Support for [Leviton Decora Wi-Fi](http://www.leviton.com/en/products/lighting-controls/decora-smart-with-wifi) dimmers/switches. + +Supported devices (tested): + +- [DW6HD1-BZ](https://www.leviton.com/en/products/dw6hd) (Decora Smart Wi-Fi 600W Dimmer) + +To enable these lights, add the following lines to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +light: + - platform: decora_wifi + username: my_leviton_user_email@email.com + password: my_leviton_password +``` + +Configuration variables: + +- **username** (*Required*): Your "My Leviton" app email address/user name. +- **password** (*Required*): Your "My Leviton" app password. + + diff --git a/source/_components/light.hue.markdown b/source/_components/light.hue.markdown index f5ee01556dd..871972d4f0c 100644 --- a/source/_components/light.hue.markdown +++ b/source/_components/light.hue.markdown @@ -16,33 +16,51 @@ ha_release: pre 0.7 Philips Hue support is integrated into Home Assistant as a light platform. The preferred way to setup the Philips Hue platform is by enabling the [discovery component](/components/discovery/). -Once discovered, if you have a custom default view, locate `configurator.philips_hue` in the entities list ( < > ) and add it to a group in `configuration.yaml`. Restart Home Assistant so that the configurator is visible in the Home Assistant dashboard. Once Home Assistant is restarted, locate and click on `configurator.philips_hue` to bring up the initiation dialog. This will prompt you to press the Hue button to register the Hue hub in home assistant. Once complete, the configurator entity isn't needed anymore and can be removed from any visible group in `configuration.yaml`. +Once discovered, if you have a custom default view, locate `configurator.philips_hue` in the entities list ( < > ) and add it to a group in `configuration.yaml`. Restart Home Assistant so that the configurator is visible in the Home Assistant dashboard. Once Home Assistant is restarted, locate and click on `configurator.philips_hue` to bring up the initiation dialog. This will prompt you to press the Hue button to register the Hue hub in Home Assistant. Once complete, the configurator entity isn't needed anymore and can be removed from any visible group in `configuration.yaml`. -Restarting Home Assistant once more should result in the Hue lights listed as "light" entities. Add these light entities to configuration.yaml and restart home assistant once more to complete the installation. +When you configure the Hue bridge from Home Assistant, it writes a token to a file in your Home Assistant [configuration directory](/docs/configuration/). That token authenticates the communication with the Hue bridge. This token uses the IP Address of the Hue Bridge. If the IP address for the Hue Bridge changes, you will need to register the Hue Bridge with Home Assistant again. To avoid this you may set up DHCP registration for your Hue Bridge, so that it always has the same IP address. -If you want to enable the component without relying on the [discovery component](/components/discovery/), add the following lines to your `configuration.yaml`: +Restarting Home Assistant once more should result in the Hue lights listed as "light" entities. Add these light entities to configuration.yaml and restart Home Assistant once more to complete the installation. + +If you want to enable the component without relying on the [discovery component](/components/discovery/), add the following lines to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry light: - platform: hue - host: DEVICE_IP_ADDRESS + - platform: hue + host: DEVICE_IP_ADDRESS ``` Configuration variables: - **host** (*Optional*): IP address of the device, eg. 192.168.1.10. Required if not using the `discovery` component to discover Hue bridges. - - **allow_unreachable** (*Optional*): (true/false) This will allow unreachable bulbs to report their state correctly. - **filename** (*Optional*): Make this unique if specifying multiple Hue hubs. - **allow_in_emulated_hue** (*Optional*): )true/false) Enable this to block all Hue entities from being added to the `emulated_hue` component. - **allow_hue_groups** (*Optional*): (true/false) Enable this to stop Home Assistant from importing the groups defined on the Hue bridge. +### {% linkable_title Multiple Hue bridges %} + +If you use multiple Hue bridges then it's needed that you provide a configuration file for every bridge. The bridges can't share a single configuration file. + +Add `filename` to your Hue configuration entry in your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +light: + - platform: hue + host: BRIDGE1_IP_ADDRESS + filename: phue.conf + - platform: hue + host: BRIDGE2_IP_ADDRESS + filename: phue2.conf +``` + ### {% linkable_title Using Hue Groups in Home Assistant %} -The Hue API allows you to group lights. Home Assistant also supports grouping of entities natively, but sometimes it can be usefull to use Hue Groups to group light bulbs. By doing so, Home Assistant only needs to send one API call to change the state of all the bulbs in those groups instead of one call for every light in the group. This causes all the bulbs to change state simultaniously. +The Hue API allows you to group lights. Home Assistant also supports grouping of entities natively, but sometimes it can be useful to use Hue Groups to group light bulbs. By doing so, Home Assistant only needs to send one API call to change the state of all the bulbs in those groups instead of one call for every light in the group. This causes all the bulbs to change state simultaneously. -These Hue Groups can be a `Luminaire`, `Lightsource`, `LightGroup` or `Room`. The `Luminaire` and `Lightsource` can't be created manually since the Hue bridge manages these automatically based on the discovered bulbs. The `Room` and `LightGroup` can be created manually through the API, or the mobile app. A bulb can only exist in one `Room`, but can exist in multiple `LightGroup`. The `LightGroup` can be usefull to link certain bulbs together since. +These Hue Groups can be a `Luminaire`, `Lightsource`, `LightGroup` or `Room`. The `Luminaire` and `Lightsource` can't be created manually since the Hue bridge manages these automatically based on the discovered bulbs. The `Room` and `LightGroup` can be created manually through the API, or the mobile app. A bulb can only exist in one `Room`, but can exist in multiple `LightGroup`. The `LightGroup` can be useful to link certain bulbs together since. The 2nd generation Hue app only allows to create a `Room`. You need to use the first generation app or the API to create a `LightGroup`. @@ -73,10 +91,11 @@ More information can be found on the [Philips Hue API documentation](https://www ### {% linkable_title Using Hue Scenes in Home Assistant %} -The Hue platform has it's own concept of Scenes for setting the colors of a group of lights at once. Hue Scenes are very cheap, get created by all kinds of apps (as it is the only way to have 2 or more lights change at the same time), and are rarely deleted. A typical Hue hub might have hundreds of scenes stored in them, many that you've never used, almost all very poorly named. +The Hue platform has it's own concept of scenes for setting the colors of a group of lights at once. Hue Scenes are very cheap, get created by all kinds of apps (as it is the only way to have 2 or more lights change at the same time), and are rarely deleted. A typical Hue hub might have hundreds of scenes stored in them, many that you've never used, almost all very poorly named. -To avoid user interface overload we don't expose Scenes directly. Instead there is a [light.hue_activate_scene](/components/light/#service-lighthue_activate_scene) service which can be used by `automation` or `script` components. +To avoid user interface overload we don't expose scenes directly. Instead there is a [light.hue_activate_scene](/components/light/#service-lighthue_activate_scene) service which can be used by `automation` or `script` components. This will have all the bulbs transitioned at once, instead of one at a time using standard scenes in Home Assistant. + For instance: ```yaml @@ -92,7 +111,7 @@ script: | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `group_name` | no | The group/room name of the lights. Find this in the Hue official app. -| `scene_name` | no | The name of the Scene. Find this in the Hue official app. +| `scene_name` | no | The name of the scene. Find this in the Hue official app. *Note*: `group_name` is not linked to Home Assistant group name. @@ -100,15 +119,14 @@ script: How do you find these names? -The easiest way to do this is only use the scenes from the 2nd generation Hue app. That is organized by Room (Group) and Scene -Name. Use the values of Room name and Scene name that you see in the app. You can test these work on the `dev-service` console of your Home Assistant instance. +The easiest way to do this is only use the scenes from the 2nd generation Hue app. That is organized by room (group) and scene Name. Use the values of room name and scene name that you see in the app. You can test these work on the `dev-service` console of your Home Assistant instance. Alternatively, you can dump all rooms and scene names using this [gist](https://gist.github.com/sdague/5479b632e0fce931951c0636c39a9578). This does **not** tell you which groups and scenes work together but it's sufficient to get values that you can test in the `dev-service` console. *** Caveats *** -The Hue API doesn't activate Scenes directly, only on a Hue Group (typically Rooms, especially if using the 2nd gen app). But Hue Scenes don't actually reference their group. So heuristic matching is used. +The Hue API doesn't activate scenes directly, only on a Hue Group (typically rooms, especially if using the 2nd gen app). But Hue Scenes don't actually reference their group. So heuristic matching is used. -Neither Group names or Scene names are guaranteed unique in Hue. If you are getting non deterministic behavior, adjust your Hue scenes via the App to be more identifying. +Neither group names or scene names are guaranteed unique in Hue. If you are getting non deterministic behavior, adjust your Hue scenes via the App to be more identifying. -The Hue hub has limitted spaces for Scenes, and will delete Scenes if new ones get created that would overflow that space. The API docs say this is based on Least Recently Used. +The Hue hub has limited spaces for scenes, and will delete scenes if new ones get created that would overflow that space. The API docs say this is based on "Least Recently Used". diff --git a/source/_components/light.hyperion.markdown b/source/_components/light.hyperion.markdown index 4c255336654..eccb243e37d 100644 --- a/source/_components/light.hyperion.markdown +++ b/source/_components/light.hyperion.markdown @@ -29,4 +29,5 @@ Configuration variables: - **host** (*Required*): The IP address of the device the Hyperion service is running on. - **port** (*Optional*): The port used to communicate with the Hyperion service. Defaults to `19444`. - **name** (*Optional*): The name of the device used in the frontend. +- **priority** (*Optional*): The priority of the hyperion instance. Defaults to `128`. - **default_color** (*Optional*): The color of the light. Defaults to `[255, 255, 255]`. diff --git a/source/_components/light.knx.markdown b/source/_components/light.knx.markdown index 359912a3777..b3cf614a1c9 100644 --- a/source/_components/light.knx.markdown +++ b/source/_components/light.knx.markdown @@ -1,14 +1,14 @@ --- layout: page title: "KNX Light" -description: "Instructions on how to integrate KXN lights with Home Assistant." +description: "Instructions on how to integrate KNX lights with Home Assistant." date: 2016-06-24 12:00 sidebar: true comments: false sharing: true footer: true logo: knx.png -ha_category: DIY +ha_category: Light ha_release: 0.44 ha_iot_class: "Local Polling" --- @@ -16,18 +16,26 @@ ha_iot_class: "Local Polling" The `knx` light component is used as in interface to switching/light actuators. -To use your KNX light in your installation, add the following to your `configuration.yaml` file: +The `knx` component must be configured correctly, see [KNX Component](/components/knx). + +To use your KNX light in your installation, add the following lines to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry light: - platform: knx - name: KNX light - address: 0/0/1 + name: Kitchen-Light-1 + address: '1/0/9' + brightness_address: '1/0/11' ``` -- **name** (*Optional*): A name for this devices used within Home assistant -- **address** (*Required*): The KNX group address that is used to turn on/off this actuator channel -- **state_address** (*Optional*): Some KNX devices can change their state internally without any messages on the KXN bus, e.g. if you configure a timer on a channel. The optional `state_address` can be used to inform Home Assistant about these state changes. If a KNX message is seen on the bus addressed to the given state address, this will overwrite the state of the switch object. -For switching/light actuators that are only controlled by a single group address and can't change their state internally, you don't have to configure the state address. +Configuration variables: +- **name** (*Optional*): A name for this device used within Home Assistant. +- **address**: KNX group address for switching the light on and off. +- **brightness_address** (Optional): KNX group address for dimming light. +- **state_address** (*Optional*): separate KNX group address for retrieving the switch state of the light. +- **brightness_state_address** (*Optional*): separate KNX group address for retrieving the dimmed state of the light. + +Some KNX devices can change their state internally without any messages on the KNX bus, e.g., if you configure a timer on a channel. The optional `state_address` can be used to inform Home Assistant about these state changes. If a KNX message is seen on the bus addressed to the given state address, this will overwrite the state of the switch object. +For switching/light actuators that are only controlled by a single group address and can't change their state internally, you don't have to configure the state address. diff --git a/source/_components/light.lifx.markdown b/source/_components/light.lifx.markdown index f44445a186d..805cb67e680 100644 --- a/source/_components/light.lifx.markdown +++ b/source/_components/light.lifx.markdown @@ -21,11 +21,11 @@ _Please note, the `lifx` platform does not support Windows. The `lifx_legacy` pl # Example configuration.yaml entry light: - platform: lifx - server: 192.168.1.10 ``` Configuration variables: -- **server** (*Optional*): Your server address. Only needed if using more than one network interface. Omit if you are unsure. +- **broadcast** (*Optional*): The broadcast address for discovering lights. Only needed if using more than one network interface. Omit if you are unsure. +- **server** (*Optional*): Your server address. Will listen on all interfaces if omitted. Omit if you are unsure. ## {% linkable_title Set state %} @@ -41,6 +41,7 @@ Change the light to a new state. | ---------------------- | ----------- | | `entity_id` | String or list of strings that point at `entity_id`s of lights. Else targets all. | `transition` | Duration (in seconds) for the light to fade to the new state. +| `zones` | List of integers for the zone numbers to affect (each LIFX Z strip has 8 zones, starting at 0). | `infrared` | Automatic infrared level (0..255) when light brightness is low (for compatible bulbs). | `power` | Turn the light on (`True`) or off (`False`). Leave out to keep the power as it is. | `...` | Use `color_name`, `brightness` etc. from [`light.turn_on`]({{site_root}}/components/light/#service-lightturn_on) to specify the new state. diff --git a/source/_components/light.limitlessled.markdown b/source/_components/light.limitlessled.markdown index 4dd76e750f5..bc0849cbcaf 100644 --- a/source/_components/light.limitlessled.markdown +++ b/source/_components/light.limitlessled.markdown @@ -18,7 +18,7 @@ ha_release: pre 0.7 ### {% linkable_title Setup %} -Before configuring Home Assistant, make sure you can control your bulbs or LEDs with the MiLight mobile application. Discover your bridge(s) IP address. You can do this via your router or a mobile application like Fing ([android](https://play.google.com/store/apps/details?id=com.overlook.android.fing&hl=en) or [itunes](https://itunes.apple.com/us/app/fing-network-scanner/id430921107?mt=8)). Keep in mind that LimitlessLED bulbs are controlled via groups. You can not control an individual bulb via the bridge, unless it is in a group by itself. Note that you can assign an `rgbw`, `rgbww` and `white` group to the same group number, effectively allowing 12 groups (4 `rgbww`, 4 `rgbw` and 4 `white`) per bridge. +Before configuring Home Assistant, make sure you can control your bulbs or LEDs with the MiLight mobile application. Discover your bridge(s) IP address. You can do this via your router or a mobile application like Fing ([android](https://play.google.com/store/apps/details?id=com.overlook.android.fing&hl=en) or [iTunes](https://itunes.apple.com/us/app/fing-network-scanner/id430921107?mt=8)). Keep in mind that LimitlessLED bulbs are controlled via groups. You can not control an individual bulb via the bridge, unless it is in a group by itself. Note that you can assign an `rgbw`, `rgbww` and `white` group to the same group number, effectively allowing 12 groups (4 `rgbww`, 4 `rgbw` and 4 `white`) per bridge. To add `limitlessled` to your installation, add the following to your `configuration.yaml` file: @@ -34,6 +34,10 @@ light: - number: 2 type: rgbw name: Bathroom + - number: 3 + type: rgbw + name: Kitchen + fade: on - host: 192.168.1.11 groups: - number: 1 @@ -53,6 +57,7 @@ Configuration variables: - **number** (*Required*): Group number (`1`-`4`). Corresponds to the group number on the remote. These numbers may overlap only if the type is different. - **name** (*Required*): Any name you'd like. Must be unique among all configured groups. - **type** (*Optional*): Type of group. Choose either `rgbww`, `rgbw`, `white`, or `bridge-led`. `rgbw` is the default if you don't specify this entry. Use `bridge-led` to control the built-in LED of newer WiFi bridges. + - **fade** (*Optional*): Fade behavior. Defaults to `off`. If turned on, the group is faded out before being turned off. This makes for a more pleasing transition at the expense of wall switch usability, since the light will turn back on at the lowest brightness if it is power cycled. ### {% linkable_title Properties %} @@ -66,7 +71,7 @@ Refer to the [light]({{site_root}}/components/light/) documentation for general - *Color*: There are 256 color possibilities along the LimitlessLED color spectrum. Color properties like saturation and lightness can not be used - only Hue can. The only exception is white (which may be warm or cold depending on the type of RGBW bulb). If you select a color with saturation or lightness, Home Assistant will calculate the nearest valid LimitlessLED color. - *Brightness*: Wifi bridge v6 supports 101 brightness steps; older versions only 25. - **White** - - When using a legacy wifi bridge (before v6), you can observe on the MiLight mobile application, you can not select a specific brightness or temperature - you can only step each property up or down. There is no indication of which step you are on. This restriction, combined with the unreliable nature of LimitlessLED transmissions, means that setting white bulb properties is done on a best-effort basis. The only very reliable settings are the minimum and maximum of each property. + - When using a legacy WiFi bridge (before v6), you can observe on the MiLight mobile application, you can not select a specific brightness or temperature - you can only step each property up or down. There is no indication of which step you are on. This restriction, combined with the unreliable nature of LimitlessLED transmissions, means that setting white bulb properties is done on a best-effort basis. The only very reliable settings are the minimum and maximum of each property. - *Temperature*: Wifi bridge v6 supports 101 temperature steps; older versions only 10. - *Brightness*: Wifi bridge v6 supports 101 brightness steps; older versions only 10. - **Transitions** diff --git a/source/_components/light.lutron_caseta.markdown b/source/_components/light.lutron_caseta.markdown index 7edfca003d5..02e15710d62 100644 --- a/source/_components/light.lutron_caseta.markdown +++ b/source/_components/light.lutron_caseta.markdown @@ -12,4 +12,12 @@ ha_category: Light ha_iot_class: "Local Polling" --- -To get your Lutron Caseta lights working with Home Assistant, follow the instructions for the general [Lutron Caseta component](/components/lutron_caseta/). +To get Lutron Caseta lights working with Home Assistant, follow the instructions for the general [Lutron Caseta component](/components/lutron_caseta/). + +After setup, dimmable lights including wall and plug-in dimmers will appear in Home Assistant using an `entity_id` based on the name used in the Lutron mobile app. For example, a light called 'Bedroom Lamp' will appear in Home Assistant as `light.bedroom_lamp`. + +For non-dimmable lights or switched loads, see [Lutron Caseta Switch](/components/switch.lutron_caseta/). + +For more information on working with lights in Home Assistant, see the [Lights component](/components/light/). + +Available services: `light.turn_on`, `light.turn_off` and `light.toggle`. The `light.turn_on` service supports attributes `brightness` and `brightness_pct`. \ No newline at end of file diff --git a/source/_components/light.markdown b/source/_components/light.markdown index 688cb0732f8..43706748906 100644 --- a/source/_components/light.markdown +++ b/source/_components/light.markdown @@ -24,11 +24,12 @@ Most lights do not support all attributes. You can check the platform documentat | Service data attribute | Optional | Description | | ---------------------- | -------- | ----------- | | `entity_id` | no | String or list of strings that point at `entity_id`s of lights. Else targets all. -| `transition` | yes | Integer that represents the time the light should take to transition to the new state in seconds. -| `profile` | yes | String with the name of one of the [built-in profiles](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/light/light_profiles.csv) (relax, energize, concentrate, reading) or one of the custom profiles defined in `light_profiles.csv` in the current working directory. Light profiles define a xy color and a brightness. If a profile is given and a brightness or xy color then the profile values will be overwritten. +| `transition` | yes | Number that represents the time (in seconds) the light should take to transition to the new state. +| `profile` | yes | String with the name of one of the [built-in profiles](https://github.com/home-assistant/home-assistant/blob/master/homeassistant/components/light/light_profiles.csv) (relax, energize, concentrate, reading) or one of the custom profiles defined in `light_profiles.csv` in the current working directory. Light profiles define a xy color and a brightness. If a profile is given and a brightness then the profile brightness will be overwritten. | `xy_color` | yes | A list containing two floats representing the xy color you want the light to be. Two comma separated floats that represent the color in XY. | `rgb_color` | yes | A list containing three integers representing the rgb color you want the light to be. Three comma separated integers that represent the color in RGB. You can find a great chart here: [Hue Color Chart](http://www.developers.meethue.com/documentation/hue-xy-values) -| `color_temp` | yes | An INT in mireds representing the color temperature you want the light to be. +| `white_value` | yes | Integer between 0 and 255 for how bright a dedicated white LED should be. +| `color_temp` | yes | An integer in mireds representing the color temperature you want the light to be. | `kelvin` | yes | Alternatively, you can specify the color temperature in Kelvin. | `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/2010/PR-css3-color-20101028/#svg-color) are supported. | `brightness` | yes | Integer between 0 and 255 for how bright the color should be. diff --git a/source/_components/light.mochad.markdown b/source/_components/light.mochad.markdown new file mode 100644 index 00000000000..0bf8b817fe6 --- /dev/null +++ b/source/_components/light.mochad.markdown @@ -0,0 +1,32 @@ +--- +layout: page +title: "Mochad Light" +description: "Instructions how to integrate X10 Mochad switches into Home Assistant." +date: 2017-07-14 11:29 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Light +ha_release: 0.51 +--- + +The `mochad` switch platform lets you control an X10 enabled dimmer/light +device. + +To enable this sensor, you first have to set up the [mochad component](/components/mochad/) and then add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yml entry +light: + - platform: mochad + devices: + - address: a1 + - address: a5 +``` + +Configuration variables: + +- **address** (*Required*): The X10 address of the light. +- **name** (*Optional*): The name of the switch. Default is: x10_light_dev_*address*. +- **comm_type** (*Optional*): pl (powerline) or rf (radio frequency). Default is pl. diff --git a/source/_components/light.mqtt.markdown b/source/_components/light.mqtt.markdown index 308e9282a64..99a1746623c 100644 --- a/source/_components/light.mqtt.markdown +++ b/source/_components/light.mqtt.markdown @@ -14,11 +14,11 @@ ha_iot_class: depends The `mqtt` light platform lets you control your MQTT enabled lights. It supports setting brightness, color temperature, effects, flashing, on/off, RGB colors, transitions, XY colors and white values. -In an ideal scenario, the MQTT device will have a state topic to publish state changes. If these messages are published with RETAIN flag, the MQTT light will receive an instant state update after subscription and will start with correct state. Otherwise, the initial state of the switch will be false/off. +In an ideal scenario, the MQTT device will have a state topic to publish state changes. If these messages are published with a `RETAIN` flag, the MQTT light will receive an instant state update after subscription and will start with the correct state. Otherwise, the initial state of the switch will be `false` / `off`. -When a state topic is not available, the light will work in optimistic mode. In this mode, the light will immediately change state after every command. Otherwise, the light will wait for state confirmation from device (message from `state_topic`). +When a state topic is not available, the light will work in optimistic mode. In this mode, the light will immediately change state after every command. Otherwise, the light will wait for state confirmation from the device (message from `state_topic`). -Optimistic mode can be forced, even if state topic is available. Try to enable it, if experiencing incorrect light operation. +Optimistic mode can be forced, even if the `state_topic` is available. Try to enable it, if experiencing incorrect light operation. ```yaml # Example configuration.yml entry @@ -42,11 +42,13 @@ Configuration variables: - **effect_value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the effect value. - **effect_list** (*Optional*): The list of effects the light supports. - **name** (*Optional*): The name of the switch. Default is 'MQTT Switch'. +- **on_command_type** (*Optional*): Defines when on the payload_on is sent. Using `last` (the default) will send any style (brightness, color, etc) topics first and then a `payload_on` to the `command_topic`. Using `first` will send the `payload_on` and then any style topics. Using `brightness` will only send brightness commands instead of the `payload_on` to turn the light on. - **optimistic** (*Optional*): Flag that defines if switch works in optimistic mode. Default is true if no state topic defined, else false. - **payload_off** (*Optional*): The payload that represents disabled state. Default is "OFF". - **payload_on** (*Optional*): The payload that represents enabled state. Default is "ON". - **qos** (*Optional*): The maximum QoS level of the state topic. Default is 0 and will also be used to publishing messages. - **retain** (*Optional*): If the published message should have the retain flag on or not. +- **rgb_command_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to compose message which will be sent to `rgb_command_topic`. Available variables: `red`, `green` and `blue`. - **rgb_command_topic** (*Optional*): The MQTT topic to publish commands to change the light's RGB state. - **rgb_state_topic** (*Optional*): The MQTT topic subscribed to receive RGB state updates. - **rgb_value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the RGB value. @@ -60,7 +62,7 @@ Configuration variables: - **xy_value_template** (*Optional*): Defines a [template](/docs/configuration/templating/#processing-incoming-data) to extract the XY value.- Make sure that your topics match exact. `some-topic/` and `some-topic` are different topics. + Make sure that your topics match exactly. `some-topic/` and `some-topic` are different topics.
@@ -82,7 +84,7 @@ Configuration variables: ## {% linkable_title Examples %} -In this section you find some real life examples of how to use this sensor. +In this section you will find some real life examples of how to use this sensor. ### {% linkable_title Brightness and RGB support %} @@ -127,6 +129,24 @@ light: optimistic: false ``` +### {% linkable_title Brightness without on commands %} + +To enable a light that sends only brightness topics to turn it on, add the following to your `configuration.yaml` file. The `command_topic` is only used to send an off command in this case: + +```yaml +# Example configuration.yml entry +light: + - platform: mqtt + name: "Brightness light" + state_topic: "office/light/status" + command_topic: "office/light/switch" + payload_off: "OFF" + brightness_state_topic: 'office/rgb1/light/brightness' + brightness_command_topic: 'office/rgb1/light/brightness/set' + on_command_type: 'brightness' +``` + + ### {% linkable_title Implementations %} - A [basic example](https://github.com/mertenats/open-home-automation/tree/master/ha_mqtt_light) using a nodeMCU board (ESP8266) to control its built-in LED (on/off). diff --git a/source/_components/light.rflink.markdown b/source/_components/light.rflink.markdown index 705d7073c66..0bd73b588ef 100644 --- a/source/_components/light.rflink.markdown +++ b/source/_components/light.rflink.markdown @@ -49,18 +49,20 @@ Device configuration variables: - **name** (*Optional*): Name for the device, defaults to Rflink ID. - **type** (*Optional*): Override automatically detected type of the light device, can be: switchable, dimmable, hybrid or toggle. See 'Light Types' below. (default: Switchable) -- **aliasses** (*Optional*): Alternative Rflink ID's this device is known by. +- **aliases** (*Optional*): Alternative Rflink ID's this device is known by. - **fire_event** (*Optional*): Fire an `button_pressed` event if this device is turned on or off (default: False). - **signal_repetitions** (*Optional*): Repeat every Rflink command this number of times (default: 1). - **fire_event_** (*Optional*): Set default `fire_event` for RFLink switch devices (see below). - **signal_repetitions** (*Optional*): Set default `signal_repetitions` for RFLink switch devices (see below). - +- **group** (*Optional*): Allow light to respond to group commands (ALLON/ALLOFF). (default: yes) +- **group_aliases** (*Optional*): `aliases` which only respond to group commands. +- **no_group_aliases** (*Optional*): `aliases` which do not respond to group commands. ### {% linkable_title Light state %} Initially the state of a light is unknown. When the light is turned on or off (via frontend or remote) the state is known and will be shown in the frontend. -Sometimes a light is controlled by multiple remotes, each remote has its own code programmed in the light. To allow tracking of the state when switched via other remotes add the corresponding remote codes as aliasses: +Sometimes a light is controlled by multiple remotes, each remote has its own code programmed in the light. To allow tracking of the state when switched via other remotes add the corresponding remote codes as aliases: ```yaml # Example configuration.yaml entry @@ -69,7 +71,7 @@ light: devices: newkaku_0000c6c2_1: name: Living room - aliasses: + aliases: - newkaku_000000001_2 - kaku_000001_a Ansluta_ce30_0: @@ -78,7 +80,7 @@ light: name: Bedroom Lamp ``` -Any on/off command from any allias ID updates the current state of the light. However when sending a command through the frontend only the primary ID is used. +Any on/off command from any alias ID updates the current state of the light. However when sending a command through the frontend only the primary ID is used. ### {% linkable_title Light types %} diff --git a/source/_components/light.skybell.markdown b/source/_components/light.skybell.markdown new file mode 100644 index 00000000000..15723eaf076 --- /dev/null +++ b/source/_components/light.skybell.markdown @@ -0,0 +1,24 @@ +--- +layout: page +title: "Skybell Light" +description: "Instructions on how to integrate your Skybell HD devices within Home Assistant." +date: 2017-10-03 16:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: skybell.png +ha_category: Light +ha_release: 0.56 +ha_iot_class: "Cloud Polling" +--- + +To get your [Skybell.com](https://skybell.com/) LED light working within Home Assistant, please follow the instructions for the general [Skybell component](/components/skybell). + +Once you have enabled the [Skybell component](/components/skybell), add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +light: + - platform: skybell +``` diff --git a/source/_components/light.template.markdown b/source/_components/light.template.markdown index 08ab8cdb409..69f0315c940 100755 --- a/source/_components/light.template.markdown +++ b/source/_components/light.template.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Template Light" -description: "Instructions how to integrate Template lights into Home Assistant." +description: "Instructions how to integrate Template Lights into Home Assistant." date: 2016-05-18 20:32 sidebar: true comments: false @@ -13,10 +13,14 @@ ha_iot_class: "Local Push" logo: home-assistant.png --- -The `template` platform creates lights that combine components and provides the ability to run scripts or invoke services for each of the on, off, and brightness commands of a light. +The `template` platform creates lights that combine components and provides the +ability to run scripts or invoke services for each of the on, off, and +brightness commands of a light. -To enable Template lights in your installation, add the following to your `configuration.yaml` file: +To enable Template Lights in your installation, add the following to your +`configuration.yaml` file: +{% raw %} ```yaml # Example configuration.yaml entry light: @@ -24,7 +28,8 @@ light: lights: theater_lights: friendly_name: "Theater Lights" - value_template: "{% raw %}{{is_state('sensor.theater_brightness.attributes.lux > 0'}}{% endraw %}" + level_template: "{{ sensor.theater_brightness.attributes.lux|int }}" + value_template: "{{ sensor.theater_brightness.attributes.lux|int > 0 }}" turn_on: service: script.theater_lights_on turn_off: @@ -32,26 +37,59 @@ light: set_level: service: script.theater_lights_level data_template: - volume_level: "{% raw %}{{brightness}}{% endraw %}" - level_template: "{% raw %}{{is_state('sensor.theater_brightness.attributes.lux'}}{% endraw %}" + brightness: "{{ brightness }}" ``` +{% endraw %} -Configuration variables: - -- **lights** array (*Required*): List of your lights. - - **friendly_name** (*Optional*): Name to use in the Frontend. - - **value_template** (*Optional*): Defines a [template](/topics/templating/) to get the state of the light. If not provided the component defaults to optimisitc state determination. - - **turn_on** (*Required*): Defines an [action](/getting-started/automation/) to run when the light is turned on. - - **turn_off** (*Required*): Defines an [action](/getting-started/automation/) to run when the light is turned off. - - **set_level** (*Optional*): Defines an [action](/getting-started/automation/) to run when the light is given a brightness command. - - **level_template** (*Optional): Defines a [template](/topics/templating/) to get the brightness of the light. If not provided the component defaults to optimisitc brightness determination. - - **entity_id** (*Optional*): Add a list of entity IDs so the switch only reacts to state changes of these entities. This will reduce the number of times the light will try to update it's state. - +{% configuration %} + switches: + description: List of your lights. + required: true + type: map + keys: + friendly_name: + description: Name to use in the frontend. + required: false + type: string + entity_id: + description: Add a list of entity IDs so the switch only reacts to state changes of these entities. This will reduce the number of times the light will try to update its state. + required: false + type: [string, list] + value_template: + description: Defines a template to get the state of the light. + required: false + type: template + default: optimistic + level_template: + description: Defines a template to get the brightness of the light. + required: false + type: template + default: optimistic + turn_on: + description: Defines an action to run when the light is turned on. + required: true + type: action + turn_off: + description: Defines an action to run when the light is turned off. + required: true + type: action + set_level: + description: Defines an action to run when the light is given a brightness command. + required: false + type: action +{% endconfiguration %} ## {% linkable_title Considerations %} -If you are using the state of a platform that takes extra time to load, the template light may get an 'unknown' state during startup. This results in error messages in your log file until that platform has completed loading. If you use is_state() function in your template, you can avoid this situation. For example, you would replace {% raw %}'{{ states.switch.source.state }}'{% endraw %} with this equivalent that returns true/false and never gives an unknown result: -{% raw %}'{{ is_state('switch.source', 'on') }}'{% endraw %} +If you are using the state of a platform that takes extra time to load, the +Template Light may get an `unknown` state during startup. This results +in error messages in your log file until that platform has completed loading. +If you use `is_state()` function in your template, you can avoid this situation. +For example, you would replace +{% raw %}`{{ states.switch.source.state == 'on' }}`{% endraw %} +with this equivalent that returns `true`/`false` and never gives an unknown +result: +{% raw %}`{{ is_state('switch.source', 'on') }}`{% endraw %} ## {% linkable_title Examples %} @@ -59,26 +97,29 @@ In this section you will find some real life examples of how to use this light. ### {% linkable_title Theater Volume Control %} -This example shows a light that is actually a home theater's volume. This component gives you the flexibility to provide whatever you'd like to send as the payload to the consumer including any scale conversions you may need to make; the media_player component needs a floating point percentage value 0.0-1.0 +This example shows a light that is actually a home theater's volume. This +component gives you the flexibility to provide whatever you'd like to send as +the payload to the consumer including any scale conversions you may need to +make; the [Media Player component](/components/media_player/) needs a floating +point percentage value from `0.0` to `1.0`. +{% raw %} ```yaml light: - platform: template lights: theater_volume: - friendly_name: 'Receiver Volume' + friendly_name: "Receiver Volume" value_template: >- - {% raw %} - {%- if is_state("media_player.receiver", "on") -%} - {%- if states.media_player.receiver.attributes.is_volume_muted -%} - off - {%- else -%} - on - {%- endif -%} - {%- else -%} + {% if is_state('media_player.receiver', 'on') %} + {% if states.media_player.receiver.attributes.is_volume_muted %} + off + {% else %} + on + {% endif %} + {% else %} off - {%- endif -%} - {% endraw %} + {% endif %} turn_on: service: media_player.volume_mute data: @@ -91,16 +132,102 @@ light: is_volume_muted: true set_level: service: media_player.volume_set + data_template: + entity_id: media_player.receiver + volume_level: "{{ (brightness / 255 * 100)|int / 100 }}" + level_template: >- + {% if is_state('media_player.receiver', 'on') %} + {{ (states.media_player.receiver.attributes.volume_level|float * 255)|int }} + {% else %} + 0 + {% endif %} +``` +{% endraw %} + +### {% linkable_title Change The Icon %} + +This example shows how to change the icon based on the light state. + +{% raw %} +```yaml +light: + - platform: template + lights: + theater_volume: + friendly_name: "Receiver Volume" + value_template: >- + {% if is_state('media_player.receiver', 'on') %} + {% if states.media_player.receiver.attributes.is_volume_muted %} + off + {% else %} + on + {% endif %} + {% else %} + off + {% endif %} + icon_template: >- + {% if is_state('media_player.receiver', 'on') %} + {% if states.media_player.receiver.attributes.is_volume_muted %} + mdi:lightbulb-off + {% else %} + mdi:lightbulb-on + {% endif %} + {% else %} + mdi:lightbulb-off + {% endif %} + turn_on: + service: media_player.volume_mute data: entity_id: media_player.receiver - data_template: - volume_level: '{% raw %}{{((brightness / 255 * 100) | int)/100}}{% endraw %}' - level_template: >- - {% raw %} - {%- if is_state("media_player.receiver", "on") -%} - {{(255 * states.media_player.receiver.attributes.volume_level) | int}} - {%- else -%} - 0 - {%- endif -%} - {% endraw %} -``` \ No newline at end of file + is_volume_muted: false + turn_off: + service: media_player.volume_mute + data: + entity_id: media_player.receiver + is_volume_muted: true +``` +{% endraw %} + +### {% linkable_title Change The Entity Picture %} + +This example shows how to change the entity picture based on the light state. + +{% raw %} +```yaml +light: + - platform: template + lights: + theater_volume: + friendly_name: "Receiver Volume" + value_template: >- + {% if is_state('media_player.receiver', 'on') %} + {% if states.media_player.receiver.attributes.is_volume_muted %} + off + {% else %} + on + {% endif %} + {% else %} + off + {% endif %} + icon_template: >- + {% if is_state('media_player.receiver', 'on') %} + {% if states.media_player.receiver.attributes.is_volume_muted %} + /local/lightbulb-off.png + {% else %} + /local/lightbulb-on.png + {% endif %} + {% else %} + /local/lightbulb-off.png + {% endif %} + turn_on: + service: media_player.volume_mute + data: + entity_id: media_player.receiver + is_volume_muted: false + turn_off: + service: media_player.volume_mute + data: + entity_id: media_player.receiver + is_volume_muted: true +``` +{% endraw %} diff --git a/source/_components/light.tplink.markdown b/source/_components/light.tplink.markdown new file mode 100644 index 00000000000..68fff983950 --- /dev/null +++ b/source/_components/light.tplink.markdown @@ -0,0 +1,40 @@ +--- +layout: page +title: "TPLink Bulb" +description: "Instructions how to integrate TPLink bulbs into Home Assistant." +date: 2017-07-25 08:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: tp-link.png +ha_category: Light +ha_iot_class: "Local Polling" +ha_release: "0.50" +--- + + +The `tplink` light platform allows you to control the state of your [TPLink smart bulb](http://www.tp-link.com/en/products/list-5609.html). + +Supported units: + +- LB100 +- LB110 +- LB120 +- LB130 + +To use your TPLink light in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +light: + - platform: tplink + host: IP_ADDRESS +``` + +Configuration variables: + +- **host** (*Required*): The IP address of your TP-Link bulb, eg. `192.168.1.32`. +- **name** (*Optional*): The name to use when displaying this bulb. + + diff --git a/source/_components/light.velbus.markdown b/source/_components/light.velbus.markdown new file mode 100644 index 00000000000..662b788ca41 --- /dev/null +++ b/source/_components/light.velbus.markdown @@ -0,0 +1,40 @@ +--- +layout: page +title: "Velbus lights" +description: "Access and control your Velbus lights." +date: 2017-06-17 16.58 +sidebar: true +comments: false +sharing: true +footer: true +logo: velbus.png +ha_category: Light +ha_iot_class: "Local Push" +ha_release: "0.50" +--- + +The `velbus` light allows you to control [Velbus](http://www.velbus.eu) lights. + +To use your Velbus lights in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry + +light: + - platform: velbus + devices: + - name: Light 1 + module: 0xda + channel: 4 + - name: Light 2 + module: 0xbc + channel: 1 +``` + +Configuration variables: +- **devices** array (*Required*): The array contains the lights to configure + - **name** (*Required*): Name of the light. + - **module** (*Required*): The hexadecimal module address + - **channel** (*Required*): The channel number in the module. + +For hub configuration, see [the Velbus component](/components/velbus/). diff --git a/source/_components/light.wink.markdown b/source/_components/light.wink.markdown index b5a76c090cd..5e7b74771ed 100644 --- a/source/_components/light.wink.markdown +++ b/source/_components/light.wink.markdown @@ -25,8 +25,10 @@ The requirement is that you have setup [Wink](/components/wink/). - Hue - Lightify - GE link +- Wink light groups (User created groups of lights)
-The above devices are confimed to work, but others may work as well. +The above devices are confirmed to work, but others may work as well.
+ diff --git a/source/_components/light.x10.markdown b/source/_components/light.x10.markdown index 19e6dbe43cd..7e0a52fd58a 100644 --- a/source/_components/light.x10.markdown +++ b/source/_components/light.x10.markdown @@ -31,5 +31,5 @@ light: Configuration variables: -- **id** (*Required*): Device identifier. Composed of house code und unit id. +- **id** (*Required*): Device identifier. Composed of house code and unit id. - **name** (*Optional*): A friendly name for the device. By default *id* from the device is used. diff --git a/source/_components/light.xiaomi_aqara.markdown b/source/_components/light.xiaomi_aqara.markdown new file mode 100644 index 00000000000..25e01ba22c7 --- /dev/null +++ b/source/_components/light.xiaomi_aqara.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Xiaomi Light" +description: "Instructions how to setup the Xiaomi light within Home Assistant." +date: 2017-07-21 16:34 +sidebar: true +comments: false +sharing: true +footer: true +logo: xiaomi.png +ha_category: Light +ha_release: "0.50" +ha_iot_class: "Local Push" +--- + + +The `xiaomi aqara` light platform allows you to control the internal light of the xiaomi gateway. The component will be loaded automatically and provides a device called `light.gateway_light_28ffffffffff`. + +The requirement is that you have setup [Xiaomi aqara](/components/xiaomi_aqara/). + diff --git a/source/_components/light.xiaomi_miio.markdown b/source/_components/light.xiaomi_miio.markdown new file mode 100644 index 00000000000..5f76deb341e --- /dev/null +++ b/source/_components/light.xiaomi_miio.markdown @@ -0,0 +1,36 @@ +--- +layout: page +title: "Xiaomi Philips Light" +description: "Instructions how to integrate your Xiaomi Philips Lights within Home Assistant." +date: 2017-08-26 08:45 +sidebar: true +comments: false +sharing: true +footer: true +logo: philips.png +ha_category: Light +ha_version: 0.53 +ha_iot_class: "Local Polling" +--- + +The `xiaomi_miio` platform allows you to control the state of your Xiaomi Philips LED Ball Lamp and Xiaomi Philips LED Ceiling Lamp. + +Currently, the supported features are `on`, `off`, `set_cct` (colortemp) , `set_bright` (brightness). + +Please follow the instructions on [Retrieving the Access Token](/components/vacuum.xiaomi_miio/#retrieving-the-access-token) to get the API token to use in the `configuration.yaml` file. + +To add a Xiaomi Philips Light to your installation, add the following to your configuration.yaml file: + +```yaml +# Example configuration.yaml entries +light: + - platform: xiaomi_miio + name: Xiaomi Philips Smart LED Ball + host: 192.168.130.67 + token: YOUR_TOKEN +``` + +Configuration variables: +- **host** (*Required*): The IP of your light. +- **token** (*Required*): The API token of your light. +- **name** (*Optional*): The name of your light. diff --git a/source/_components/light.yeelight.markdown b/source/_components/light.yeelight.markdown index 056b6246da2..426b4754b0b 100644 --- a/source/_components/light.yeelight.markdown +++ b/source/_components/light.yeelight.markdown @@ -48,11 +48,19 @@ Per default the bulb limits the amount of requests per minute to 60, a limitatioBefore trying to control your light through Home Assistant, you have to setup your bulb using Yeelight app. ( [Android](https://play.google.com/store/apps/details?id=com.yeelight.cherry&hl=fr), [IOS](https://itunes.apple.com/us/app/yeelight/id977125608?mt=8) ). In the bulb property, you have to enable "Developer Mode" Developer mode may only be available with the latest firmware installed on your bulb. Firmware can be updated in the application after connecting the bulb. -Determine your bulb ip (using router, software, ping ...) +Determine your bulb IP (using router, software, ping ...)
-This component is tested to work with models YLDP01YL, YLDP02YL and YLDP03YL. If you have a different model and it is working please let us know. +This component is tested to work with the following models. If you have a different model and it is working please let us know.
+- **YLDP01YL**: LED Bulb (White) +- **YLDP02YL**: LED Bulb (Color) +- **YLDP03YL**: LED Bulb (Color) - E26 +- **YLDD02YL**: Lightstrip (Color) + + + + diff --git a/source/_components/light.yeelightsunflower.markdown b/source/_components/light.yeelightsunflower.markdown index 97d2a0a6d2e..1b0e441970d 100644 --- a/source/_components/light.yeelightsunflower.markdown +++ b/source/_components/light.yeelightsunflower.markdown @@ -7,6 +7,7 @@ sidebar: true comments: false sharing: true footer: true +logo: yeelight.png ha_category: Light ha_release: 0.39 ha_iot_class: "Local Polling" diff --git a/source/_components/linode.markdown b/source/_components/linode.markdown new file mode 100644 index 00000000000..49336ba74a1 --- /dev/null +++ b/source/_components/linode.markdown @@ -0,0 +1,38 @@ +--- +layout: page +title: "Linode" +description: "Instructions on how to set up Linode within Home Assistant." +date: 2017-10-20 08:00 +sidebar: true +comments: false +sharing: true +footer: true +ha_category: Hub +logo: linode.png +ha_release: 0.57 +ha_iot_class: "Cloud Polling" +--- + +The `linode` component allows you to access the information about your [Linode](https://www.linode.com) systems from Home Assistant. + +Obtain your oAuth2 Access Token from Linode account. +*-Make sure that your topic match exact. `some-topic/` and `some-topic` are different topics. +Make sure that your topics match exactly. `some-topic/` and `some-topic` are different topics.
## {% linkable_title Examples %} -In this section you find some real life examples of how to use this lock. +In this section you will find some real life examples of how to use this lock. ### {% linkable_title Full configuration %} diff --git a/source/_components/lock.nello.markdown b/source/_components/lock.nello.markdown new file mode 100644 index 00000000000..53f2e26e79b --- /dev/null +++ b/source/_components/lock.nello.markdown @@ -0,0 +1,52 @@ +--- +layout: page +title: "Nello Lock" +description: "Instructions on how to integrate Nello intercom devices." +date: 2017-08-13 17:25 +sidebar: true +comments: false +sharing: true +footer: true +logo: nello.png +ha_category: Lock +featured: false + +ha_release: 0.52 +ha_iot_class: "Cloud Polling" +--- + +The `nello` platform allows you to control [Nello](https://nello.io) intercoms. +To get started you need to create a secondary Nello account and authorize it to access your lock(s). + ++Be aware that if you use your main account for Home Assistant you may not be able to use it with the App. +
+ +## {% linkable_title Configuration %} + +```yaml +# Example configuration.yaml entry +lock: + - platform: nello + username: mail@example.com + password: mySecretPassword +``` + +Configuration variables: + +- **username** (*Required*): The username of your Nello account. +- **password** (*Required*): The password of your Nello account. + +## {% linkable_title Events %} + +### {% linkable_title Event `nello_bell_ring` %} + +Every time someone rings the bell, a `nello_bell_ring` event will be fired. + +Field | Description +----- | ----------- +`address` | Postal address of the lock. +`date` | Date when the event occurred. +`description` | Human readable string describing the event. +`location_id` | Nello ID of the location where the bell has been rung. +`short_id` | Shorter Nello ID. diff --git a/source/_components/lock.nuki.markdown b/source/_components/lock.nuki.markdown index e45282da128..6d10c73f9ad 100644 --- a/source/_components/lock.nuki.markdown +++ b/source/_components/lock.nuki.markdown @@ -45,3 +45,23 @@ lock: port: 8080 token: fe2345ef ``` + +## {% linkable_title Services %} + +### {% linkable_title Service `nuki_unlatch` %} + +This will unlatch the door, ie. open it (provided this works with your type of door). + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | yes | String or list of strings that point at `entity_id`s Nuki Locks. + +### {% linkable_title Service `nuki_lock_n_go` %} + +This will first unlock, wait a few seconds (20 by default) then re-lock. The wait period can be customized through the app. +See the [Nuki Website](https://nuki.io/en/support/smart-lock/sl-features/locking-with-the-smart-lock/) for more details about this feature. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | yes | String or list of strings that point at `entity_id`s Nuki Locks. +| `unlatch` | yes | Boolean - Whether to unlatch the door when first opening it. diff --git a/source/_components/lock.tesla.markdown b/source/_components/lock.tesla.markdown new file mode 100644 index 00000000000..9708ea52205 --- /dev/null +++ b/source/_components/lock.tesla.markdown @@ -0,0 +1,20 @@ +--- +layout: page +title: "Tesla Lock" +description: "Instructions on how to integrate Tesla door lock into Home Assistant." +date: 2017-08-30 12:20 +sidebar: true +comments: false +sharing: true +footer: true +logo: tesla.png +ha_category: Lock +ha_iot_class: "Cloud Push" +ha_release: 0.53 +--- + +The `Tesla` platform allows you to control your [Tesla](https://www.tesla.com/) door lock from within Home Assistant. + +The lock platform will be automatically configured if Tesla component is configured. + +For more configuration information see the [Tesla component](/components/tesla/) documentation. diff --git a/source/_components/lock.wink.markdown b/source/_components/lock.wink.markdown index cc13cda757b..1f51751b3f4 100644 --- a/source/_components/lock.wink.markdown +++ b/source/_components/lock.wink.markdown @@ -23,6 +23,7 @@ The requirement is that you have setup [Wink](/components/wink/). - Kwikset - Schlage +- August (No Wink hub required) (August Connect required) - Generic Z-wave@@ -86,7 +87,7 @@ script: sequence: - service: wink.wink_set_lock_alarm_state data: - enabled: false + enabled: false ``` ### {% linkable_title Service `wink_set_lock_beeper_state` %} @@ -129,6 +130,20 @@ script: enabled: false ``` +### {% linkable_title Service `wink_add_new_lock_key_code` %} + +You can use the service wink/wink_add_new_lock_key_code to add a new user code to your Wink lock. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `entity_id` | no | String or list of strings that point at `entity_id`s of locks. +| `name` | no | the name of the new key code +| `code` | no | The new code. Must match length of existing codes. + + +
+Calling service wink/pull_newly_added_wink_devices will add the new key code to Home Assistant. The device will also show up on the next restart of Home Assistant. +
If supported by your lock, a binary sensor will be created for each user key code you have defined. These key codes will turn on when the code is entered and automatically turn off after a few seconds. diff --git a/source/_components/logger.markdown b/source/_components/logger.markdown index 09cb599aca5..70168cf440b 100644 --- a/source/_components/logger.markdown +++ b/source/_components/logger.markdown @@ -8,7 +8,7 @@ comments: false sharing: true footer: true logo: home-assistant.png -ha_category: "Other" +ha_category: "Utility" --- The logger component lets you define the level of logging activities in Home Assistant. @@ -68,8 +68,16 @@ data: homeassistant.components.media_player.yamaha: debug ``` -The log information are stored in the [configuration directory](/docs/configuration/) as `home-assistant.log` and you can read it with the command-line tool `cat` or follow it dynamically with `tail -f`. If you are a Hassbian user you can use the example below: +The log information are stored in the [configuration directory](/docs/configuration/) as `home-assistant.log` and you can read it with the command-line tool `cat` or follow it dynamically with `tail -f`. + +If you are a Hassbian user you can use the example below: ```bash $ tail -f /home/homeassistant/.homeassistant/home-assistant.log ``` + +If you are a Hass.io user you can use the example below, whenlogged in through the ssh addon: + +```bash +$ tail -f /config/home-assistant.log +``` diff --git a/source/_components/lutron_caseta.markdown b/source/_components/lutron_caseta.markdown index e1781b73734..c2a3f41f7c6 100644 --- a/source/_components/lutron_caseta.markdown +++ b/source/_components/lutron_caseta.markdown @@ -14,17 +14,20 @@ ha_release: 0.41 ha_iot_class: "Local Polling" --- -[Lutron](http://www.lutron.com/) is an American lighting control company. They have several lines of home automation devices that manage light switches/dimmers, occupancy sensors, HVAC controls, etc. The `lutron_caseta` component in Home Assistant is responsible for communicating with the Lutron SmartBridge for these systems. Both 'pro' and 'standard' models are supported. +[Lutron](http://www.lutron.com/) is an American lighting control company. They have several lines of home automation devices that manage light switches, dimmers, occupancy sensors, HVAC controls, etc. The `lutron_caseta` component in Home Assistant is responsible for communicating with the Lutron Caseta Smart Bridge for the [Caseta](http://www.casetawireless.com) product line of dimmers, switches and shades. -This component only supports the Caseta line of products. The current supported Caseta devices are: +This component only supports the [Caseta](http://www.casetawireless.com) line of products. Both Smart Bridge (L-BDG2-WH) and Smart Bridge PRO (L-BDGPRO2-WH) models are supported. For the RadioRA 2 product line, see the [Lutron component](/components/lutron/). -- Dimmers as Home Assistant lights -- Wall switches as Home Assistant switches -- Serena shades as Home Assistant covers +The currently supported Caseta devices are: -When configured, the `lutron_caseta` component will automatically discover the currently support devices as setup in the Lutron SmartBridge. +- Wall and plug-in dimmers as Home Assistant [lights](/components/light.lutron_caseta/) +- Wall switches as Home Assistant [switches](/components/switch.lutron_caseta/) +- Scenes as Home Assistant [scenes](/components/scene.lutron_caseta/) +- Lutron shades as Home Assistant [covers](/components/cover.lutron_caseta/) -To use Lutron Caseta devices in your installation, add the following to your `configuration.yaml` file using the IP of your lutron Smartbridge: +When configured, the `lutron_caseta` component will automatically discover the currently supported devices as setup in the Lutron Smart Bridge. The name assigned in the Lutron mobile app will be used to form the `entity_id` used in Home Assistant. e.g. a dimmer called 'Bedroom Lamp' becomes `light.bedroom_lamp` in Home Assistant. + +To use Lutron Caseta devices in your installation, add the following to your `configuration.yaml` file using the IP of your Smart Bridge: ```yaml # Example configuration.yaml entry @@ -34,8 +37,10 @@ lutron_caseta: Configuration variables: -- **host** (*Required*): The IP address of the Lutron SmartBridge. +- **host** (*Required*): The IP address of the Lutron Smart Bridge.
-It is recommended to assign a static IP address to your Lutron SmartBridge. This ensures that it won't change IP address, so you won't have to change the `host` if it reboots and comes up with a different IP address.
+It is recommended to assign a static IP address to your Lutron Smart Bridge. This ensures that it won't change IP address, so you won't have to change the `host` if it reboots and comes up with a different IP address.
+
+Use a DHCP reservation on your router to reserve the address or in the PRO model of the Smart Bridge, set the IP address under Network Settings in the Advanced / Integration menu in the mobile app.
+Devices that are currently at home won't show on the map. +
diff --git a/source/_components/media_extractor.markdown b/source/_components/media_extractor.markdown new file mode 100644 index 00000000000..114d70f3fe7 --- /dev/null +++ b/source/_components/media_extractor.markdown @@ -0,0 +1,74 @@ +--- +layout: page +title: "Media Extractor" +description: "Instructions how to integrate the Media Extractor into Home Assistant." +date: 2017-07-12 07:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: home-assistant.png +ha_category: Media Player +ha_release: 0.49 +--- + + +The `media_extractor` component gets a stream URL and sends it to a media player entity. This component can extract entity specific streams if configured accordingly. + ++Media extractor doesn't transcode streams, it just tries to find stream that match requested query. +
+ +To use the media extractor service in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +media_extractor: +``` + +Configuration variables: + +- **default_query** (*Optional*): Set default stream query for all devices ('best' by default). +- **customize** (*Optional*): Set entity specific values. For example: + +```yaml +# Example configuration.yaml entry +media_extractor: + default_query: worst + customize: + media_player.my_sonos: + video: bestvideo + music: bestaudio[ext=mp3] +``` + +This configuration sets query for all service calls like to 'bestaudio' with the mp3 extension: + +```json +{ + "entity_id": "media_player.my_sonos", + "media_content_id": "https://soundcloud.com/bruttoband/brutto-11", + "media_content_type": "music" +} +``` + +Query examples with explanations: + + * **bestvideo**: Best video only stream + * **best**: Best video + audio stream + * **bestaudio[ext=m4a]**: Best audio stream with m4a extension + * **worst**: Worst video + audio stream + * **bestaudio[ext=m4a]/bestaudio[ext=ogg]/bestaudio**: Best m4a audio, otherwise best ogg audio and only then any best audio + +More info about queries [here](https://github.com/rg3/youtube-dl#format-selection) + +### {% linkable_title Use the service %} + +Use-Currently you must have Home Sharing enabled for this to work. Support for pairing Home Assistant with your device will be supported in a later release. -
- -If you want to automatically discover new devices, just make sure you have `discovery:` in your `configuration.yaml` file. To manually add an Apple TV to your installation, add the following to your `configuration.yaml` file: - -```yaml -# Example configuration.yaml entry -media_player: - - platform: apple_tv - host: IP_ADDRESS - login_id: LOGIN_ID -``` - -Configuration variables: - -- **host** (*Required*): The IP-address of the device -- **login_id** (*Required*): An identifier used to login to the device, see below -- **name** (*Optional*): The name of the device used in the frontend - -In order to connect to the device you need a *login id*. The easiest way to obtain this identifier is to use the application ``atvremote``. It should be available in the same environment as you installed Home-Assistant. To install this utility, run ``pip3 install --upgrade pyatv``. The run atvremote scan for all devices (try again if a device is missing): - -```bash -$ atvremote scan -Found Apple TVs: - - Apple TV at 10.0.10.22 (login id: 00000000-1234-5678-9012-345678901234) -``` - -Just copy and paste the login id from the device you want to add. For more details about `atvremote`, see: [this page](https://github.com/postlund/pyatv/blob/master/docs/atvremote.rst). - -## {% linkable_title Notes and Limitations %} - -- Pairing is currently not supported +To setup the `apple_tv` media player platform, please follow the instructions on the [Apple TV Component page](/components/apple_tv/). diff --git a/source/_components/media_player.aquostv.markdown b/source/_components/media_player.aquostv.markdown index e6f48815641..2c764f46873 100644 --- a/source/_components/media_player.aquostv.markdown +++ b/source/_components/media_player.aquostv.markdown @@ -29,10 +29,10 @@ media_player: Configuration variables: -- **host** (*Required*): The IP/Hostname of the Samsung Smart TV, eg. `192.168.0.10`. -- **port** (*Optional*): The port of the Samsung Smart TV. Defaults to 10002. -- **username** (*Optional*): The username of the Samsung Smart TV. Defaults to admin. -- **password** (*Optional*): The password of the Samsung Smart TV. Defaults to password. +- **host** (*Required*): The IP/Hostname of the Sharp Aquos TV, eg. `192.168.0.10`. +- **port** (*Optional*): The port of the Sharp Aquos TV. Defaults to 10002. +- **username** (*Optional*): The username of the Sharp Aquos TV. Defaults to admin. +- **password** (*Optional*): The password of the Sharp Aquos TV. Defaults to password. - **name** (*Optional*): The name you would like to give to the Sharp Aquos TV. - **power_on_enabled** (*Optional*): If you want to be able to turn on your TV. Defaults to False. diff --git a/source/_components/media_player.bluesound.markdown b/source/_components/media_player.bluesound.markdown new file mode 100644 index 00000000000..f711cbe8971 --- /dev/null +++ b/source/_components/media_player.bluesound.markdown @@ -0,0 +1,48 @@ +--- +layout: page +title: "Bluesound" +description: "Instructions how to integrate Bluesound devices into Home Assistant." +date: 2017-04-21 19:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: bluesound.png +ha_category: Media Player +featured: false +ha_release: 0.51 +ha_iot_class: "Local Polling" +--- + +The `bluesound` platform allows you to control your [Bluesound](http://www.bluesound.com/) HiFi wireless speakers and audio components from Home Assistant. + +If you want to automatically discover new devices, just make sure you have discovery: in your configuration.yaml file. To manually add a Bluesound device to your installation, add the following to your configuration.yaml file: + + +```yaml +# Example configuration.yaml +media_player: + - platform: bluesound + hosts: + - host: 192.168.1.100 +``` + +Configuration variables: + +- **hosts** (*Optional*): List with your bluesound devices + - **host** (*Required*): IP-address or hostname of the player + - **name** (*Optional*): The name of the device used in the frontend + - **port** (*Optional*): Port of communication to the device (default: 11000) + +## Advanced configuration example + +```yaml +# Example configuration.yaml entry with manually specified addresses +media_player: + - platform: bluesound + hosts: + - host: 192.168.1.100 + name: bluesound_kitchen + port: 11000 + - host: 192.168.1.131 +``` diff --git a/source/_components/media_player.braviatv.markdown b/source/_components/media_player.braviatv.markdown index 11ccf5247d0..cf6bd2a4172 100644 --- a/source/_components/media_player.braviatv.markdown +++ b/source/_components/media_player.braviatv.markdown @@ -15,7 +15,7 @@ ha_iot_class: "Local Polling" The `braviatv` platform allows you to control a [Sony Bravia TV](http://www.sony.com). -Almost all [Sony Bravia TV 2013 and newer](http://info.tvsideview.sony.net/en_ww/home_device.html#bravia) are supported. +Almost all [Sony Bravia TV 2013 and newer](http://info.tvsideview.sony.net/en_ww/home_device.html#bravia) are supported. A more generic method for older TVs connected to a Raspberry Pi with HDMI-CEC is explained further below. You will need to configure your TV to allow the Home Assistant for remote usage. To do that, ensure that your TV is turned on. Open the configuration popup on Home Assistant and enter a random PIN (for example 0000). After that, the TV will show you a PIN and Home Assistant will allow you to re-enter that PIN. Enter the PIN shown on your TV and Home Assistant will be able to control your Sony Bravia TV. @@ -33,8 +33,43 @@ Configuration variables: - **host** (*Required*): The IP of the Sony Bravia TV, eg. 192.168.0.10 - **name** (*Optional*): The name to use on the frontend. -You are also able to configure the TV manually by placing a `bravia.conf` file in your `.homeassistant` config directory with the following information - please update the details to match your setup: +You are also able to configure the TV manually by placing a `bravia.conf` file in your [configuration directory](/docs/configuration/) with the following information - please update the details to match your setup: ```json {"192.168.0.10": {"pin": "7745", "mac": "ac:1e:0a:e1:0c:01"}} ``` + +## {% linkable_title For TVs older than 2013 %} + +Users of TVs older than 2013 have another option for controlling their TV via Home Assistant. + +### {% linkable_title Using HDMI-CEC %} + +If you have a Raspberry Pi connected to your TV: + +```yaml +switch: + - platform: command_line + switches: + tv_rpi: + command_on: ssh root@[IP] "echo 'on 0' | cec-client -s" + command_off: ssh root@[IP] "echo 'standby 0' | cec-client -s" + command_state: ssh root@[IP] "echo 'pow 0' | cec-client -s |grep 'power status:'" + value_template: {% raw %}'{{ value == "power status: on" }}{% endraw %}' +``` + +Using `cec-client` is a great method to turn your TV off/on, however the trade off is if you're using Kodi, it will no longer be able to control your TV using the TV Remote. + +This is because only one process can control the CEC functionality within the Raspberry Pi at a time and running the above commands terminates the functionality inside libCEC within Kodi. Kodi must be restarted for TV remove functionality to work again. + +**Workaround:** + +If your desire is only to turn on your TV, the following "workaround" may be desirable: + +Change the 'on' command to a restart for Kodi. This doesn't reboot the Kodi device. + +Restarting Kodi will trigger a HDMI-CEC event to bring the TV out of standby. The following can replace your TV 'on' command. + +```yaml +command_on: ssh root@[IP] "systemctl restart kodi" +``` diff --git a/source/_components/media_player.clementine.markdown b/source/_components/media_player.clementine.markdown index 7b138c22a18..c730daf5d96 100644 --- a/source/_components/media_player.clementine.markdown +++ b/source/_components/media_player.clementine.markdown @@ -16,8 +16,7 @@ ha_iot_class: "Local Polling" The `clementine` platform allows you to control a [Clementine Music Player](https://www.clementine-player.org). -To add a Clementine Player to your Home Assistant installation, add the following to -your `configuration.yaml` file: +To add a Clementine Player to your Home Assistant installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry @@ -33,10 +32,8 @@ Configuration variables: - **access_token** (*Optional*): The authorization code needed to connect. - **name** (*Optional*): The name you would like to give to the Clementine player. The default is "Clementine Remote". -Remember that Clementine must be configured to accept connections through its -network remote control protocol. +Remember that Clementine must be configured to accept connections through its network remote control protocol. -You can configure this through Clementine `Tools > Preferences > Network remote control` -configuration menu. Enable `Use network remote control` and configure the other options -for your use case. +You can configure this through Clementine `Tools > Preferences > Network remote control` configuration menu. Enable `Use network remote control` and configure the other options for your use case. +This component does not implement the `play_media` service so you cannot add tracks to the playlist. diff --git a/source/_components/media_player.denon.markdown b/source/_components/media_player.denon.markdown index f6c4ec6ac4c..b8c0e380133 100644 --- a/source/_components/media_player.denon.markdown +++ b/source/_components/media_player.denon.markdown @@ -13,8 +13,7 @@ ha_iot_class: "Local Polling" ha_release: 0.7.2 --- - -The `denon` platform allows you to control a [Denon Network Receivers](http://www.denon.co.uk/chg/product/compactsystems/networkmusicsystems/ceolpiccolo) from Home Assistant. +The `denon` platform allows you to control a [Denon Network Receivers](http://www.denon.co.uk/chg/product/compactsystems/networkmusicsystems/ceolpiccolo) from Home Assistant. It might be that your device is supported by the [Denon AVR] platform. Supported devices: @@ -22,22 +21,6 @@ Supported devices: - Denon RCD-N8 (untested) - Denon RCD-N9 (partial support) - Denon AVR receivers with integrated Network support (partial support) -- Denon AVR-X2000 (via denonavr platform) -- Denon AVR-X2100W (via denonavr platform) -- Denon AVR-X4100W (via denonavr platform) -- Denon AVR-1912 (via denonavr platform) -- Denon AVR-2312CI (via denonavr platform) -- Denon AVR-3311CI (via denonavr platform) -- Marantz M-CR603 (via denonavr platform) -- Marantz M-RC610 (via denonavr platform) -- Marantz SR5008 (via denonavr platform) -- Marantz NR1604 (via denonavr platform) -- Other Denon AVR receivers (via denonavr platform (untested)) -- Marantz receivers (experimental via denonavr platform) - --If you have something else using the IP controller for your Denon AVR 3808CI, such as your URC controller, it will not work! There is either a bug or security issue with some models where only one device could be controlling the IP functionality. -To add a Denon Network Receiver to your installation, add the following to your `configuration.yaml` file: @@ -55,36 +38,11 @@ Configuration variables: - **name** (*Optional*): Name of the device. A few notes for platform: denon + - The receiver handles only one telnet connection and refuses others. - Be careful with the volume. 100% or even 50% is very loud. - To be able to wake up the receiver, activate the "remote" setting in the receiver's settings. - Play and pause are supported, toggling is not possible. - Seeking cannot be implemented as the UI sends absolute positions. Only seeking via simulated button presses is possible. - -**denonavr platform** -```yaml -# Example configuration.yaml entry -media_player: - - platform: denonavr - host: IP_ADDRESS - name: NAME - show_all_sources: True / False - zones: - - zone: Zone2 / Zone3 - name: NAME -``` - -Configuration variables: - -- **host** (*Optional*): IP address of the device. Example: 192.168.1.32. If not set, auto discovery is used. -- **name** (*Optional*): Name of the device. If not set, friendlyName of receiver is used. -- **show_all_sources** (*Optional*): If True all sources are displayed in sources list even if they are marked as deleted in the receiver. If False deleted sources are not displayed (default). Some receivers have a bug that marks all sources as deleted in the interface. In this case this option could help. -- **zones** (*Optional*): List of additional zones to be activated. They are displayed as additional media players with the same functionality Main Zone of the device supports - - **zone**: Zone which should be activated. Valid options are Zone2 and Zone3 - - **name** (*Optional*): Name of the zone. If not set the name of the main device + zone as suffix is taken. - -A few notes for platform: denonavr -- Additional option the control Denon AVR receivers with a builtin web server is using the HTTP interface with denonavr platform. -- denonavr platform supports some additional functionalities like album covers, custom input source names and auto discovery. -- Marantz receivers seem to a have quite simliar interface. Thus if you own one, give it a try. +[Denon AVR]: /components/media_player.denonavr/ diff --git a/source/_components/media_player.denonavr.markdown b/source/_components/media_player.denonavr.markdown new file mode 100644 index 00000000000..a64c85c44b3 --- /dev/null +++ b/source/_components/media_player.denonavr.markdown @@ -0,0 +1,71 @@ +--- +layout: page +title: "Denon AVR Network Receivers" +description: "Instructions how to integrate Denon AVR Network Receivers into Home Assistant." +date: 2015-09-08 09:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: denon.png +ha_category: Media Player +ha_iot_class: "Local Polling" +ha_release: 0.7.2 +--- + + +The `denonavr` platform allows you to control a [Denon Network Receivers](http://www.denon.co.uk/chg/product/compactsystems/networkmusicsystems/ceolpiccolo) from Home Assistant. It might be that your device is supported by the [Denon] platform. + +Supported devices: + +- Denon AVR-X2000 +- Denon AVR-X2100W +- Denon AVR-X4100W +- Denon AVR-1912 +- Denon AVR-2312CI +- Denon AVR-3311CI +- Denon AVR-4810 +- Marantz M-CR603 +- Marantz M-RC610 +- Marantz SR5008 +- Marantz SR6007 - SR6010 +- Marantz NR1604 +- Other Denon AVR receivers (untested) +- Marantz receivers (experimental) + +
+If you have something else using the IP controller for your Denon AVR 3808CI, such as your URC controller, it will not work! There is either a bug or security issue with some models where only one device could be controlling the IP functionality. ++ +To add a Denon Network Receiver to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +media_player: + - platform: denonavr + host: IP_ADDRESS + name: NAME + show_all_sources: True / False + timeout: POSITIVE INTEGER + zones: + - zone: Zone2 / Zone3 + name: NAME +``` + +Configuration variables: + +- **host** (*Optional*): IP address of the device. Example: 192.168.1.32. If not set, auto discovery is used. +- **name** (*Optional*): Name of the device. If not set, friendlyName of receiver is used. +- **show_all_sources** (*Optional*): If True all sources are displayed in sources list even if they are marked as deleted in the receiver. If False deleted sources are not displayed (default). Some receivers have a bug that marks all sources as deleted in the interface. In this case this option could help. +- **timeout** (*Optional*): Timeout for HTTP requests to the receiver. Defaults to 2 seconds if not provided. +- **zones** (*Optional*): List of additional zones to be activated. They are displayed as additional media players with the same functionality Main Zone of the device supports + - **zone**: Zone which should be activated. Valid options are Zone2 and Zone3 + - **name** (*Optional*): Name of the zone. If not set the name of the main device + zone as suffix is taken. + +A few notes: + +- Additional option the control Denon AVR receivers with a builtin web server is using the HTTP interface with denonavr platform. +- denonavr platform supports some additional functionalities like album covers, custom input source names and auto discovery. +- Marantz receivers seem to a have quite simliar interface. Thus if you own one, give it a try. + +[Denon]: /components/media_player.denon/ diff --git a/source/_components/media_player.directv.markdown b/source/_components/media_player.directv.markdown index acfb4995368..2cd2c7f44dd 100644 --- a/source/_components/media_player.directv.markdown +++ b/source/_components/media_player.directv.markdown @@ -13,19 +13,63 @@ ha_release: 0.25 ha_iot_class: "Local Polling" --- -The [DirecTV](http://www.directv.com/) receivers will be automatically discovered if you enable the [discovery component](/components/discovery/). +Master [DirecTV](http://www.directv.com/) receivers (ie: those that have tuners) will be automatically discovered if you enable the [discovery component](/components/discovery/) and the receiver is powered-on. Slave/RVU client/Genie boxes will also be discovered, but only if they are also online at the time of discovery. -The `directv` media player platform can also be forced to load by adding the following lines to your `configuration.yaml`: +To ensure that your DirecTV boxes are always found and configured, they should be added into your `configuration.yaml`. ```yaml # Example configuration.yaml entry media_player: - platform: directv ``` - Configuration variables: - **host** (*Optional*): Use only if you don't want to scan for devices. - **port** (*Optional*): The port your receiver is using. Defaults to `8080`. - **name** (*Optional*): Use to give a specific name to the device. +- **device** (*Optional*): Use to specify a particular receiver in a Genie setup. + +To find valid device IDs, open `http://
-The Frontier Silicon API does not provide a multi-user environment. There is always a single user (session) controlling a device, which means that once home assistant connects to a device all other sessions will be invalidated. This renders the usage of [UNDOK] almost impossible, as the home assistant component polls the device state every 30 seconds or issues a command by creating a new session. -*If you want to prevent home assistant to auto connect to your device, simply change the PIN code of the device to something else than: 1234* +The Frontier Silicon API does not provide a multi-user environment. There is always a single user (session) controlling a device, which means that once Home Assistant connects to a device all other sessions will be invalidated. This renders the usage of [UNDOK] almost impossible, as the Home Assistant component polls the device state every 30 seconds or issues a command by creating a new session. +*If you want to prevent Home Assistant to auto connect to your device, simply change the PIN code of the device to something else than: 1234*
[Frontier Silicon chipset]: http://www.frontier-silicon.com/digital-radio-solutions diff --git a/source/_components/media_player.kodi.markdown b/source/_components/media_player.kodi.markdown index 9087ca2a758..556812292c6 100644 --- a/source/_components/media_player.kodi.markdown +++ b/source/_components/media_player.kodi.markdown @@ -35,7 +35,8 @@ Configuration variables: - **proxy_ssl** (*Optional*): Connect to kodi with HTTPS and WSS. Defaults to `false`. Useful if Kodi is behind an SSL proxy. - **username** (*Optional*): The XBMC/Kodi HTTP username. - **password** (*Optional*): The XBMC/Kodi HTTP password. -- **turn_off_action** (*Optional*): The desired turn off action. Options are `none`, `quit`, `hibernate`, `suspend`, `reboot`, or `shutdown`. Default `none`. +- **turn_on_action** (*Optional*): Home Assistant script sequence to call when turning on. +- **turn_off_action** (*Optional*): Home Assistant script sequence to call when turning off. - **enable_websocket** (*Optional*): Enable websocket connections to Kodi via the TCP port. Defaults to `true`. The websocket connection allows Kodi to push updates to Home Assistant and removes the need for Home Assistant to poll. If websockets don't work on your installation this can be set to `false`. - **timeout** (*Optional*): Set timeout for connections to Kodi. Defaults to 5 seconds. @@ -75,23 +76,174 @@ input: result: ``` +### {% linkable_title Kodi turn on/off samples %} + +With the `turn_on_action` and `turn_off_action` parameters you can run any combination of Home Assistant actions to turn on/off your Kodi instance. Here are a few examples of this usage, including the **migration instructions for the old `turn_off_action` list of options**. + +#### Turn on Kodi with Wake on LAN + +With this configuration, when calling `media_player/turn_on` on the Kodi device, a _magic packet_ will be sent to the specified MAC address. To use this service, first you need to config the [`wake_on_lan`](/components/wake_on_lan) component in Home Assistant, which is achieved simply by adding `wake_on_lan:` to your `configuration.yaml`. + +```yaml +media_player: + - platform: kodi + host: 192.168.0.123 + turn_on_action: + - service: wake_on_lan.send_magic_packet + data: + mac: aa:bb:cc:dd:ee:ff + broadcast_address: 192.168.255.255 +``` + +#### Turn off Kodi with API calls + +Here are the equivalent ways to configure each of the old options to turn off Kodi (`quit`, `hibernate`, `suspend`, `reboot`, or `shutdown`): + +- **Quit** method (before was `turn_off_action: quit`) + +```yaml +media_player: + - platform: kodi + host: 192.168.0.123 + turn_off_action: + service: media_player.kodi_call_method + data: + entity_id: media_player.kodi + method: Application.Quit +``` + +- **Hibernate** method (before was `turn_off_action: hibernate`) + +```yaml +media_player: + - platform: kodi + host: 192.168.0.123 + turn_off_action: + service: media_player.kodi_call_method + data: + entity_id: media_player.kodi + method: System.Hibernate +``` + +- **Suspend** method (before was `turn_off_action: suspend`) + +```yaml +media_player: + - platform: kodi + host: 192.168.0.123 + turn_off_action: + service: media_player.kodi_call_method + data: + entity_id: media_player.kodi + method: System.Suspend +``` + +- **Reboot** method (before was `turn_off_action: reboot`) + +```yaml +media_player: + - platform: kodi + host: 192.168.0.123 + turn_off_action: + service: media_player.kodi_call_method + data: + entity_id: media_player.kodi + method: System.Reboot +``` + +- **Shutdown** method (before was `turn_off_action: shutdown`) + +```yaml +media_player: + - platform: kodi + host: 192.168.0.123 + turn_off_action: + service: media_player.kodi_call_method + data: + entity_id: media_player.kodi + method: System.Shutdown +``` + +#### Turn on and off the TV with the Kodi JSON-CEC Add-on + +For Kodi devices running 24/7 attached to a CEC capable TV (OSMC / OpenElec and systems alike running in Rasperry Pi's, for example), this configuration enables the optimal way to turn on/off the attached TV from Home Assistant while Kodi is always active and ready: + +```yaml +media_player: + - platform: kodi + host: 192.168.0.123 + turn_on_action: + service: media_player.kodi_call_method + data: + entity_id: media_player.kodi + method: Addons.ExecuteAddon + addonid: script.json-cec + params: + command: activate + turn_off_action: + - service: media_player.media_stop + data: + entity_id: media_player.kodi + - service: media_player.kodi_call_method + data: + entity_id: media_player.kodi + method: Addons.ExecuteAddon + addonid: script.json-cec + params: + command: standby +``` + ++This example and the following requires to have the [script.json-cec](https://github.com/joshjowen/script.json-cec) plugin installed on your kodi player. It'll also expose th endpoints standy, toggle and activate without authentication on your kodi player. Use this with caution. +
+ ### {% linkable_title Kodi services samples %} -#### Simple script to turn on the TV with the Kodi JSON-CEC Addon +#### Simple script to turn on the PVR in some channel as a time function ```yaml script: - activate_tv: - alias: Turn on TV + play_kodi_pvr: + alias: Turn on the silly box sequence: - alias: TV on - service: media_player.kodi_call_method + service: media_player.turn_on data: - entity_id: media_player.kodi - method: Addons.ExecuteAddon - addonid: script.json-cec - params: - command: activate + entity_id: media_player.kodi + + - alias: Play TV channel + service: media_player.play_media + data_template: + entity_id: media_player.kodi + media_content_type: "CHANNEL" + media_content_id: > + {% raw %}{% if (now().hour < 14) or ((now().hour == 14) and (now().minute < 50)) %} + 10 + {% elif (now().hour < 16) %} + 15 + {% elif (now().hour < 20) %} + 2 + {% elif (now().hour == 20) and (now().minute < 50) %} + 10 + {% elif (now().hour == 20) or ((now().hour == 21) and (now().minute < 15)) %} + 15 + {% else %} + 10 + {% endif %}{% endraw %} ``` -For a more complex usage of the `kodi_call_method` service, with event triggering of Kodi API results, you can have a look at this [example](/cookbook/kodi_dynamic_input_select/) +#### Trigger a Kodi video library update + +```yaml +script: + update_library: + alias: Update Kodi Library + sequence: + - alias: Call Kodi update + service: media_player.kodi_call_method + data: + entity_id: media_player.kodi + method: VideoLibrary.Scan +``` + +For a more complex usage of the `kodi_call_method` service, with event triggering of Kodi API results, you can have a look at this [example](/cookbook/automation_kodi_dynamic_input_select/) diff --git a/source/_components/media_player.markdown b/source/_components/media_player.markdown index e0a5fc8ff94..18350ce1326 100644 --- a/source/_components/media_player.markdown +++ b/source/_components/media_player.markdown @@ -32,7 +32,7 @@ Available services: `turn_on`, `turn_off`, `toggle`, `volume_up`, `volume_down`, | Service data attribute | Optional | Description | |------------------------|----------|--------------------------------------------------| | `entity_id` | yes | Target a specific media player. Defaults to all. | -| `volume_level` | no | Float for volume level | +| `volume_level` | no | Float for volume level | #### {% linkable_title Service `media_player/media_seek` %} @@ -57,9 +57,12 @@ Available services: `turn_on`, `turn_off`, `toggle`, `volume_up`, `volume_down`, | `source` | no | Name of the source to switch to. Platform dependent. | #### {% linkable_title Service `media_player/shuffle_set` %} -Currently only supports Spotify. + +Currently only supported on [Spotify](/components/media_player.spotify/), [MPD](/components/media_player.mpd/), [Kodi](/components/media_player.kodi/), and [Universal](/components/media_player.universal/). | Service data attribute | Optional | Description | | ---------------------- | -------- | ---------------------------------------------------- | | `entity_id` | no | Target a specific media player. For example `media_player.spotify`| -| `shuffle` | no | `true`/`false` for enabling/disabling shuffle | +| `shuffle` | no | `true`/`false` for enabling/disabling shuffle | + + diff --git a/source/_components/media_player.monoprice.markdown b/source/_components/media_player.monoprice.markdown new file mode 100644 index 00000000000..7487e75b1e8 --- /dev/null +++ b/source/_components/media_player.monoprice.markdown @@ -0,0 +1,49 @@ +--- +layout: page +title: "Monoprice 6-Zone Amplifier" +description: "Instructions on how to integrate Monoprice 6-Zone Home Audio Controller into Home Assistant." +date: 2017-10-02 11:45 +sidebar: true +comments: false +sharing: true +footer: true +logo: monoprice.svg +ha_category: Media Player +ha_release: 0.56 +ha_iot_class: "Local Polling" +--- + +The `monoprice` platform allows you to control [Monoprice 6-Zone Amplifier](https://www.monoprice.com/product?p_id=10761) using a serial connection. + +To add a Monoprice device to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +media_player: + - platform: monoprice + port: /dev/ttyUSB0 + zones: + 11: + name: Main Bedroom + 12: + name: Living Room + 13: + name: Kitchen + 14: + name: Bathroom + 15: + name: Dining Room + 16: + name: Guest Bedroom + sources: + 1: + name: Sonos + 5: + name: Chromecast +``` + +Configuration variables: + +- **port** (*Required*): The serial port to which Monoprice amplifier is connected +- **zones** (*Required*): This is the list of zones available. Valid zones are 11,12,13,14,15,16. In case multiple Monoprice devices are stacked together the list of valid zones is extended by 21,22,23,24,25,26 for the second device and 31,32,33,34,35,36 for the third device. Each zone must have a name assigned to it. +- **sources** (*Required*): The list of sources available. Valid source numbers are 1,2,3,4,5,6. Each source number corresponds to the input number on the Monoprice amplifier. Similar to zones, each source must have a name assigned to it. diff --git a/source/_components/media_player.onkyo.markdown b/source/_components/media_player.onkyo.markdown index b8ba67fa4d7..e78075c01a5 100644 --- a/source/_components/media_player.onkyo.markdown +++ b/source/_components/media_player.onkyo.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Onkyo" -description: "Instructions how to integrate Onkyo receivers into Home Assistant." +description: "Instructions how to integrate Onkyo and some Pioneer receivers into Home Assistant." date: 2016-03-30 08:00 sidebar: true comments: false @@ -14,9 +14,9 @@ ha_iot_class: "Local Polling" --- -The `onkyo` platform allows you to control a [Onkyo receiver](http://www.onkyo.com/) from Home Assistant. +The `onkyo` platform allows you to control a [Onkyo](http://www.onkyo.com/) and some recent [Pioneer](http://www.pioneerelectronics.com) receivers from Home Assistant. Please be aware that you need to enable "Network Standby" for this component to work in your Hardware. -To add an Onkyo receiver to your installation, add the following to your `configuration.yaml` file: +To add an Onkyo or Pioneer receiver to your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry diff --git a/source/_components/media_player.panasonic_viera.markdown b/source/_components/media_player.panasonic_viera.markdown index aa3c4edcc88..38cf5f1f8bd 100644 --- a/source/_components/media_player.panasonic_viera.markdown +++ b/source/_components/media_player.panasonic_viera.markdown @@ -23,6 +23,10 @@ Currently known supported models: - TX-55CX700E - TX-49DX650B - TX-50DX700B +- TX-L42ET50 +- TX-P50GT60E +- TX-65EXW784 +- TX-32AS520E If your model is not on the list then give it a test, if everything works correctly then add it to the list on [GitHub](https://github.com/home-assistant/home-assistant.io). diff --git a/source/_components/media_player.pandora.markdown b/source/_components/media_player.pandora.markdown index bcddae6bde7..5f0098cff83 100644 --- a/source/_components/media_player.pandora.markdown +++ b/source/_components/media_player.pandora.markdown @@ -19,12 +19,18 @@ If you have a Pandora account, you can control it from Home Assistant with this ### {% linkable_title Installation of Pianobar %} -This media player uses the [Pianobar command-line Pandora client](https://github.com/PromyLOPh/pianobar), which you have to install separately. This can be done on a Raspberry Pi 2 with Raspbian Jesse as follows . _(Note: Other platforms may have different installation processes)_ +This media player uses the [Pianobar command-line Pandora client](https://github.com/PromyLOPh/pianobar), which you have to install separately. This can be done on a Raspberry Pi 2/3 with Raspbian Jessie as follows . _(Note: Other platforms may have different installation processes)_ -Install the following dependencies: +The version of pianobar that comes with Jessie has a bug, so you have to build a more recent version. The latest version depends on a recent version of libraries associated with ffmpeg, so you should make sure you go through the backport process documented in [The FFmpeg component](https://home-assistant.io/components/ffmpeg/) before doing this. Install the following basic dependencies: ```bash -$ sudo apt-get install git libao-dev libgcrypt11-dev libfaad-dev libmad0-dev libjson0-dev make pkg-config libav-tools libavcodec-extra libavcodec-dev libcurl4-openssl-dev libavfilter-dev libavformat-dev +$ sudo apt-get install git libao-dev libgcrypt11-dev libfaad-dev libmad0-dev libjson0-dev make pkg-config libcurl4-openssl-dev +``` + +And now install the backported ffmpeg-related libraries (note that if you're using an older version of ffmpeg for other things on this machine, you may encounter issues after doings this): + +```bash +$ sudo apt-get -t jessie-backports install libav-tools libavcodec-extra libavcodec-dev libavfilter-dev libavformat-dev ``` Now clone the Pianobar repo and build pianobar: diff --git a/source/_components/media_player.pioneer.markdown b/source/_components/media_player.pioneer.markdown index 720241193d9..66086c5ded3 100644 --- a/source/_components/media_player.pioneer.markdown +++ b/source/_components/media_player.pioneer.markdown @@ -14,7 +14,7 @@ ha_release: 0.19 ha_iot_class: "Local Polling" --- -The `pioneer` platform allows you to control Pioneer Network Receivers. +The `pioneer` platform allows you to control Pioneer Network Receivers. Please note, however, that the more recent Pioneer models work with [Onkyo](/components/media_player.onkyo/) platform instead. To add a Pioneer receiver to your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/media_player.plex.markdown b/source/_components/media_player.plex.markdown index f7184f07a68..ddaf3a611bf 100644 --- a/source/_components/media_player.plex.markdown +++ b/source/_components/media_player.plex.markdown @@ -17,7 +17,7 @@ ha_iot_class: "Local Polling" The `plex` platform allows you to connect a [Plex Media Server](https://plex.tv) to Home Assistant. It will allow you to control media playback and see the current playing item. -## Setup +## {% linkable_title Setup %} The preferred way to setup the Plex platform is by enabling the [discovery component](/components/discovery/) which requires GDM enabled on your Plex server. @@ -29,6 +29,8 @@ If your Plex server has local authentication enabled or multiple users defined, If you don't know your token, see [Finding your account token / X-Plex-Token](https://support.plex.tv/hc/en-us/articles/204059436). +If your server enforces SSL connections, write "`on`" or "`true`" in the _"Use SSL"_ field. If it does not have a valid SSL certificate available but you still want to use it, write "`on`" or "`true`" in the _"Do not verify SSL"_ field as well. +
+Vizio SmartCast service is accessible through HTTPS with self-signed certificate. If you have low LOGLEVEL in your Home Assistant configuration, you'll see a lot of warnings like this: +`InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised.` + +You can adjust the log level for `media_player` components with the [logger](https://home-assistant.io/components/logger/) component, or if you need to keep a low log level for `media_player` you could proxy calls to your TV through an NGINX reverse proxy. +
diff --git a/source/_components/media_player.webostv.markdown b/source/_components/media_player.webostv.markdown index 0da2e8b44fc..3775ae8260c 100644 --- a/source/_components/media_player.webostv.markdown +++ b/source/_components/media_player.webostv.markdown @@ -15,7 +15,16 @@ ha_release: 0.18 The `webostv` platform allows you to control a [LG](http://www.lg.com/) webOS Smart TV. -When the TV is first connected, you will need to accept Home Assistant on the TV to allow communication. +### {% linkable_title Setup %} + +To begin with enable *LG Connect Apps* feature in *Network* settings of the TV [instructions](http://www.lg.com/uk/support/product-help/CT00008334-1437131798537-others). + +Once basic configuration is added to your `configuration.yaml` *Configuration* card should prompt on your HA's States. Follow the instructions and accept pairing request on your TV. + +Pairing information will be saved to the `filename:` provided in configuration; this process is IP sensitive, in case the IP address of your TV would change in future. + + +### {% linkable_title Configuration %} To add a TV to your installation, add the following to your `configuration.yaml` file: @@ -28,14 +37,14 @@ media_player: Configuration variables: - **host** (*Optional*): The IP of the LG webOS Smart TV, e.g. `192.168.0.10`. -- **mac** (*Optional*): The MAC address of the TV, e.g. `C8:08:E9:99:99:1A`. +- **turn_on_action** (*Optional*): Defines an [action](/docs/automation/action/) to turn the TV on. - **name** (*Optional*): The name you would like to give to the LG webOS Smart TV. +- **timeout** (*Optional*): The timeout for connections to the TV in seconds. - **filename** (*Optional*): The filename where the pairing key with the TV should be stored. This path is relative to Home Assistant's config directory. It defaults to `webostv.conf`. - **customize** array (*Optional*): List of options to customize. - - ***sources** array (*Optional*): List of hardware inputs. + - ***sources** array (*Optional*): List of hardware and webOS App inputs. -If you do not specify `host:`, all LG webOS Smart TVs within your network will be auto-discovered if they use the default name setting of `[LG] webOS TV`. -Home Assistant is able to turn on a LG webOS Smart TV if you specify its MAC address with `mac:`. Some models require the **Mobile TV On** setting and/or a wired network connection to use Wake-on-LAN. +If you do not specify `host:`, all LG webOS Smart TVs within your network will be auto-discovered. A full configuration example will look like the sample below: @@ -44,9 +53,13 @@ A full configuration example will look like the sample below: media_player: - platform: webostv host: 192.168.0.10 - mac: C8:08:E9:99:99:1A - name: Living Room TV + name: Living Room TV + timeout: 5 filename: webostv.conf + turn_on_action: + service: persistent_notification.create + data: + message: "Turn on action" customize: sources: - livetv @@ -54,3 +67,32 @@ media_player: - makotv - netflix ``` +** avoid using `[ ]` in the `name:` of your device. + + +*Turn On Action* + +Home Assistant is able to turn on a LG webOS Smart TV if you specify an action, like HDMI-CEC or WakeOnLan. + +Common for webOS 3.0 and higher would be to use WakeOnLan feature. +To use this feature your TV should be connected to your network via Ethernet rather than Wireless and you should enable *LG Connect Apps* feature in *Network* settings of the TV [instructions](http://www.lg.com/uk/support/product-help/CT00008334-1437131798537-others) (or *Mobile App* in *General* settings for older models) (*may vary by version). + +```yaml +# Example configuration.yaml entry +wake_on_lan: # enables `wake_on_lan` domain + +media_player: + - platform: webostv + host: 192.168.0.10 + #other settings + turn_on_action: + service: wake_on_lan.send_magic_packet + data: + mac: B4:E6:2A:1E:11:0F +``` +Any other [actions](/docs/automation/action/) to power on the device can be configured. + + +*Sources* + +To obtain complete list of available sources currently configured on the TV, once the webOS TV is configured and linked, while its powered on head to the **Developer Tools** > **States**, find your `media_player.Not all features of MySensors 2.0 are yet supported by Home Assistant. As more features are added, they will be described here in the documentation. Go to the MySensors platform pages under "related components" to see what message types are currently supported. @@ -81,7 +142,7 @@ The MQTT gateway requires MySensors version 2.0 and only the MQTT client gateway Present a MySensors sensor or actuator, by following these steps: -1. Connect the serial gateway to your computer or the ethernet or MQTT gateway to your network. +1. Connect the serial gateway to your computer or the Ethernet or MQTT gateway to your network. 2. Configure the MySensors component in `configuration.yaml`. 3. Start hass. 4. Write and upload your MySensors sketch to the sensor. Make sure you: @@ -172,7 +233,23 @@ void receive(const MyMessage &message) { ### {% linkable_title Heartbeats %} -Sending a heartbeat from the MySensors device to Home Assistant activates the SmartSleep functionality in Home Assistant. This means that messages are buffered and only sent to the device upon receiving a heartbeat from the device. State changes are stored so that only the last requested state change is sent to the device. Other types of messages are queued in a FIFO queue. SmartSleep is useful for battery powered actuators that are waiting for commands. See the MySensors library API for information on how to send heartbeats and sleep device. +Sending a heartbeat from the MySensors device to Home Assistant activates the SmartSleep functionality in Home Assistant. This means that messages are buffered and only sent to the device upon receiving a heartbeat from the device. State changes are stored so that only the last requested state change is sent to the device. Other types of messages are queued in a FIFO queue. SmartSleep is useful for battery powered actuators that are waiting for commands. See the MySensors library API for information on how to send heartbeats and sleep device. + +### {% linkable_title Message validation %} + +Messages sent to or from Home Assistant from or to a MySensors device will be validated according to the MySensors [serial API](https://www.mysensors.org/download/serial_api_20). If a message doesn't pass validation, it will be dropped and not be passed forward either to or from Home Assistant. Make sure you follow the serial API for your version of MySensors when writing your Arduino sketch. + +If you experience dropped messages or that a device is not added to Home Assistant, please turn on debug logging for the `mysensors` component and the `mysensors` package. +```yaml +logger: + default: info + logs: + homeassistant.components.mysensors: debug + mysensors: debug +``` +The log should inform you of messages that failed validation or if a child value is missing that is required for a certain child type. Note that the log will log all possible combinations of platforms for a child type that failed validation. It is normal to see some platforms fail validation if the child type supports multiple platforms and your sketch doesn't send all corresponding value types. Eg. the S_BARO child type supports both V_PRESSURE and V_FORECAST value types. If you only send a V_PRESSURE value, an S_BARO entity with V_PRESSURE value will be set up for the sensor platform. But the log will inform of a sensor platform that failed validation due to missing V_FORECAST value type for the S_BARO child. Home Assistant will log failed validations of child values at warning level if one required value type for a platform has been received, but other required value types are missing. Most failed validations are logged at debug level. + +Message validation was introduced in version 0.52 of Home Assistant. Visit the [library api][MySensors library api] of MySensors for more information. diff --git a/source/_components/namecheapdns.markdown b/source/_components/namecheapdns.markdown new file mode 100644 index 00000000000..3331080fa93 --- /dev/null +++ b/source/_components/namecheapdns.markdown @@ -0,0 +1,46 @@ +--- +layout: page +title: "NamecheapDNS" +description: "Keep your namecheap dynamic DNS up to date" +date: 2017-10-11 20:16 +sidebar: true +comments: false +sharing: true +footer: true +logo: namecheap.png +ha_category: Utility +featured: false +ha_release: 0.56 +--- + +With the `namecheapdns` component you can automatically update your dynamic DNS entry at [namecheapdns](https://www.namecheap.com/store/domains/freedns/). + +
+Namecheap only supports IPv4 adresses to update. +
+ +To use the component in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +namecheapdns: + domain: example.com + password: YOUR_PASSWORD +``` + +{% configuration %} + host: + description: The host part or "subdomain" part you want to update. + required: false + type: string + domain: + description: Your namecheap TLD (example.com). + required: true + type: string + password: + description: The namecheap "Dynamic DNS Password" you can find under the "Advanced DNS" tab. + required: true + type: string +{% endconfiguration %} + +See the [How do I set up a Host for Dynamic DNS?](https://www.namecheap.com/support/knowledgebase/article.aspx/43/11/how-do-i-set-up-a-host-for-dynamic-dns) for further instructions diff --git a/source/_components/nest.markdown b/source/_components/nest.markdown index 389bc14d1e8..b3d376c50fc 100644 --- a/source/_components/nest.markdown +++ b/source/_components/nest.markdown @@ -25,7 +25,7 @@ The Nest component is the main component to integrate all [Nest](https://nest.co 5. Click "[Create New Product](https://developers.nest.com/products/new)" 6. Fill in details: - Product name must be unique. We recommend [email] - Home Assistant. - - The description, users, urls can all be anything you want. + - The description, users, URLs can all be anything you want. - Leave the "Redirect URI" Field blank 7. For permissions check every box and if it's an option select the read/write option. - The description requires a specific format to be accepted. @@ -34,6 +34,8 @@ The Nest component is the main component to integrate all [Nest](https://nest.co 9. Once the new product page opens the "Product ID" and "Product Secret" are located on the right side. These will be used as `client_id` and `client_secret` below. 10. Once Home Assistant is started, a configurator will pop up asking you to log into your Nest account and copy a PIN code into Home Assistant. +Connecting to the Nest Developer API requires outbound port 8553 on your firewall. The configuration will fail if this is not accessible. + ### {% linkable_title Configuration %} ```yaml @@ -58,3 +60,29 @@ Configuration variables: - **client_id** (*Required*): Your Nest developer client ID. - **client_secret** (*Required*): Your Nest developer client secret. - **structure** (*Optional*): The structure or structures you would like to include devices from. If not specified, this will include all structures in your Nest account. + +### {% linkable_title Services %} + +Currently there is a single `nest.set_mode` service available to switch between +"away" and "home" modes. This service requires a `home_mode` param and has an +optional `structure` param. + +```yaml +# Example script to set away, no structure specified so will execute for all +set_nest_away: + sequence: + - service: nest.set_mode + data: + home_mode: away +``` + +```yaml +# Example script to set home, structure specified +set_nest_home: + sequence: + - service: nest.set_mode + data: + home_mode: home + structure: + - Building +``` diff --git a/source/_components/netatmo.markdown b/source/_components/netatmo.markdown index e502e50e4fc..a7b6a30a0c0 100644 --- a/source/_components/netatmo.markdown +++ b/source/_components/netatmo.markdown @@ -21,23 +21,23 @@ To enable the Netatmo component, add the following lines to your `configuration. ```yaml # Example configuration.yaml entry netatmo: - api_key: YOUR_API_KEY - secret_key: YOUR_SECRET_KEY + api_key: YOUR_CLIENT_ID + secret_key: YOUR_CLIENT_SECRET username: YOUR_USERNAME password: YOUR_PASSWORD ``` Configuration variables: -- **api_key** (*Required*): The API key for your Netatmo account. -- **secret_key** (*Required*): Your Netatmo secret key +- **api_key** (*Required*): The `client id` form your Netatmo app. +- **secret_key** (*Required*): The `client secret` form your Netatmo app. - **username** (*Required*): Username for the Netatmo account. - **password** (*Required*): Password for the Netatmo account. - **discovery** (*Optional)*: Whether to discover Netatmo devices. Set it to False, if you want to choose which Netatmo device you want to add (default True). ### {% linkable_title Get API and Secret Key %} -To get your API credentials, you have to declare a new application in the [NetAtmo Developer Page](https://dev.netatmo.com/). Sign in using your username and password from your regular Netatmo account. +To get your API credentials, you have to declare a new application in the [Netatmo Developer Page](https://dev.netatmo.com/). Sign in using your username and password from your regular Netatmo account. Click on 'Create an App' at the top of the page.
@@ -49,12 +49,12 @@ You have to fill the form, but only two fields are required : Name and Descripti
-The Home Assistant Netatmo platform has only be tested with the classic indoor, outdoor module and rainmeter. There is no support for the windmeter module at this time because developers does not own these modules. +The Home Assistant Netatmo platform has only be tested with the classic indoor, outdoor module and rain meter. There is no support for the wind meter module at this time because developers does not own these modules.
diff --git a/source/_components/no_ip.markdown b/source/_components/no_ip.markdown new file mode 100644 index 00000000000..f070e2b4d5f --- /dev/null +++ b/source/_components/no_ip.markdown @@ -0,0 +1,45 @@ +--- +layout: page +title: "NO-IP.com" +description: "Keep your computer registered with the NO-IP.com dynamic DNS." +date: 2017-10-27 12:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: noip.png +ha_category: Utility +ha_release: 0.57 +--- + +With the `no_ip` component you can keep your [NO-IP.com](https://www.noip.com) record up to date. + +To use the component in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +no_ip: + domain: subdomain.domain.com + username: YOUR_USERNAME + password: YOUR_PASSWORD +``` + +{% configuration %} + domain: + description: Your FQDN. + required: true + type: string + username: + description: The generated username for this DDNS record. + required: true + type: string + password: + description: The generated password for this DDNS record. + required: true + type: string + timeout: + description: Timeout (in seconds) for the API calls. + required: false + type: number + default: 10 +{% endconfiguration %} diff --git a/source/_components/notify.ciscospark.markdown b/source/_components/notify.ciscospark.markdown index f9b915b2cec..96bc67c4968 100644 --- a/source/_components/notify.ciscospark.markdown +++ b/source/_components/notify.ciscospark.markdown @@ -12,22 +12,28 @@ ha_category: Notifications ha_release: "0.40" --- -The `Cisco Spark` platform allows you to deliver notifications from Home Assistant to [Cisco Spark](https://ciscospark.com/). +The `ciscospark` notification platform allows you to deliver notifications from Home Assistant to [Cisco Spark](https://ciscospark.com/). -To use this notification platform you need to get a developer token. To obtain a token visit [Spark for Devleopers](https://developer.ciscospark.com/index.html) +To use this notification platform you need to get a developer token. To obtain a token visit [Spark for Developers](https://developer.ciscospark.com/index.html) -At this time you also need to specify the `Cisco Spark` `roomid`. The `roomid` can also be found at [Spark for Devleopers](https://developer.ciscospark.com/index.html). -Just look in the Doumentation under Rooms. +At this time you also need to specify the `Cisco Spark` `roomid`. The `roomid` can also be found at [Spark for Developers](https://developer.ciscospark.com/index.html). Just look in the Documentation under Rooms. -To enable the `Cisco Spark` notification in your installation, add the following to your `configuration.yaml` file: +To enable the Cisco Spark notification in your installation, add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry notify: - name: NOTIFIER_NAME platform: ciscospark - token:
+
+
+
+
+
+
+Don't forget to [whitelist external directories](/docs/configuration/basic/), so Home Assistant has access to them. +
diff --git a/source/_components/notify.rocketchat.markdown b/source/_components/notify.rocketchat.markdown new file mode 100644 index 00000000000..2c014c30546 --- /dev/null +++ b/source/_components/notify.rocketchat.markdown @@ -0,0 +1,56 @@ +--- +layout: page +title: "Rocket.Chat" +description: "Instructions on how to add Rocket.Chat notifications to Home Assistant." +date: 2017-09-23 20:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: rocketchat.png +ha_category: Notifications +ha_release: 0.56 +--- + + +The `rocketchat` platform allows you to send messages to your [Rocket.Chat](https://rocket.chat/) instance from Home Assistant. + +To add Rocket.Chat to your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +notify: + - platform: rocketchat + name: NOTIFIER_NAME + url: https://rocketchat.example.com + username: USERNAME + password: PASSWORD + room: my-awesome-room +``` + +- **name** (*Optional*): Name displayed in the frontend. The notifier will bind to the service `notify.NOTIFIER_NAME`. +- **url** (*Required*): The URL of your Rocket.Chat instance. +- **username** (*Required*): The Rocket.Chat username. +- **password** (*Required*): The Rocker.Chat password. +- **room** (*Required*): The chat room name to send messages to. + +### {% linkable_title script.yaml example %} + +```yaml +rocketchat_notification: + sequence: + - service: notify.NOTIFIER_NAME + data: + message: "Message to Rocket.Chat from Home Assistant!" + data: + emoji: ":smirk:" +``` + +#### {% linkable_title Message variables %} + +- **message** (*Required*): Message to be displayed. +- **data** (*Optional*): Dictionary containing any of the variables defined in the + [Rocket.Chat docs](https://rocket.chat/docs/developer-guides/rest-api/chat/postmessage#message-object-example) + +To use notifications, please see the [getting started with automation page](/getting-started/automation/). + diff --git a/source/_components/notify.simplepush.markdown b/source/_components/notify.simplepush.markdown index bde576aa14d..4747d9a5f48 100644 --- a/source/_components/notify.simplepush.markdown +++ b/source/_components/notify.simplepush.markdown @@ -25,10 +25,28 @@ notify: device_key: ABCDE ``` -Configuration variables: - -- **name** (*Optional*): Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. -- **device_key** (*Required*): The device key of your device. +{% configuration %} + name: + description: Setting the optional parameter `name` allows multiple notifiers to be created. The default value is `notify`. The notifier will bind to the service `notify.NOTIFIER_NAME`. + required: false + type: string + device_key: + description: The device key of your device. + required: true + type: string + event: + description: The event for the events. + required: false + type: string + password: + description: The password of the encryption used by your device. + required: inclusive + type: string + salt: + description: The salt used by your device. + required: inclusive + type: string +{% endconfiguration %} To test if the service works, just send a message with `curl` from the command-line. diff --git a/source/_components/notify.slack.markdown b/source/_components/notify.slack.markdown index d319a37438c..1eb10e8189a 100644 --- a/source/_components/notify.slack.markdown +++ b/source/_components/notify.slack.markdown @@ -38,7 +38,49 @@ Configuration variables: - **api_key** (*Required*): The Slack API token to use for sending Slack messages. - **default_channel** (*Required*): The default channel to post to if no channel is explicitly specified when sending the notification message. - **username** (*Optional*): Setting username will allow Home Assistant to post to Slack using the username specified. By default not setting this will post to Slack using the user account or botname that you generated the api_key as. -- **icon** (*Optional*): Use one of the Slack emoji's as an Icon for the supplied username. Slack uses the standard emoji sets used [here](http://www.webpagefx.com/tools/emoji-cheat-sheet/). +- **icon** (*Optional*): Use one of the Slack emojis as an Icon for the supplied username. Slack uses the standard emoji sets used [here](http://www.webpagefx.com/tools/emoji-cheat-sheet/). + +### {% linkable_title Slack service data %} + +The following attributes can be placed `data` for extended functionality. + +| Service data attribute | Optional | Description | +| ---------------------- | -------- | ----------- | +| `file` | yes | Groups the attributes for file upload. If present, either `url` or `path` have to be provided. +| `path ` | yes | Local path of file, photo etc to post to slack. Is placed inside `file`. +| `url` | yes | URL of file, photo etc to post to slack. Is placed inside `file`. +| `username` | yes | Username if the url requires authentication. Is placed inside `file`. +| `password` | yes | Password if the url requires authentication. Is placed inside `file`. +| `auth` | yes | If set to `digest` HTTP-Digest-Authentication is used. If missing HTTP-BASIC-Authentication is used. Is placed inside `file`. + +Example for posting file from URL +```json +{ + "message":"Message that will be added as a comment to the file.", + "title":"Title of the file.", + "data":{ + "file":{ + "url":"http://[url to file, photo, security camera etc]", + "username":"optional user, if necessary", + "password":"optional password, if necessary", + "auth":"digest" + } + } +} +``` +Example for posting file from local path +```json +{ + "message":"Message that will be added as a comment to the file.", + "title":"Title of the file.", + "data":{ + "file":{ + "path":"/path/to/file.ext" + } + } +} +``` +Please note that `path` is validated against the `whitelist_external_dirs` in the `configuration.yaml`. To use notifications, please see the [getting started with automation page](/getting-started/automation/). diff --git a/source/_components/notify.smtp.markdown b/source/_components/notify.smtp.markdown index f03d7edf2e2..533129e36cb 100644 --- a/source/_components/notify.smtp.markdown +++ b/source/_components/notify.smtp.markdown @@ -32,11 +32,11 @@ Configuration variables: - **sender** (*Required*): E-mail address of the sender. - **recipient** (*Required*): E-mail address of the recipient of the notification. This can be a recipient address or a list of addresses for multiple recipients. - **server** (*Optional*): SMTP server which is used to end the notifications. Defaults to `localhost`. -- **port** (*Optional*): The port that the SMTP server is using. Defaults to 25. +- **port** (*Optional*): The port that the SMTP server is using. Defaults to 587. - **timeout** (*Optional*): The timeout in seconds that the SMTP server is using. Defaults to 5. - **username** (*Optional*): Username for the SMTP account. - **password** (*Optional*): Password for the SMTP server that belongs to the given username. If the password contains a colon it need to be wrapped in apostrophes. -- **starttls** (*Optional*): Enables STARTTLS, eg. True or False. Defaults to False. +- **encryption** (*Optional*): Set mode for encryption, `starttls`, `tls` or `none`. Defaults to `starttls`. - **sender_name** (*Optional*): Sets a custom 'sender name' in the emails headers (*From*: Custom name+Since Home Assistant version 0.48 you have to [whitelist the source folder](/docs/configuration/basic/) of the file you want to include in the notification. + +```yaml +configuration.yaml +... +homeassistant: + whitelist_external_dirs: + - /tmp + - /home/kenji/data +``` +
+ ### {% linkable_title Document support %} diff --git a/source/_components/notify.twitter.markdown b/source/_components/notify.twitter.markdown index fe5c5d657b5..f63810e68eb 100644 --- a/source/_components/notify.twitter.markdown +++ b/source/_components/notify.twitter.markdown @@ -13,7 +13,7 @@ ha_release: 0.12 --- -The `twitter` platform uses [Twitter](https://twitter.com) to delivery notifications from Home Assistant. +The `twitter` platform uses [Twitter](https://twitter.com) to deliver notifications from Home Assistant. Go to [Twitter Apps](https://apps.twitter.com/app/new) and create an application. Visit "Keys and Access Tokens" of the application to get the details ("Consumer Key", "Consumer Secret", "Access Token" and "Access Token Secret" which needs to be generated). diff --git a/source/_components/notify.xmpp.markdown b/source/_components/notify.xmpp.markdown index a9d0595e5f1..db062932d04 100644 --- a/source/_components/notify.xmpp.markdown +++ b/source/_components/notify.xmpp.markdown @@ -34,6 +34,8 @@ Configuration variables: - **password** (*Required*): The password for your given Jabber account. - **recipient** (*Required*): The Jabber ID (JID) that will receive the messages. - **tls** (*Optional*): Allow to disable TLS. Defaults to `true`. +- **verify** (*Optional*): Allow disabling SSL certificate validity check (e.g., self-signed certificate). Defaults to `true`. +- **room** (*Optional*): Room's name (e.g., example@conference.jabber.org). If set, send a message to chatroom instead of the sender. All Jabber IDs (JID) must include the domain. Make sure that the password matches the account provided as sender. diff --git a/source/_components/notify.yessssms.markdown b/source/_components/notify.yessssms.markdown new file mode 100644 index 00000000000..e320de496a7 --- /dev/null +++ b/source/_components/notify.yessssms.markdown @@ -0,0 +1,47 @@ +--- +layout: page +title: "Yesss SMS" +description: "Instructions how to add user notifications to Home Assistant." +date: 2017-10-27 16:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: yesssat.png +ha_category: Notifications +ha_release: 0.57 +--- + +The `yessssms` platform is using the Austrian mobile operator [Yesss.at](https://yesss.at) to send SMS via its web-site. + ++Regular charges apply and a contract or prepaid plan is needed. +
+ ++Do not use this for high frequency notifications. The web-SMS page is rate limited and sending more than 45 SMS/h might get you blocked. +
+ +You can send to any number, but your phone number will appear as sender. + +To enable SMS notifications in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +notify: + - name: NOTIFIER_NAME + platform: yessssms + username: YOUR_PHONE_NUMBER + password: YOUR_PASSWORD + recipient: PHONE_NUMBER_TO_NOTIFY +``` + +Configuration variables: + +- **username** (*Required*): This is your login name (usually your phone number). Veryfy that you can use your credentials on the Yesss.at website. +- **password** (*Required*): This is the password you use to login to Yesss.at. +- **recipient** (*Required*): This is the phone number you want to send the SMS notification to. + ++Verify that your credentials work on [Yesss.at's website](https://yesss.at). Using the wrong credentials three times in a row will get you blocked for one hour. +
diff --git a/source/_components/octoprint.markdown b/source/_components/octoprint.markdown index 17b9f1a5935..192d5d9d9a3 100644 --- a/source/_components/octoprint.markdown +++ b/source/_components/octoprint.markdown @@ -23,12 +23,14 @@ To get started with the OctoPrint API, please follow the directions on their [si octoprint: host: YOUR_OCTOPRINT_HOST api_key: YOUR_API_KEY + bed: false + number_of_tools: 1 ``` Configuration variables: - **host** (*Required*): IP address or hostname of Octoprint host. - **api_key** (*Required*): The retrieved api key. +- **bed** (*Optional*): If the printer has a heated bed. +- **number_of_tools** (*Optional*): Number of temperature adjustable tools. i.e. nozzle. - -**NOTE** If your 3D printer isn't connected to the OctoPrint server during the startup of Home Assistant this component will fail to load. diff --git a/source/_components/panel_custom.markdown b/source/_components/panel_custom.markdown index 1ed44576e58..49775f28557 100644 --- a/source/_components/panel_custom.markdown +++ b/source/_components/panel_custom.markdown @@ -18,7 +18,7 @@ The `panel_custom` support allows you to add additional panels to your Home Assi To enable customized panels in your installation, add the following to your `configuration.yaml` file: ```yaml -# Example configuration.yaml entry +# Example configuration.yaml entry for https://github.com/home-assistant/example-custom-config/blob/master/panels/hello_world.html panel_custom: - name: todomvc sidebar_title: TodoMVC @@ -26,7 +26,7 @@ panel_custom: url_path: my-todomvc webcomponent_path: /home/hass/hello.html config: - hello: world + who: world ``` Configuration variables: diff --git a/source/_components/pilight.markdown b/source/_components/pilight.markdown index 8a2a10b1f5f..2b7f8577019 100644 --- a/source/_components/pilight.markdown +++ b/source/_components/pilight.markdown @@ -15,9 +15,9 @@ ha_iot_class: "Local Push" [Pilight](https://www.pilight.org/) is a modular and open source solution to communicate with 433 MHz devices and runs on various small form factor computers. A lot of common [protocols](https://wiki.pilight.org/doku.php/protocols) are already available. -This pilight hub connects to the [pilight-daemon](https://wiki.pilight.org/doku.php/pdaemon) via a socket connection to receive and send codes. Thus home assistant does not have to run on the computer in charge of the RF communication. +This pilight hub connects to the [pilight-daemon](https://wiki.pilight.org/doku.php/pdaemon) via a socket connection to receive and send codes. Thus Home Assistant does not have to run on the computer in charge of the RF communication. -The received and supported RF codes are put on the event bus of home assistant and are therefore directly usable by other components (e.g. automation). Additionally a send service is provided to send RF codes. +The received and supported RF codes are put on the event bus of Home Assistant and are therefore directly usable by other components (e.g. automation). Additionally a send service is provided to send RF codes. To integrate pilight into Home Assistant, add the following section to your `configuration.yaml` file: @@ -35,7 +35,7 @@ Configuration variables: - **send_delay** (*Optional*): You can define a send delay as a fraction of seconds if you experience transmission problems when you try to switch multiple switches at once. This can happen when you use a [pilight USB Nano](https://github.com/pilight/pilight-usb-nano) as hardware and switches a whole group of multiple switches on or off. Tested values are between 0.3 and 0.8 seconds depending on the hardware. - **whitelist** (*Optional*): You can define a whitelist to prevent that too many unwanted RF codes (e.g. the neighbours weather station) are put on your HA event bus. All defined subsections have to be matched. A subsection is matched if one of the items are true. -In this example only received RF codes using a daycom or intertechno protocol are put on the event bus and only when the device id is 42. For more possible settings please look at the receiver section of the pilight [API](https://www.pilight.org/development/api/). +In this example only received RF codes using a daycom or Intertechno protocol are put on the event bus and only when the device id is 42. For more possible settings please look at the receiver section of the pilight [API](https://www.pilight.org/development/api/). A full configuration sample could look like the sample below: diff --git a/source/_components/plant.markdown b/source/_components/plant.markdown index 2b77eee4e7e..b1c5ec976bc 100644 --- a/source/_components/plant.markdown +++ b/source/_components/plant.markdown @@ -33,11 +33,11 @@ Configuration variables: - **entity_id** (*Required*): Set by you and is used by the component as the `entity_id`. - **sensors** (*Required*): - - **moisture** (*Optional*): Moisture of the plant. Meassured in %. Can have a min and max value set optionally. - - **battery** (*Optional*): Battery level of the plant sensor. Meassured in %. Can only have a min level set optionally. - - **temperature:** (*Optional*): Temperaure of the plant. Meassured in degrees Celcius. Can have a min and max value set optionally. - - **conductivity:** (*Optional*): Conductivity of the plant. Meassured in µS/cm. Can have a min and max value set optionally. - - **brightness:** (*Optional*): Light exposure of the plant. Meassured in Lux. Can have a min and max value set optionally. + - **moisture** (*Optional*): Moisture of the plant. Measured in %. Can have a min and max value set optionally. + - **battery** (*Optional*): Battery level of the plant sensor. Measured in %. Can only have a min level set optionally. + - **temperature:** (*Optional*): Temperature of the plant. Measured in degrees Celsius. Can have a min and max value set optionally. + - **conductivity:** (*Optional*): Conductivity of the plant. Measured in µS/cm. Can have a min and max value set optionally. + - **brightness:** (*Optional*): Light exposure of the plant. Measured in Lux. Can have a min and max value set optionally. - **min_moisture** (*Optional*): Minimum moisture level before triggering a problem. Typical value: 20 - **max_moisture** (*Optional*): Maximum moisture level before triggering a problem. Typical value: 60 - **min_battery** (*Optional*): Minimum battery level before triggering a problem. Typical value: 20 @@ -50,11 +50,11 @@ Configuration variables: ## {% linkable_title Examples %} ### Using plain MQTT sensor to get the data -This is a practial example that uses a multiple of `MQTT sensors` to supply the readings used by the `plant` sensor. +This is a practical example that uses a multiple of `MQTT sensors` to supply the readings used by the `plant` sensor. Another good source of this data would be the [Mi Flora](https://home-assistant.io/components/sensor.miflora/) component. -If the sensor data within the the min/max values the status will be `ok`, if not the status will be `problem`. You can use this to trigger a notification, if there is a problem with your plant. Of course you can only monitor attributes of your plant, where the sensor is configured and is providing the data. +If the sensor data is within the min/max values the status will be `ok`, if not the status will be `problem`. You can use this to trigger a notification, if there is a problem with your plant. Of course you can only monitor attributes of your plant, where the sensor is configured and is providing the data. ## Data Source diff --git a/source/_components/prometheus.markdown b/source/_components/prometheus.markdown new file mode 100644 index 00000000000..ba6d65ba6c4 --- /dev/null +++ b/source/_components/prometheus.markdown @@ -0,0 +1,45 @@ +--- +layout: page +title: "Prometheus" +description: "Record events in Prometheus." +date: 2017-06-25 08:00 +sidebar: true +comments: false +sharing: true +logo: prometheus.png +footer: true +ha_category: "History" +ha_release: 0.49 +--- + +The `prometheus` component exposes metrics in a format which [Prometheus](https://prometheus.io/) can read. + +To use the `prometheus` component in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +prometheus: +``` + +Configuration variables: + +- **exclude** (*Optional*): Configure which components should be excluded from recording. + - **entities** (*Optional*): The list of entity ids to be excluded from recording. + - **domains** (*Optional*): The list of domains to be excluded from recording. +- **include** (*Optional*): Configure which components should be included in recordings. If set, all other entities will not be recorded. Values set by the **blacklist** option will prevail. + - **entities** (*Optional*): The list of entity ids to be included from recordings. + - **domains** (*Optional*): The list of domains to be included from recordings. + +You can then configure Prometheus to fetch metrics from Home Assistant by adding to its `scrape_configs` configuration. + +```yaml +# Example Prometheus scrape_configs entry + - job_name: 'hass' + scrape_interval: 60s + metrics_path: /api/prometheus + params: + api_password: ['PASSWORD'] + scheme: https + static_configs: + - targets: ['HOSTNAME:8123'] +``` diff --git a/source/_components/python_script.markdown b/source/_components/python_script.markdown index 4f950cbb7e0..48bd6a1a149 100644 --- a/source/_components/python_script.markdown +++ b/source/_components/python_script.markdown @@ -12,7 +12,16 @@ ha_category: Automation ha_release: 0.47 --- -This component allows you to write Python scripts that are exposed as services in Home Assistant. Each Python file created in the `- Note: Versions later than R44 adds support for Ikea Ansluta, Philips Living Colors Gen1, MySensors devices. + Note: Versions later than R44 add support for Ikea Ansluta, Philips Living Colors Gen1 and MySensors devices.
-A complete list of devices supported by RFLink can be found [here](http://www.nemcon.nl/blog2/devlist) +A complete list of devices supported by RFLink can be found [here](http://www.rflink.nl/blog2/devlist). This component is tested with the following hardware/software: @@ -40,8 +40,8 @@ Configuration variables: - **port** (*Required*): The path to RFLink USB/serial device or TCP port in TCP mode. - **host** (*Optional*): Switches to TCP mode, connects to host instead of to USB/serial. -- **wait_for_ack** (*Optional*): Wait for RFLink to ackowledge commands sent before sending new command (slower but more reliable). Defaults to `True` -- **ignore_devices** (*Optional*): List of devices id's to ignore. Supports wildcards (*) at the end. +- **wait_for_ack** (*Optional*): Wait for RFLink to acknowledge commands sent before sending new command (slower but more reliable). Defaults to `True` +- **ignore_devices** (*Optional*): List of device id's to ignore. Supports wildcards (*) at the end. - **reconnect_interval** (*Optional*): Time in seconds between reconnect attempts. Complete example: @@ -58,7 +58,7 @@ rflink: ### {% linkable_title TCP mode %} -TCP mode allows connect to a RFLink device over TCP/IP network. This is for example useful if placing the RFLink device next to the HA server is not optimal or desired (eg: bad reception). +TCP mode allows you to connect to an RFLink device over a TCP/IP network. This is useful if placing the RFLink device next to the HA server is not optimal or desired (eg: bad reception). To expose the USB/serial interface over TCP on a different host (Linux) the following command can be used: @@ -71,7 +71,7 @@ Other methods of exposing the serial interface over TCP are possible (eg: ESP826 Tested with Wifi serial bridge [esp-link V2.2.3](https://github.com/jeelabs/esp-link/releases/tag/v2.2.3) running on a NodeMCU (ESP8266 Wifi module) with ESP8266 TXD0 (pin D10) and RXD0 (pin D9) connected to Arduino MEGA 2560 RX (Pin 2) and TX (Pin 3) respectively.-Due to different logic levels, a voltage level shifter is required between the 3.3V NodeMCU and 5V Arduino MEGA 2560 pins. The BSS138 bidirectional logic level converter has been tested for serial pins and the [link](https://www.aliexpress.com/item/8CH-IIC-I2C-Logic-Level-Converter-Bi-Directional-Module-DC-DC-5V-to-3-3V-Setp/32238089139.html) is recommended for the CC2500 transceiver (used for Ikea Ansluta and Living Colors) +Due to different logic levels, a voltage level shifter is required between the 3.3V NodeMCU and 5V Arduino MEGA 2560 pins. The BSS138 bidirectional logic level converter has been tested for serial pins and the [link](https://www.aliexpress.com/item/8CH-IIC-I2C-Logic-Level-Converter-Bi-Directional-Module-DC-DC-5V-to-3-3V-Setp/32238089139.html) is recommended for the CC2500 transceiver (used for Ikea Ansluta and Philips Living Colors)
@@ -85,9 +85,26 @@ rflink: port: 1234 ``` +### {% linkable_title Adding devices Automatically %} + +In order to have your devices discovered automatically, you need to add the following to the configuration. +When pressing the button on the physical remote, RFLink detects the signal and the device should be added automatically to Home Assistant. + +```yaml +light: + - platform: rflink + automatic_add: true +switch: + - platform: rflink + automatic_add: true +sensor: + - platform: rflink + automatic_add: true +``` + ### {% linkable_title Ignoring devices %} -RFLink platform can be configured to completely ignore a device on a platform level. This is useful when you have neighbors which also use 433 Mhz technology. +The RFLink platform can be configured to completely ignore a device on a platform level. This is useful when you have neighbors which also use 433 MHz technology. For example: @@ -104,7 +121,9 @@ rflink: This configuration will ignore the button `1` of the `newkaku` device with ID `000001`, all devices of the `digitech` protocol and all switches of the `kaku` protocol device with codewheel ID `1`. -Wildcards only work at the end of the ID, not in the middle of front! +
+Wildcards only work at the end of the ID, not in the middle or front! +
### {% linkable_title Device support %} @@ -112,16 +131,16 @@ Even though a lot of devices are supported by RFLink, not all have been tested/i ### {% linkable_title Device Incorrectly Identified %} -If you find a device is recognized differently, with different protocols or the ON OFF is swapped or detected as two ON commands, it can be overcome with the RFlink 'RF Signal Learning' mechanism from RFLink Rev 46 (11 March 2017). [Link to further detail.](http://www.nemcon.nl/blog2/faq#RFFind) +If you find a device is recognized differently, with different protocols or the ON OFF is swapped or detected as two ON commands, it can be overcome with the RFLink 'RF Signal Learning' mechanism from RFLink Rev 46 (11 March 2017). [Link to further detail.](http://www.rflink.nl/blog2/faq#RFFind) -### {% linkable_title Technical overview %} +### {% linkable_title Technical Overview %} -- The`rflink` Python module a asyncio transport/protocol is setup that fires an callback for every (valid/supported) packet received by the RFLink gateway. -- This component uses this callback to distribute 'rflink packet events' over Home Assistant's bus which can be subscribed to by entities/platform implementations. -- The platform implementions take care of creating new devices (if enabled) for unsees incoming packet id's. -- Device entities take care of matching to the packet ID, interpreting and performing actions based on the packet contents. Common entitiy logic is maintained in this main component. +- The`rflink` Python module is a asyncio transport/protocol which is setup to fire a callback for every (valid/supported) packet received by the RFLink gateway. +- This component uses this callback to distribute 'rflink packet events' over [Home Assistant's event bus](https://home-assistant.io/docs/configuration/events/) which can be subscribed to by entities/platform implementations. +- The platform implementation takes care of creating new devices (if enabled) for unseen incoming packet ID's. +- Device entities take care of matching to the packet ID, interpreting and performing actions based on the packet contents. Common entity logic is maintained in this main component. -### {% linkable_title Debug logging %} +### {% linkable_title Debug Logging %} For debugging purposes or context when investigating issues you can enable debug logging for Rflink with the following config snippet: diff --git a/source/_components/rpi_pfio.markdown b/source/_components/rpi_pfio.markdown index 041693be588..51feb22b704 100644 --- a/source/_components/rpi_pfio.markdown +++ b/source/_components/rpi_pfio.markdown @@ -13,5 +13,6 @@ ha_release: 0.45 ha_iot_class: "Local Push" --- -The `rpi_pfio` component is the base for all related [PiFace Digital I/O (PFIO)](http://www.piface.org.uk/) platforms in Home Assistant. There is no setup needed for the component itself, for the platforms please check their corresponding pages. +The `rpi_pfio` component is the base for all related [PiFace Digital I/O (PFIO)](http://www.piface.org.uk/) platforms in Home Assistant. There is no setup needed for the component itself; for the platforms, please check their corresponding pages. +Set the jumpers on the PiFace board for address 0 (JP1: 1-2, JP2: 1-2). diff --git a/source/_components/rss_feed_template.markdown b/source/_components/rss_feed_template.markdown index 9dff1d5ffc5..804c3bbe4aa 100644 --- a/source/_components/rss_feed_template.markdown +++ b/source/_components/rss_feed_template.markdown @@ -1,7 +1,7 @@ --- layout: page title: "RSS feed template" -description: "Instructions how to setup an RSS feed for sensor information and other." +description: "Use this component to generate RSS feeds showing your latest data." date: 2017-04-11 20:42 sidebar: true comments: false @@ -12,17 +12,18 @@ ha_category: Front end ha_release: 0.44 --- -The `rss_feed_template` component can export any information from Home Assistant as static RSS feed. This can be used to display those information on several devices using RSS readers. While native apps for Home Assistant are not widely available, native RSS readers exists for almost any platform. - -E.g. on android, the app "Simple RSS Widget" can be used to display temperatures on the home screen. +The `rss_feed_template` component can export any information from Home Assistant as a static RSS feed. This can be used to display that information on many types of devices using an RSS reader. While native apps for Home Assistant are not widely available, native RSS readers exist for almost any platform. +For example, on Android, the app "Simple RSS Widget" can be used to display temperatures on the home screen. ```yaml # Example configuration.yml entry rss_feed_template: + # Accessible on+The "Community" API key is limited to 10,000 calls per month. In order to leave +a buffer, the `airvisual` platform queries the API every 10 minutes. +
+ +## {% linkable_title Configuring the Platform via Latitude/Longitude %} + +To enable the platform and gather data via latitude/longitude, add the +following lines to your `configuration.yaml` file: + +```yaml +sensor: + - platform: airvisual + api_key: abc123 + monitored_conditions: + - us + - cn + latitude: 42.81212 + longitude: 108.12422 + radius: 500 + show_on_map: false +``` + +Configuration variables: + +- **api_key** (*Required*): your AirVisual API key +- **monitored_conditions** (*Required*): the air quality standard(s) to use +(`us` for U.S., `cn` for Chinese) +- **latitude** (*Optional*): the latitude to monitor; if excluded, the latitude +defined under the `homeassistant` key in `configuration.yaml` will be used +- **longitude** (*Optional*): the longitude to monitor; if excluded, the longitude +defined under the `homeassistant` key in `configuration.yaml` will be used +- **radius** (*Optional*): the radius (in meters) around the latitude/longitude to +search for the nearest city; defaults to `1000` +- **show_on_map** (*Optional*): whether to show a marker on the map at the specified +location; defaults to `true` + +## {% linkable_title Configuring the Platform via City/State/Country %} + +To enable the platform and gather data via city/state/country, add the +following lines to your `configuration.yaml` file: + +```yaml +sensor: + - platform: airvisual + api_key: abc123 + monitored_conditions: + - us + - cn + city: southend-on-sea + state: essex + country: uk + show_on_map: false +``` + +Configuration variables: + +- **api_key** (*Required*): your AirVisual API key +- **monitored_conditions** (*Required*): the air quality standard(s) to use +(`us` for U.S., `cn` for Chinese) +- **city** (*Optional*): the city to monitor +- **state** (*Optional*): the state/region to monitor +- **country** (*Optional*): the country to monitor +- **show_on_map** (*Optional*): whether to show a marker on the map at the specified +location; defaults to `true` + +To easily determine the proper values for a particular location, use the +[AirVisual region directory](https://airvisual.com/world). Once you browse to the particular city you want, +take note of the breadcrumb title, which is of the form +`country > state/region > city`. Use this information to fill out +`configuration.yaml`. + +For example, Sao Paulo, Brazil shows a breadcrumb title of +`Brazil > Sao Paulo > Sao Paulo` – thus, the proper configuration would look +like this: + +```yaml +sensor: + - platform: airvisual + api_key: abc123 + monitored_conditions: + - us + - cn + city: sao-paulo + state: sao-paulo + country: brazil +``` + +## {% linkable_title Sensor Types %} + +When configured, the platform will create three sensors for each configured +air quality standard: + +### Air Quality Index + +**Description:** This sensor displays a numeric air quality index (AQI), a metric +for the overall "health" of the air. + +**Example Sensor Name:** `sensor.chinese_air_quality_index` + +**Example Sensor Value:** `32` + +**Explanation:** + +AQI | Status | Description +------- | :----------------: | ---------- +0 - 50 | **Good** | Air quality is considered satisfactory, and air pollution poses little or no risk +51 - 100 | **Moderate** | Air quality is acceptable; however, for some pollutants there may be a moderate health concern for a very small number of people who are unusually sensitive to air pollution +101 - 150 | **Unhealthy for Sensitive Groups** | Members of sensitive groups may experience health effects. The general public is not likely to be affected +151 - 200 | **Unhealthy** | Everyone may begin to experience health effects; members of sensitive groups may experience more serious health effects +201 - 300 | **Very unhealthy** | Health warnings of emergency conditions. The entire population is more likely to be affected +301+ | **Hazardous** | Health alert: everyone may experience more serious health effects + +### Air Pollution Level + +**Description:** This sensor displays the associated `Status` (from the above +table) for the current AQI. + +**Sample Sensor Name:** `sensor.us_air_pollution_level` + +**Example Sensor Value:** `Moderate` + +### Main Pollutant + +**Description:** This sensor displays the pollutant whose value is currently +highest. + +**Sample Sensor Name:** `sensor.us_main_pollutant` + +**Example Sensor Value:** `PM2.5` + +**Explanation:** + +Pollutant | Symbol | More Info +------- | :----------------: | ---------- +Particulate (<= 2.5 μm) | PM2.5 | [EPA: Particulate Matter (PM) Pollution ](https://www.epa.gov/pm-pollution) +Particulate (<= 10 μm) | PM10 | [EPA: Particulate Matter (PM) Pollution ](https://www.epa.gov/pm-pollution) +Ozone | O | [EPA: Ozone Pollution](https://www.epa.gov/ozone-pollution) +Sulpher Dioxide | SO2 | [EPA: Sulfur Dioxide (SO2) Pollution](https://www.epa.gov/so2-pollution) +Carbon Monoxide | CO | [EPA: Carbon Monoxide (CO) Pollution in Outdoor Air](https://www.epa.gov/co-pollution) diff --git a/source/_components/sensor.amcrest.markdown b/source/_components/sensor.amcrest.markdown index dcdb919a014..538369de5a3 100644 --- a/source/_components/sensor.amcrest.markdown +++ b/source/_components/sensor.amcrest.markdown @@ -13,34 +13,13 @@ ha_release: 0.37 ha_iot_class: "Local Polling" --- -The `amcrest` sensor allows you to integrate your [Amcrest](https://amcrest.com/) IP camera in Home Assistant. +To get your [Amcrest](https://amcrest.com/) cameras working within Home Assistant, please follow the instructions for the general [Amcrest component](/components/amcrest). -To enable the `amcrest` sensors on your camera, add the following to your `configuration.yaml` file: +Once you have enabled the [Amcrest component](/components/amcrest), add the following to your `configuration.yaml` file: ```yaml # Example configuration.yaml entry sensor: - platform: amcrest - host: IP_ADDRESS - username: USERNAME - password: PASSWORD - monitored_conditions: - - motion_detector - - sdcard - - ptz_preset ``` - -Configuration variables: - -- **host** (*Required*): The IP address or hostname of your camera. If using hostname, make sure the DNS works as expected. -- **username** (*Required*): The username for accessing your camera. -- **password** (*Required*): The password for accessing your camera. -- **name** (*Optional*): This parameter allows you to override the name of your camera. The default is "Amcrest Camera". -- **port** (*Optional*): The port that the camera is running on. The default is 80. -- **scan_interval** (*Optional*): Defines the update interval of the sensor in seconds. The default is 10 seconds. -- **monitored_conditions** array (*Required*): Conditions to display in the frontend. The following conditions can be monitored. - - **motion_detector**: Return True/False when a motion is detected - - **sdcard**: Return the SD card usage by reporting the total and used space - - **ptz_preset**: Return the number of PTZ preset positions configured for the given camera - To check if your Amcrest camera is supported/tested, visit the [supportability matrix](https://github.com/tchellomello/python-amcrest#supportability-matrix) link from the `python-amcrest` project. diff --git a/source/_components/sensor.android_ip_webcam.markdown b/source/_components/sensor.android_ip_webcam.markdown index 0304cb1f01e..87f6f0d7835 100644 --- a/source/_components/sensor.android_ip_webcam.markdown +++ b/source/_components/sensor.android_ip_webcam.markdown @@ -17,3 +17,5 @@ ha_iot_class: "Local Polling" The `android_ip_webcam` sensor platform lets you observe states of [Android IP webcam](https://play.google.com/store/apps/details?id=com.pas.webcam) sensors through Home Assistant. Devices will be configured automatically. Please refer to the [component](/components/android_ip_webcam/) configuration on how to setup. + +You can setup your own sensors by examining the JSON file from the webcam server: http://IP:8080/sensors.json diff --git a/source/_components/sensor.arest.markdown b/source/_components/sensor.arest.markdown index 181d9eaa6c3..bf5c31651c7 100644 --- a/source/_components/sensor.arest.markdown +++ b/source/_components/sensor.arest.markdown @@ -14,7 +14,7 @@ ha_release: pre 0.7 --- -The `arest` sensor platform allows you to get all data from your devices (like Arduinos with a ethernet/wifi connection, the ESP8266, and the Raspberry Pi) running the [aREST](http://arest.io/) RESTful framework. +The `arest` sensor platform allows you to get all data from your devices (like Arduinos with a Ethernet/Wifi connection, the ESP8266, and the Raspberry Pi) running the [aREST](http://arest.io/) RESTful framework. To use your aREST enabled device in your installation, add the following to your `configuration.yaml` file: @@ -34,7 +34,7 @@ sensor: Configuration variables: - **resource** (*Required*): IP address and schema of the device that is exposing an aREST API, e.g. http://192.168.1.10. -- **name** (*Optional*): Let you overwrite the the name of the device. By default *name* from the device is used. +- **name** (*Optional*): Let you overwrite the name of the device. By default *name* from the device is used. - **monitored_variables** array (*Optional*): List of exposed variables. - **[variable]** (*Required*): Name of the variable to monitor. - **name** (*Optional*): The name to use for the frontend. diff --git a/source/_components/sensor.arlo.markdown b/source/_components/sensor.arlo.markdown index d679f7c7eb3..72fc0ae36bb 100644 --- a/source/_components/sensor.arlo.markdown +++ b/source/_components/sensor.arlo.markdown @@ -25,6 +25,7 @@ sensor: - captured_today - last_capture - total_cameras + - battery_level ``` Configuration variables: @@ -33,5 +34,6 @@ Configuration variables: - **captured_today**: Return the number of videos captured on the current day. - **last_capture**: Return the timestamp from the last video captured by your Arlo camera. - **total_cameras**: Return the number of recognized and active cameras linked on your Arlo account. + - **battery_level**: Return the battery level of your Arlo camera. If no **monitored_conditions** are specified, all of above will be enabled by default. diff --git a/source/_components/sensor.arwn.markdown b/source/_components/sensor.arwn.markdown index f7d76b8b6f8..fb66cc50bd0 100644 --- a/source/_components/sensor.arwn.markdown +++ b/source/_components/sensor.arwn.markdown @@ -22,4 +22,4 @@ sensor: - platform: arwn ``` -Currently all temperatures, barometers, and wind sensors will be displayed. Support for rain gauge sensors will happen in the future. +Currently all temperatures, barometers, moisture, rain, and wind sensors will be displayed. diff --git a/source/_components/sensor.bh1750.markdown b/source/_components/sensor.bh1750.markdown new file mode 100644 index 00000000000..754dc91f86e --- /dev/null +++ b/source/_components/sensor.bh1750.markdown @@ -0,0 +1,105 @@ +--- +layout: page +title: "BH1750 Light sensor" +description: "Instructions how to integrate a BH1750 light sensor into Home Assistant." +date: 2017-06-10 00:00 +sidebar: true +comments: false +sharing: true +footer: true +logo: raspberry-pi.png +ha_category: Sensor +ha_release: 0.48 +ha_iot_class: "Local Push" +--- + + +The `bh1750` sensor platform allows you to read the ambient light level in Lux from a [BH1750FVI sensor](http://cpre.kmutnb.ac.th/esl/learning/bh1750-light-sensor/bh1750fvi-e_datasheet.pdf) connected via [I2c](https://en.wikipedia.org/wiki/I²C) bus (SDA, SCL pins). It allows you to use all the resolution modes of the sensor described in its datasheet. + +Tested devices: + +- [Raspberry Pi](https://www.raspberrypi.org/) + + +To use your BH1750 sensor in your installation, add the following to your `configuration.yaml` file: + +```yaml +# Example configuration.yaml entry +sensor: + - platform: BH1750 +``` + +Configuration variables: + +- **name** (*Optional*): The name of the sensor +- **i2c_address** (*Optional*): I2c address of the sensor. It is 0x23 or 0x5C. +- **i2c_bus** (*Optional*): I2c bus where the sensor is. Defaults to 1, for Raspberry Pi 2 and 3. +- **operation_mode** (*Optional*): Working mode for the sensor. Defaults to `continuous_high_res_mode_1` for continuous measurement and 1 lx resolution. +- **measurement_delay_ms** (*Optional*): Delay time in ms for waiting the sensor to get the measure. Defaults to 120 ms. +- **multiplier** (*Optional*): Correction coefficient to multiply the measured light level. Value between 0.1 and 10. Default is 1. + + +## {% linkable_title Full Examples %} + +If you want to specify the resolution mode of the digital sensor or need to change the default I2c address (which is 0x23), add more details to the `configuration.yaml` file. + +The sensor can work with resolutions of 0.5 lx (high res mode 1), 1 lx (high res mode 2) or 4 lx (low res mode), and make measurements continuously or one time each call. To set any of these operation modes, select one of these combinations: `continuous_low_res_mode`, `continuous_high_res_mode_2`, `continuous_high_res_mode_1`, `one_time_high_res_mode_1`, `one_time_high_res_mode_2`, `one_time_low_res_mode`. + +```yaml +# Example of customized configuration.yaml entry +sensor: + - platform: bh1750 + name: Ambient light + i2c_address: 0x5C + operation_mode: one_time_high_res_mode_1 + measurement_delay_ms: 200 + scan_interval: 25 +``` + +## {% linkable_title Directions for installing smbus support on Raspberry Pi %} + +Enable I2c interface with the Raspberry Pi configuration utility: + +```bash +# pi user environment: Enable i2c interface +$ sudo raspi-config +``` + +Select `Interfacing options->I2C` choose `
@@ -36,6 +36,8 @@ sensor:
Configuration variables:
- **printers** array (*Required*): List of printers to add.
+- **host** (*Optional*): IP address of the CUPS print server.
+- **port** (*Optional*): Port address of the CUPS print server. Defaults to 631.
diff --git a/source/_components/sensor.currencylayer.markdown b/source/_components/sensor.currencylayer.markdown
index 29aad210caf..d26955ba01d 100644
--- a/source/_components/sensor.currencylayer.markdown
+++ b/source/_components/sensor.currencylayer.markdown
@@ -14,7 +14,7 @@ ha_release: 0.32
---
-The `currencylayer` sensor will show you the current exchange rate from [Currencylayer](https://currencylayer.com/) that provides realtime exchange rates for [170 currencies](https://currencylayer.com/currencies). The free account is limited to only USD as a base currency, allows 1000 requests per month, and updates every hour.
+The `currencylayer` sensor will show you the current exchange rate from [Currencylayer](https://currencylayer.com/) that provides real-time exchange rates for [170 currencies](https://currencylayer.com/currencies). The free account is limited to only USD as a base currency, allows 1000 requests per month, and updates every hour.
Obtain your API key [here](https://currencylayer.com/product)
diff --git a/source/_components/sensor.darksky.markdown b/source/_components/sensor.darksky.markdown
index 1fd1ec5bcc3..ee366dfa66e 100644
--- a/source/_components/sensor.darksky.markdown
+++ b/source/_components/sensor.darksky.markdown
@@ -41,7 +41,7 @@ Configuration variables:
- **api_key** (*Required*): Your API key.
- **name** (*Optional*): Additional name for the sensors. Default to platform name.
- **forecast** array (*Optional*): List of days in the 7 day forecast you would like to receive data on, starting with tomorrow as day 1. Any `monitored_condition` with a daily forecast by DarkSky will generate a sensor tagged with `_
+Your system must have fail2ban installed and correctly configured for this sensor to work. In addition, Home Assistant must be able to read the fail2ban log file.
+
+These steps assume you already have the Home Assistant docker running behind nginx and that it is externally accessible. It also assumes the docker is running with the `--net='host'` flag.
+
+
This sensor is an alternative to the [`metoffice`](/components/weather.metoffice/) weather platform.
-The weather platform is easier to configure but less customisable.
+The weather platform is easier to configure but less customizable.
+If you are tracking temperature it is recommended to set `bed` and/or `number_of_tools` in your octoprint configuration. This will allow the octoprint sensors to load if the printer is offline during Home Assistant startup.
+
+This component has been modified to work with devices with multiple sensors which will cause a discontinuity in recorded values. Existing devices will receive a new ID and therefore show up as new devices.
+If you wish to maintain continuity it can be resolved in the database by renaming the old devices to the new names.
+
+Connect to your database using the instructions from [home-assistant.io/docs/backend/database/](https://home-assistant.io/docs/backend/database/). Check the names of sensors:
+
+```sql
+SELECT entity_id, COUNT(*) as count FROM states GROUP BY entity_id ORDER BY count DESC LIMIT 10;
+```
+Alter the names of sensors using the following examples:
+
+```sql
+UPDATE states SET entity_id='sensor.
+OpenHardwareMonitor must be running on the host, with "Remote web server" active.
+You also need to open an inbound port for (TCP 8085) in the advanced firewall settings.
+
+It is vital that your system clock is correct both on your Home Assistant server and on your OTP generator device (e.g. your phone). If not, the generated codes will not match! Make sure NTP is running and syncing your time correctly before creating an issue.
+
+
+
+
-After booting Home Assistant it can take up to 15 minutes for the sensors to show up. This is due to the fact that sensors are created after Home Assistant has fully been initialized.
-
-This sensor will wake up your Synology NAS if it's in hibernation mode.
-
+After booting Home Assistant it can take up to 15 minutes for the sensors to show up. This is due to the fact that sensors are created after Home Assistant has fully been initialized.
+
+This sensor will wake up your Synology NAS if it's in hibernation mode.
+
-Please note the blank line to close the multi-line template.
-
+
+
+
+
+
+Additional sensors can be added but at the expense of a reduced refresh rate. 2 sensors can be updated every 2*87 = 174 seconds, and so on.
+
-The USPS sensor logs into the MyUSPS website to scrape package data. It does not use an API.
-
+The following examples assume a subscription that has an ID of `123456` and a label of `Web Server`
+
-The above devices are confimed to work, but others may work as well.
+The above devices are confirmed to work, but others may work as well.
-This sensor is an alternative to the [`zamg`](/components/weather.zamg/) weather platform.
-The weather platform is easier to configure but less customisable.
+This sensor is an alternative to the [`zamg`](/components/weather.zamg/) weather platform. The `zamg` weather platform is easier to configure but less customizable.
If no **host** is given the platform will try to autodiscover all devices on the network, that are listening on the given **port_recv**. If no **host** is given the platform will try to auto-discover all devices on the network, that are listening on the given **port_recv**.
+ You must have the [DoorBird component](/components/doorbird/) configured to use this switch.
+
-Make sure that your topic match exact. `some-topic/` and `some-topic` are different topics.
+Make sure that your topic matches exactly. `some-topic/` and `some-topic` are different topics.
@@ -50,6 +50,11 @@ Configuration variables:
- **signal_repetitions** (*Optional*): Because the RFXtrx device sends its actions via radio and from most receivers it's impossible to know if the signal was received or not. Therefore you can configure the switch to try to send each signal repeatedly.
- **fire_event** (*Optional*): Fires an event even if the state is the same as before, for example a doorbell switch. Can also be used for automations.
+
+This component and the [rfxtrx binary sensor](/components/binary_sensor/rfxtrx/) can steal each other's devices when setting the `automatic_add` configuration parameter to `true`. Set `automatic_add` only when you have some devices to add to your installation, otherwise leave it to `False`.
+
+The following examples assume a subscription that has an ID of `123456` and a label of `Web Server`
+
+
+
+With the current implementation timers don't persist over restarts. After a restart they will be idle again, together with their initial configuration.
+
-If you see an "Unable to connect" message, restart the gateway and try again.
+If you see an "Unable to connect" message, restart the gateway and try again. Don't forget to assign a permanent IP to your Trådfri gateway.
+Do not use the `api_key` variable. The key is only needed once at initial setup.
+
-If you are running Home Assistant over SSL or from within a container, you will have to setup a base url inside the [http component](/components/http/).
+If you are running Home Assistant over SSL or from within a container, you will have to setup a base URL (`base_url`) inside the [http component](/components/http/).
+The USPS sensor logs into the MyUSPS website to scrape package data. It does not use an API.
+
+Starting with 0.57 the `neato` sensor was migrated to a vacuum platform.
+
+This platform has only been tested with an iRobot Roomba 980 but should work find with any Wi-Fi enabled Roomba like the 690, 890 or the 960.
+
+The Roomba's MQTT server only allows a single connection. Enabling continuous mode will force the App to connect via the cloud to your Roomba. [More info here](https://github.com/NickWaterton/Roomba980-Python#firmware-2xx-notes)
+
+This token (32 hexadecimal characters) is required for the Xiaomi Mi Robot
+Vacuum and Xiaomi Philips Lights. The Xiaomi Gateway uses another security
+method and requires a `key` (16 alphanumeric chars), which can be obtained
+easily via a hidden menu item at the Mi-Home app.
+
+Ensure you allow the public IP of Home Assistant under the Access Control heading.
+
This platform is an alternative to the [`bom`](/components/sensor.bom/) sensor.
-The weather platform is easier to configure but less customisable.
+The weather platform is easier to configure but less customizable.
This platform is an alternative to the [`buienradar`](/components/sensor.buienradar/) sensor.
-The weather platform is easier to configure but less customisable.
+The weather platform is easier to configure but less customizable.
This platform is an alternative to the [`metoffice`](/components/sensor.metoffice/) sensor.
-The weather platform is easier to configure but less customisable.
+The weather platform is easier to configure but less customizable.
diff --git a/source/_components/weather.yweather.markdown b/source/_components/weather.yweather.markdown
index 3d38b2fbe89..e0875036794 100644
--- a/source/_components/weather.yweather.markdown
+++ b/source/_components/weather.yweather.markdown
@@ -13,13 +13,13 @@ ha_release: 0.47
---
-The `yweather` platform uses [Yahoo Weather](https://www.yahoo.com/news/weather/) as an source for current meteorological data. The `forecast` will show you the condition for 5 days, 0 is the current day.
+The `yweather` platform uses [Yahoo Weather](https://www.yahoo.com/news/weather/) as a source for current meteorological data. This component will show you the condition and temperatures for max. 10 days.
Use of the Yahoo Weather API should not exceed reasonable request volume. Access is limited to 2000 signed calls per day.
-This platform is an alternative to the [`zamg`](/components/sensor.zamg/) sensor.
-The weather platform is easier to configure but less customisable.
+This platform is an alternative to the [`zamg`](/components/sensor.zamg/) sensor. The weather platform is easier to configure but less customizable.
+When using the configurator make sure the initial setup is performed on the same local network as the Home Assistant server, if not from the same box Home Assistant is running on. This will allow for authentication redirects to happen correctly.
+
+It is possible for the hub to get into a bad state where it stops accepting local control request. If this happens, you will notice requests taking significantly longer as they are redirected online. This doesn't happen often, but when it does, it appears to be resolved by rebooting the hub.
+
+The following error will be logged if the hub is rejecting local requests.
+
+```
+Error sending local control request. Sending request online
+```
+
+
-The Wink hub can only be accessed via the cloud. This means it requires an active internet connection and you will experience delays when controlling and updating devices (~3s).
+Calling service wink/pull_newly_added_wink_devices after a device is paired will add that new device to Home Assistant. The device will also show up on the next restart of Home Assistant.
+Home Assistant entity_ids for Wink devices are based on the Wink device's name. Calling this service will not change the entity_id of the deivce until Home Assistant is restarted.
+
+The Wink hub, by default, can only be accessed via the cloud. This means it requires an active internet connection and you will experience delays when controlling and updating devices (~3s).
+
+The following services only work with the Dome siren/chime.
+
Devices that are in the zone **'Home'** will not appear on the map in the Home Assistant UI.
@@ -63,4 +61,4 @@ It is preferred to pick an icon to use for your zone. Pick any icon that you can
#### State
-`zoning` is the state a `zone` has when it is configured. A `zone` doesn't have another state, all configured zones are `zoning` all the time.
+`zoning` is the state a `zone` has when it is configured. A `zone` doesn't have another state; all configured zones are `zoning` all the time.
diff --git a/source/_cookbook/automation_for_rainy_days.markdown b/source/_cookbook/automation_for_rainy_days.markdown
index 0a1d8a7c6f5..7ce7c46b16a 100644
--- a/source/_cookbook/automation_for_rainy_days.markdown
+++ b/source/_cookbook/automation_for_rainy_days.markdown
@@ -22,10 +22,10 @@ automation:
entity_id: sensor.precip_intensity
to: 'rain'
condition:
- - platform: state
+ - condition: state
entity_id: group.all_devices
state: 'home'
- - platform: time
+ - condition: time
after: '14:00'
before: '23:00'
action:
diff --git a/source/_cookbook/automation_kodi_dynamic_input_select.markdown b/source/_cookbook/automation_kodi_dynamic_input_select.markdown
index fff67e60d8e..040d4f1284e 100644
--- a/source/_cookbook/automation_kodi_dynamic_input_select.markdown
+++ b/source/_cookbook/automation_kodi_dynamic_input_select.markdown
@@ -10,7 +10,7 @@ footer: true
ha_category: Automation Examples
---
-This requires a [Kodi](/components/mediaplayer.kodi/) media player, and consists of commands that perform queries in the Kodi library, and a selection box (`input_select`) that shows the available options. By clicking the commands, the selection box is updated, and when selecting an option, Kodi plays the media.
+This requires a [Kodi](/components/media_player.kodi/) media player, and consists of commands that perform queries in the Kodi library, and a selection box (`input_select`) that shows the available options. By clicking the commands, the selection box is updated, and when selecting an option, Kodi plays the media.
Option filling is done in an [AppDaemon](https://home-assistant.io/docs/ecosystem/appdaemon/tutorial/) app, which listens for events that are triggered with the results of the Kodi JSONRPC API queries when scripts run. This application also listens to the selection box and calls the play media service with the corresponding parameters.
diff --git a/source/_cookbook/automation_sun.markdown b/source/_cookbook/automation_sun.markdown
index db9d8dfe8ef..931972beaba 100644
--- a/source/_cookbook/automation_sun.markdown
+++ b/source/_cookbook/automation_sun.markdown
@@ -29,7 +29,7 @@ automation:
#### {% linkable_title Natural wake up light %}
-_Note, Philips Hue is currently the only light platform that support transitions._
+_Note, Philips Hue and LIFX are currently the only light platforms that support transitions._
```yaml
automation:
diff --git a/source/_cookbook/configuration_yaml_by_ciquattrofpv.markdown b/source/_cookbook/configuration_yaml_by_ciquattrofpv.markdown
index 49a8018f6c8..247ddab1336 100644
--- a/source/_cookbook/configuration_yaml_by_ciquattrofpv.markdown
+++ b/source/_cookbook/configuration_yaml_by_ciquattrofpv.markdown
@@ -1,6 +1,6 @@
---
layout: page
-title: "Configuration.yaml by Nicolo Steffe"
+title: "Configuration.yaml by Ciquattro"
description: ""
date: 2017-06-13 12:00
sidebar: true
diff --git a/source/_cookbook/configuration_yaml_by_lancehaynie.markdown b/source/_cookbook/configuration_yaml_by_lancehaynie.markdown
new file mode 100644
index 00000000000..892714d1400
--- /dev/null
+++ b/source/_cookbook/configuration_yaml_by_lancehaynie.markdown
@@ -0,0 +1,12 @@
+---
+layout: page
+title: "Configuration.yaml by Lance Haynie"
+description: ""
+date: 2017-08-18 18:33
+sidebar: true
+comments: false
+sharing: true
+footer: true
+ha_category: Example configuration.yaml
+ha_external_link: https://github.com/Haynie-Research-and-Development/jarvis
+---
diff --git a/source/_cookbook/configuration_yaml_by_ntalekt.markdown b/source/_cookbook/configuration_yaml_by_ntalekt.markdown
new file mode 100644
index 00000000000..657e33b001e
--- /dev/null
+++ b/source/_cookbook/configuration_yaml_by_ntalekt.markdown
@@ -0,0 +1,12 @@
+---
+layout: page
+title: "Configuration.yaml by ntalekt"
+description: ""
+date: 2017-10-26 13:08 -0700
+sidebar: true
+comments: false
+sharing: true
+footer: true
+ha_category: Example configuration.yaml
+ha_external_link: https://github.com/ntalekt/homeassistant
+---
diff --git a/source/_cookbook/configuration_yaml_by_brusc.markdown b/source/_cookbook/configuration_yaml_by_oakbrad.markdown
similarity index 58%
rename from source/_cookbook/configuration_yaml_by_brusc.markdown
rename to source/_cookbook/configuration_yaml_by_oakbrad.markdown
index 762bf536e65..c4991394418 100644
--- a/source/_cookbook/configuration_yaml_by_brusc.markdown
+++ b/source/_cookbook/configuration_yaml_by_oakbrad.markdown
@@ -1,6 +1,6 @@
---
layout: page
-title: "Configuration.yaml by brusc"
+title: "Configuration.yaml by oakbrad"
description: ""
date: 2016-03-14 11:45
sidebar: true
@@ -8,6 +8,6 @@ comments: false
sharing: true
footer: true
ha_category: Example configuration.yaml
-ha_external_link: https://github.com/brusc/Home-Assistant-Configuration
+ha_external_link: https://github.com/oakbrad/brad-homeassistant-config
---
diff --git a/source/_cookbook/configuration_yaml_by_shortbloke.markdown b/source/_cookbook/configuration_yaml_by_shortbloke.markdown
new file mode 100644
index 00000000000..d7aa5475550
--- /dev/null
+++ b/source/_cookbook/configuration_yaml_by_shortbloke.markdown
@@ -0,0 +1,12 @@
+---
+layout: page
+title: "Configuration.yaml by Shortbloke"
+description: ""
+date: 2017-08-10 01:45
+sidebar: true
+comments: false
+sharing: true
+footer: true
+ha_category: Example configuration.yaml
+ha_external_link: https://github.com/shortbloke/home_assistant_config
+---
diff --git a/source/_cookbook/configuration_yaml_by_vasiley.markdown b/source/_cookbook/configuration_yaml_by_vasiley.markdown
new file mode 100644
index 00000000000..5334be04d30
--- /dev/null
+++ b/source/_cookbook/configuration_yaml_by_vasiley.markdown
@@ -0,0 +1,12 @@
+---
+layout: page
+title: "Configuration.yaml by Vasiley"
+description: ""
+date: 2017-09-04 13:50
+sidebar: true
+comments: false
+sharing: true
+footer: true
+ha_category: Example configuration.yaml
+ha_external_link: https://github.com/Vasiley/Home-Assistant-Main
+---
diff --git a/source/_cookbook/custom_panel_using_react.markdown b/source/_cookbook/custom_panel_using_react.markdown
index 3ecc604d325..b8f5f8d59b8 100644
--- a/source/_cookbook/custom_panel_using_react.markdown
+++ b/source/_cookbook/custom_panel_using_react.markdown
@@ -18,7 +18,7 @@ This is a [React](https://facebook.github.io/react/) implementation of [TodoMVC]
- It uses the user configuration for the component in the `configuration.yaml` file for rendering.
- It allows toggling the sidebar.
-All you need is available as a [custom panel](https://github.com/home-assistant/home-assistant/tree/master/config/panels/react.html). Download the file and save it in `
+Currently this module can only monitor a single Asterisk PBX mailbox. Multiple mailbox support is planned for the future
+
+This assumes that your Asterisk PBX server is using `systemd` for init handling. If not, you will need to create the appropriate configuration files yourself.
+
+Listing above and below together means the numeric_state has to be between the two values.
+In the example above, a numeric_state that is 17.1-24.9 would fire this trigger.
+
Use quotes around your values for `from` and `to` to avoid the YAML parser interpreting values as booleans.
- Using `state` as an alias for `to` is deprecated.
-
-Be carefull not to forget to place `customize`, `customize_domain`, and `customize_glob` inside `homeassistant:` or it will fail.
+If you implement `customize`, `customize_domain`, or `customize_glob` you must make sure it is done inside of `homeassistant:` or it will fail.
-If you are using docker to run home assistant then the occasion.py script will be placed under /config. Your command should instead be: command: "python3 /command/occasion.py"
+If you are using docker to run Home Assistant then the occasion.py script will be placed under /config. Your command should instead be: command: "python3 /command/occasion.py"
If you are using the Python Keyring, [autostarting](/getting-started/autostart/) of Home Assistant will no longer work.
+
If your template uses an `entity_id` that begins with a number (example: `states.device_tracker.2008_gmc`) you must use a bracket syntax to avoid errors caused by rendering the `entity_id` improperly. In the example given, the correct syntax for the device tracker would be: `states.device_tracker['2008_gmc']`
+Rendering templates with time is dangerous as updates only trigger templates in sensors based on entity state changes.
+
Whenever you report an issue, be aware that we are volunteers who do not have access to every single device in the world nor unlimited time to fix every problem out there.
+Please pay attention on not storing private data (passwords, API keys, etc.) directly in your `configuration.yaml` file. Private data can be stored in a [separate file](/docs/configuration/secrets/) or in [environmental variables](/docs/configuration/yaml/#using-environment-variables), which circumvents this problem of security.
+
+If you are using Hass.io, do not use this guide. Instead, use the [DuckDNS add-on](/addons/duckdns/) to automatically maintain a subdomain including HTTPS certificates via Let's Encrypt.
+
Before exposing your Home Assistant instance to the outside world it is ESSENTIAL that you have set a password following the advice on the [http](https://home-assistant.io/docs/configuration/basic/) page.
Following on from Step 4 your SSH will still be in the certbot folder. If you edit your configuration files over SSH you will need to change to your `homeassistant` folder:
@@ -358,11 +362,11 @@ If you were previously using a webapp on your phone/tablet to access your Home A
https://home-assistant.io/docs/frontend/mobile/
```
-All done? Accessing your Home Assistant from across the world with your DuckDNS URL and a lovely secure logo on your browser? Ace! Now let's clean up our port forwards so that we are only exposing the parts of our network that are absolutely neccesary to the outside world.
+All done? Accessing your Home Assistant from across the world with your DuckDNS URL and a lovely secure logo on your browser? Ace! Now let's clean up our port forwards so that we are only exposing the parts of our network that are absolutely necessary to the outside world.
### {% linkable_title 6 - Clean up port forwards %}
-In step 2 we created a port forwarding rule called `ha_test`. This opens port 8123 to the world, and is no longer neccessary.
+In step 2 we created a port forwarding rule called `ha_test`. This opens port 8123 to the world, and is no longer necessary.
Go to your router's configuration pages and delete the `ha_test` rule.
@@ -374,8 +378,8 @@ If you have any more for Home Assistant you should delete them now. If you only
You are now part of one of two groups:
- * If you have BOTH rules you are able to set up auto renewals of you certificates.
- * If you only have one, you will have to manually change the rule when you want to update your certificate, and then change it back afterwards.
+ * If you have BOTH rules you are able to set up auto renewals of your certificates using port 80 and the standard http challenge, as performed above.
+ * If you only have one, you are still able to set up auto renewals of your certificates, but will have to specify additional options when renewing that will temporarily stop Home Assistant and use port 8123 for certificate renewal.
Please remember whether you are a ONE-RULE person or a BOTH-RULE person for step 8!
@@ -402,7 +406,7 @@ $ sudo apt-get install ssl-cert-check
```
-In cases where, for whatever reason, apt-get installing is not appropriate for your installation you can fetch the ssl-cert-check script from `http://prefetch.net/code/ssl-cert-check` bearing in mind that you will have to modify the command in the sensor code below to run the script from wherever you put it, modify permission if neccessary and so on.
+In cases where, for whatever reason, apt-get installing is not appropriate for your installation you can fetch the ssl-cert-check script from `http://prefetch.net/code/ssl-cert-check` bearing in mind that you will have to modify the command in the sensor code below to run the script from wherever you put it, modify permission if necessary and so on.
-
+
+
+
+
-
+USB Z-wave sticks may give `dmesg` warnings similar to "data interface 1, has no CM over data, has no break". This doesn't impact the function of the Z-wave stick in Hass. Just make sure the proper `/dev/cu*` is used in the Home Assistant `configuration.yaml` file.
+
+You can also use `hassbian-config` to automate the process by running `sudo hassbian-config upgrade home-assistant`
+
+Please remember to ensure you're using an [appropriate power supply](https://www.raspberrypi.org/help/faqs/#powerReqs) with your Pi. Mobile chargers may not be suitable, since some are designed to only provide the full power with that manufacturer's handsets.
+
+You can also use `hassbian-config` to automate the process by running `sudo hassbian-config upgrade home-assistant`
+
+Please remember to ensure you're using an [appropriate power supply](https://www.raspberrypi.org/help/faqs/#powerReqs) with your Pi. Mobile chargers may not be suitable, since some are designed to only provide the full power with that manufacturer's handsets.
+
-Note that as of 2016-11-30 SSH is disabled by default in the official Raspbian images. Adding an empty file called `ssh` to `/boot/` or the FAT32 partition will enable it. More information is on the Raspberry Pi Foundation [Blog](https://www.raspberrypi.org/blog/page/2/?fish#a-security-update-for-raspbian-pixel).
+Note that as of 2016-11-30 SSH is disabled by default in the official Raspbian images. Adding an empty file called `ssh` to `/boot/` on the FAT32 partition will enable it. More information is on the Raspberry Pi Foundation [Blog](https://www.raspberrypi.org/blog/page/2/?fish#a-security-update-for-raspbian-pixel).
-The upgrade process differs depending on the installation you have, so please review the documentation that is specific to your install [HASSbian](/docs/hassbian/common-tasks/#update-home-assistant), [Raspberry Pi All-In-One Installer](/docs/installation/raspberry-pi-all-in-one/#upgrading), [Vagrant](/docs/installation/vagrant/), or [Virtualenv](/docs/installation/virtualenv/#upgrading-home-assistant).
+The upgrade process differs depending on the installation you have, so please review the documentation that is specific to your install [Hass.io](/hassio/), [HASSbian](/docs/hassbian/common-tasks/#update-home-assistant), [Raspberry Pi All-In-One Installer](/docs/installation/raspberry-pi-all-in-one/#upgrading), [Vagrant](/docs/installation/vagrant/), or [Virtualenv](/docs/installation/virtualenv/#upgrading-home-assistant).
-To avoid permission errors, the upgrade must be run as the same user as the installation was completed, again review the documentation specific to your install [HASSbian](/docs/hassbian/installation/), [Raspberry Pi All-In-One Installer](/docs/installation/raspberry-pi-all-in-one/), [Vagrant](/docs/installation/vagrant/), or [Virtualenv](/docs/installation/virtualenv).
+To avoid permission errors, the upgrade must be run as the same user as the installation was completed, again review the documentation specific to your install [HASSIO](/hassio/), [HASSbian](/docs/hassbian/installation/), [Raspberry Pi All-In-One Installer](/docs/installation/raspberry-pi-all-in-one/), [Vagrant](/docs/installation/vagrant/), or [Virtualenv](/docs/installation/virtualenv).
-This broker does not currently work with OwnTracks because of a protocol version issue.
-
There is an issue with the Mosquitto package included in Ubuntu 14.04 LTS. Specify `protocol: 3.1` in your MQTT configuration to work around this issue.
@@ -82,7 +110,7 @@ If you get this error `AttributeError: module 'ssl' has no attribute 'PROTOCOL_T
-If you are running a mosquitto instance on a different server with proper SSL encryption using a service like letsencrypt you may have to set the certificate to the operating systems own `.crt` certificates file. In the instance of ubuntu this would be `certificate: /etc/ssl/certs/ca-certificates.crt`
+If you are running a Mosquitto instance on a different server with proper SSL encryption using a service like Let's Encrypt you may have to set the certificate to the operating systems own `.crt` certificates file. In the instance of Ubuntu this would be `certificate: /etc/ssl/certs/ca-certificates.crt`
-Depending on what's plugged into your USB ports, the name found above may change. You can lock in a name, such as `/dev/zwave`, by following [these instructions](http://hintshop.ludvig.co.nz/show/persistent-names-usb-serial-devices/).
-
+Don't use the OpenZWave control panel (OZWCP), or the physical button on a controller, to add or remove devices. Many devices will only send the information about their capabilities at the time you include them. If you use the OpenZWave control panel, or the button on a device, then Home Assistant won't have that information. Using the physical button on a controller will also result in a non-security inclusion being performed, which may limit the features the device supports.
+
+Ensure you keep a backup of this key. If you have to rebuild your system and don't have a backup of this key, you won't be able to reconnect to any security devices. This may mean you have to do a factory reset on those devices, and your controller, before rebuilding your Z-Wave network.
+
+ If you don't see the **Configuration** menu on the menubar, where you'll find the Z-Wave menu, [see here](/components/config/).
+
+Battery powered devices need to be awake before you can use the Z-Wave control panel to update their settings. How to wake your device is device specific, and some devices will stay awake for only a couple of seconds. Please refer to the manual of your device for more details.
+
-Upon first run, the `zwave` component will take time to initialize entities and entities may appear with incomplete names. Running a network heal may expedite this process.
-
+ If you're using Hass.io, it's recommended to use a USB stick, not a module. Passing a module through Docker is more complicated than passing a USB stick through.
+
+The Z-Wave capability *routing* doesn't mean the device routes traffic, it actually means that it's able to control other devices. You'll see this capability on most remotes and switches.
+
+This is a work in progress, based upon reports in the forum, the author's own devices, and reading of various documentation. It will be incomplete, so if you have a device that isn't reported here, or have a device that reports a different value, please provide a report in the [Z-Wave section](https://community.home-assistant.io/c/configuration/zwave) of the forum or the #zwave channel on [Discord](https://discord.gg/RkajcgS).
+
+The installation of python-openzwave can take half an hour or more on a Raspbery Pi.
+
+If you're using Hass.io please follow [these setup instructions](/hassio/zwave/) for finding the controller path.
+
+The output from `ls -ltr` above contains the following information
+The device type is `c` (character special) and permissions are `rw-rw----`, meaning only the owner and group can read and write to it, there is only `1` link to the file, it is owned by `root` and can be accessed by the group `dialout`, it has a major device number of `204`, and a minor device number of `64`, the device was connected at `10:25` on `21 September`, and the device is `/dev/ttyUSB0`.
+
+Using the `soft_reset` function with some Z-Wave controllers can cause the Z-Wave network to hang.
+
@@ -33,13 +31,13 @@ This component is known to work for:
- Kaifa E0026
- Kamstrup 382JxC (DSMR 2.2)
-,USB serial converters:
+USB serial converters:
- Cheap (Banggood/ebay) Generic PL2303
- https://sites.google.com/site/nta8130p1smartmeter/webshop
- https://www.sossolutions.nl/slimme-meter-kabel
-And Serial to network proxies:
+Serial to network proxies:
- ser2net - http://ser2net.sourceforge.net/
@@ -49,11 +47,20 @@ sensor:
- platform: dsmr
```
-Configuration variables:
-
-- **port** string (*Optional*): Serial port to which Smartmeter is connected (default: /dev/ttyUSB0 (connected to USB port)). For remote (i.e. ser2net) connections, use TCP port number to connect to (i.e. 2001).
-- **host** string (*Optional*): Host to which Smartmeter is connected (default: '' (connected via serial or USB, see **port**)). For remote connections, use IP address of host to connect to (i.e. 192.168.1.13).
-- **dsmr_version** string (*Optional*): Version of DSMR used by meter, choices: 2.2, 4 (default: 2.2).
+{% configuration %}
+ port:
+ description: "Serial port to which Smartmeter is connected (default: /dev/ttyUSB0 (connected to USB port)). For remote (i.e. ser2net) connections, use TCP port number to connect to (i.e. 2001)."
+ required: false
+ type: string
+ host:
+ description: "Host to which Smartmeter is connected (default: '' (connected via serial or USB, see **port**)). For remote connections, use IP address of host to connect to (i.e. 192.168.1.13)."
+ required: false
+ type: string
+ name:
+ description: "Version of DSMR used by meter. Choices: 2.2, 4, 5. Defaults to 2.2."
+ required: false
+ type: string
+{% endconfiguration %}
Full configuration examples can be found below:
@@ -95,6 +102,7 @@ group:
```
Optional configuration example for ser2net:
+
```sh
# Example /etc/ser2net.conf for proxying USB/serial connections to DSMRv4 smart meters
2001:raw:600:/dev/ttyUSB0:115200 NONE 1STOPBIT 8DATABITS XONXOFF LOCAL -RTSCTS
@@ -111,3 +119,14 @@ and after that you need to reboot!
```
$ sudo reboot
```
+
+### {% linkable_title Technical overview %}
+
+DSMR is a standard to which Dutch smartmeters must comply. It specifies that the smartmeter must send out a 'telegram' every 10 seconds over a serial port.
+
+The contents of this telegram differ between version but they generally consist of lines with 'obis' (Object Identification System, a numerical ID for a value) followed with the value and unit.
+
+This module sets up a asynchronous reading loop using the `dsmr_parser` module which waits for a complete telegram, parser it and puts it on an async queue as a dictionary of `obis`/object mapping. The numeric value and unit of each value can be read from the objects attributes. Because the `obis` are know for each DSMR version the Entities for this component are create during bootstrap.
+
+Another loop (DSMR class) is setup which reads the telegram queue, stores/caches the latest telegram and notifies the Entities that the telegram has been updated.
+
diff --git a/source/_components/sensor.dte_energy_bridge.markdown b/source/_components/sensor.dte_energy_bridge.markdown
index d3f1a4db978..c79c4b73a0c 100644
--- a/source/_components/sensor.dte_energy_bridge.markdown
+++ b/source/_components/sensor.dte_energy_bridge.markdown
@@ -13,7 +13,10 @@ ha_release: 0.21
ha_iot_class: "Local Polling"
---
-A sensor platform for the [DTE](https://www.dteenergy.com/) Energy Bridge.
+A sensor platform for the [DTE](https://www.dteenergy.com/) Energy Bridge. To find out which version of the DTE Energy Bridge sensor you have, find the status LED on your box.
+
+ - If the status LED is on the top, you have a v1.
+ - If the status LED is on the front, you have a v2.
To enable this sensor, add the following lines to your `configuration.yaml` file:
@@ -28,3 +31,4 @@ Configuration variables:
- **ip** (*Required*): The IP address of your bridge.
- **name** (*Optional*): Name to use in the frontend.
+- **version** (*Optional*): Hardware version of the sensor. Defaults to 1.
diff --git a/source/_components/sensor.dublin_bus_transport.markdown b/source/_components/sensor.dublin_bus_transport.markdown
index d009ea2bef7..3b3161cdf10 100644
--- a/source/_components/sensor.dublin_bus_transport.markdown
+++ b/source/_components/sensor.dublin_bus_transport.markdown
@@ -7,7 +7,7 @@ sidebar: true
comments: false
sharing: true
footer: true
-logo: train.png
+logo: dublin_bus.jpg
ha_category: Transport
ha_iot_class: "Cloud Polling"
ha_release: 0.36
diff --git a/source/_components/sensor.dwd_weather_warnings.markdown b/source/_components/sensor.dwd_weather_warnings.markdown
new file mode 100644
index 00000000000..2965c009260
--- /dev/null
+++ b/source/_components/sensor.dwd_weather_warnings.markdown
@@ -0,0 +1,43 @@
+---
+layout: page
+title: "DWD Weather warnings"
+description: "Instructions on how to integrate Deutsche Wetter Dienst weather warnings into Home Assistant."
+date: 2017-07-26 22:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+#logo: dwdwarnapp.png
+ha_category: Weather
+ha_release: 0.51
+ha_iot_class: "Cloud Polling"
+---
+
+The `dwd_weather_warnings` sensor platform uses the [Deutsche Wetter Dienst (DWD)](https://www.dwd.de) as a source for current and advance warnings.
+
+- A name is optional but if multiple regions are used a name will be required.
+- The sensor checks for new data every 15 minutes.
+
+To add the DWD WarnApp sensor to your installation, add the following to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+sensor:
+ - platform: dwd_weather_warnings
+ region_name: Hansestadt Hamburg
+```
+
+To get the region name:
+- Find your region here: `https://www.dwd.de/DE/wetter/warnungen_landkreise/warnWetter_node.html?ort=Hamburg`
+- Verify if you find any warning for your region here: `https://www.dwd.de/DWD/warnungen/warnapp_landkreise/json/warnings.json?jsonp=loadWarnings`
+
+The warning level is between 0 (no danger) and 4 (extreme weather conditions):
+- Warnungen vor extremem Unwetter (Stufe 4)
+- Unwetterwarnungen (Stufe 3)
+- Warnungen vor markantem Wetter (Stufe 2)
+- Wetterwarnungen (Stufe 1)
+
+Configuration variables:
+
+- **region_name** (*Optional*): The region name string as identified from the DWD website. If not given, defaults to Hansestadt Hamburg.
+- **name** (*Optional*): The name you would like to give to the warnapp sensor.
diff --git a/source/_components/sensor.dweet.markdown b/source/_components/sensor.dweet.markdown
index 733b04a1a17..bc3c710f53e 100644
--- a/source/_components/sensor.dweet.markdown
+++ b/source/_components/sensor.dweet.markdown
@@ -29,12 +29,12 @@ Configuration variables:
- **device** (*Required*): Identification of the device (also known as `thing`).
- **value_template** (*Required*): The variable to extract a value from the content.
-- **name** (*Optional*): Let you overwrite the the name of the device in the frontend.
+- **name** (*Optional*): Let you overwrite the name of the device in the frontend.
- **unit_of_measurement** (*Optional*): Defines the unit of measurement of the sensor, if any.
### {% linkable_title Full configuration sample %}
-A ful configuration entry could look like the sample below.
+A full configuration entry could look like the sample below.
```yaml
# Example configuration.yaml entry
@@ -48,7 +48,7 @@ sensor:
### {% linkable_title Interacting with Dweet.io %}
-You can easily send dweets from the commandline to test your sensor with `curl`.
+You can easily send dweets from the command-line to test your sensor with `curl`.
```bash
$ curl -H 'Content-Type: application/json' -d '{"temperature": 40, "humidity": 65}' https://dweet.io/dweet/for/ha-sensor
@@ -70,7 +70,7 @@ $ python3
{'thing': 'ha-sensor', 'created': '2015-12-10T09:46:08.559Z', 'content': {'humiditiy': 81, 'temperature': 23}}
```
-Recieve the latest dweet.
+Receive the latest dweet.
```bash
>>> dweepy.get_latest_dweet_for('ha-sensor')
diff --git a/source/_components/sensor.ecobee.markdown b/source/_components/sensor.ecobee.markdown
new file mode 100644
index 00000000000..0ae2be049bc
--- /dev/null
+++ b/source/_components/sensor.ecobee.markdown
@@ -0,0 +1,16 @@
+---
+layout: page
+title: "Ecobee Sensor"
+description: "Instructions how to setup the Ecobee sensors within Home Assistant."
+date: 2015-11-30 18:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: ecobee.png
+ha_category: Binary Sensor
+ha_release: 0.9
+ha_iot_class: "Local Push"
+---
+
+To get your Ecobee sensors working with Home Assistant, follow the instructions for the general [Ecobee component](/components/ecobee/).
diff --git a/source/_components/sensor.eddystone_temperature.markdown b/source/_components/sensor.eddystone_temperature.markdown
index 57f61bdcf99..4d5aacbbc25 100644
--- a/source/_components/sensor.eddystone_temperature.markdown
+++ b/source/_components/sensor.eddystone_temperature.markdown
@@ -47,7 +47,7 @@ sensor:
instance: "000000000002"
```
Configuration variables:
-- **bt_device_id** (*Optional*): The id of the bluetooth device that should be used for scanning (hci*X*). You can find the correct one using `hcitool dev` (default: 0).
+- **bt_device_id** (*Optional*): The id of the Bluetooth device that should be used for scanning (hci*X*). You can find the correct one using `hcitool dev` (default: 0).
- **beacons** array (*Required*): The beacons that should be monitored.
- **[entry]** (*Required*): Name of the beacon.
- **namespace** (*Required*): Namespace ID of the beacon in hexadecimal notation. Must be exactly 20 characters (10 bytes) long.
diff --git a/source/_components/sensor.eliqonline.markdown b/source/_components/sensor.eliqonline.markdown
index 36fb8621c99..cfa071e3079 100644
--- a/source/_components/sensor.eliqonline.markdown
+++ b/source/_components/sensor.eliqonline.markdown
@@ -28,7 +28,7 @@ sensor:
Configuration variables:
- **access_token** (*Required*): The Access Token for your account.
-- **channel_id** (*Optional*): Channel ID of your device. Needed if you have more than one device.
+- **channel_id** (*Optional*): Channel ID (as integer) of your device. Needed if you have more than one device.
- **name** (*Optional*): The name of the sensor, eg. the city.
For details please check the [API documentation](https://my.eliq.se/knowledge/sv-SE/49-eliq-online/299-eliq-online-api).
diff --git a/source/_components/sensor.emoncms.markdown b/source/_components/sensor.emoncms.markdown
index 16673c163fa..3fb5f1aeab7 100644
--- a/source/_components/sensor.emoncms.markdown
+++ b/source/_components/sensor.emoncms.markdown
@@ -41,7 +41,11 @@ sensor:
## {% linkable_title Default naming scheme %}
-The names of the sensors created by this component, will be a combination of static text, `id` from the config and `feedid` from the Emoncms feed, unless `sensor_names` is used. An example name would be `emoncms1_feedid_10`.
+The names of the sensors created by this component will use the feed names defined in EmonCMS if available,
+or the feed ID otherwise, and will be prefixed with "EmonCMS", e.g. "EmonCMS Total Power" or "EmonCMS Feed 5".
+If the `id` property is anything but `1`, the ID will be shown as well, e.g. "EmonCMS 2 Feed 5".
+
+If `sensor_names` is used, any feeds with defined names will get those names exactly, with no prefix.
### {% linkable_title Examples %}
@@ -92,7 +96,7 @@ sensor:
- 120
sensor_names:
5: "feed 1"
- 48: "kwh feed"
+ 48: "kWh feed"
61: "amp feed"
110: "watt feed"
```
diff --git a/source/_components/sensor.envirophat.markdown b/source/_components/sensor.envirophat.markdown
index cf899363f7f..0d1c200a6df 100644
--- a/source/_components/sensor.envirophat.markdown
+++ b/source/_components/sensor.envirophat.markdown
@@ -13,7 +13,7 @@ ha_iot_class: "Local Polling"
ha_release: 0.44
---
-The `envirophat` sensor platform allows you to display information collected by an [Enviro pHAT](https://shop.pimoroni.com/products/enviro-phat) add-on board for the Raspberry Pi. The board featues a wide range of sensors, such as:
+The `envirophat` sensor platform allows you to display information collected by an [Enviro pHAT](https://shop.pimoroni.com/products/enviro-phat) add-on board for the Raspberry Pi. The board features a wide range of sensors, such as:
- BMP280 temperature/pressure sensor
- TCS3472 light and RGB colour sensor with two LEDs for illumination
@@ -50,7 +50,7 @@ sensor:
Configuration variables:
- **display_options** (*Optional*) array: List of readings to monitor. Default is monitoring all of them:
- - **temperature**: ambient temperature in Celsius. Since the sensor is close to the Raspberry Pi, that migth affect the accuracy of the reading (ie. the Pi might heat up the sensor)
+ - **temperature**: ambient temperature in Celsius. Since the sensor is close to the Raspberry Pi, that might affect the accuracy of the reading (ie. the Pi might heat up the sensor)
- **pressure**: atmospheric pressure in hPa.
- **light**: ambient light, as an integer in the 0-65535 range
- **light_red**: red color reading scaled to the ambient light, as an integer in the 0-255 range
@@ -66,7 +66,7 @@ Configuration variables:
- **voltage_1**: voltage reading on Analog In 1 in units of V
- **voltage_2**: voltage reading on Analog In 2 in units of V
- **voltage_3**: voltage reading on Analog In 3 in units of V
-- **use_led** (*Optional*) True / False boolean; Default value is False, declaring that the onboard LEDs are *not* used for the color measurements thus these readings are based on the ambient light. If the value is set to True, the onboard LEDs will blink whenever a reading is taken.
+- **use_led** (*Optional*) True / False boolean; Default value is False, declaring that the on-board LEDs are *not* used for the color measurements thus these readings are based on the ambient light. If the value is set to True, the on-board LEDs will blink whenever a reading is taken.
### Notes
@@ -101,7 +101,7 @@ Add something like the following to your [customize section](/docs/configuration
# Example configuration.yaml entry
group:
enviro_phat_voltages:
- name: Enviro pHAT Volages`
+ name: Enviro pHAT Voltages`
entities:
- sensor.voltage_0
- sensor.voltage_1
diff --git a/source/_components/sensor.fail2ban.markdown b/source/_components/sensor.fail2ban.markdown
new file mode 100644
index 00000000000..c96b3109910
--- /dev/null
+++ b/source/_components/sensor.fail2ban.markdown
@@ -0,0 +1,185 @@
+---
+layout: page
+title: "Fail2Ban Sensor"
+description: "Instructions how to integrate a fail2ban sensor into Home Assistant."
+date: 2017-10-19 10:30
+sidebar: true
+comments: false
+sharing: true
+footer: true
+ha_category: Sensor
+ha_iot_class: "Local Polling"
+logo: fail2ban.png
+ha_release: 0.57
+---
+
+
+The `fail2ban` sensor allows for IPs banned by [fail2ban](https://www.fail2ban.org/wiki/index.php/Main_Page) to be displayed in the Home Assistant front-end.
+
+
+
+
+
diff --git a/source/_components/sensor.supervisord.markdown b/source/_components/sensor.supervisord.markdown
index 940dfe0a0e1..4fcb8f24157 100644
--- a/source/_components/sensor.supervisord.markdown
+++ b/source/_components/sensor.supervisord.markdown
@@ -15,6 +15,20 @@ ha_iot_class: "Local Polling"
The `supervisord` platform allows you to track the states of [Supervisord](http://supervisord.org/).
+It required that you enable the HTTP feature in the `/etc/supervisord.conf` configuration file.
+
+```text
+[inet_http_server]
+port=127.0.0.1:9001
+```
+
+After a restart of `supervisord` you should be able to access the web interface. If needed then this could be added as a [iFrame panel](/components/panel_iframe/).
+
+
+
+Add a The Things Network integration
+
+Choose a The Things Network integration
+
+Add a The Things Network Data Storage integration
+
+Add a The Things Network integration
+
+Devices overview
+
**Info** section of the **Developer Tools**.
+
+A [`command_line`](/components/sensor.command_line/) with [`hass`](/docs/tools/hass/) to display your current version.
+
+```yaml
+sensor:
+ - platform: command_line
+ name: Version
+ command: "/home/homeassistant/bin/hass --version"
+```
+
+It's also possible to ready a file called `.HA_VERSION` which is located in your Home Assistant [configuration](/docs/configuration/) folder.
+
+```yaml
+sensor:
+ - platform: command_line
+ name: Version
+ command: "cat /home/homeassistant/.homeassistant/.HA_VERSION"
+```
+
+You might think that a [`rest` sensor](/components/sensor.rest/) could work, too, but it will not as Home Assistant is not ready when the sensor get initialized.
+
+```yaml
+sensor:
+ - platform: rest
+ resource: http://IP_ADDRESS:8123/api/config
+ name: Current Version
+ value_template: '{{ value_json.version }}'
+```
diff --git a/source/_components/sensor.vultr.markdown b/source/_components/sensor.vultr.markdown
new file mode 100644
index 00000000000..5aa03c73931
--- /dev/null
+++ b/source/_components/sensor.vultr.markdown
@@ -0,0 +1,76 @@
+---
+layout: page
+title: "Vultr Sensor"
+description: "Instructions on how to integrate Vultr sensor within Home Assistant."
+date: 2017-10-17 21:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: vultr.png
+ha_release: "0.58"
+ha_category: System Monitor
+ha_iot_class: "Cloud Polling"
+---
+
+
+The `vultr` sensor platform will allow you to view current bandwidth usage and pending charges against your [Vultr](https://www.vultr.com/) subscription.
+
+To use this sensor, you must set up your [Vultr hub](/components/vultr/).
+
+
diff --git a/source/_components/switch.abode.markdown b/source/_components/switch.abode.markdown
new file mode 100644
index 00000000000..8979b0e2866
--- /dev/null
+++ b/source/_components/switch.abode.markdown
@@ -0,0 +1,22 @@
+---
+layout: page
+title: "Abode Switch"
+description: "Instructions how to integrate Abode switches into Home Assistant."
+date: 2017-08-26 13:28
+sidebar: true
+comments: false
+sharing: true
+footer: true
+logo: abode.jpg
+ha_release: 0.52
+ha_category: Switch
+ha_iot_class: "Cloud Push"
+---
+
+The `abode` security control panel platform allows you to control your [Abode](https://goabode.com/) alarms.
+
+This component will automatically add `Power Switches` configured in your Abode account. You can reclassify switches to show up within Home Assistant as `Lights` by listing the Abode device ID in your [configuration](/components/abode/#configuration).
+
+This component will also list all Abode `Automations` that are set up within the Abode system, allowing you to activate and deactivate the automations.
+
+The requirement is that you have setup your [Abode hub](/components/abode/).
diff --git a/source/_components/switch.anel_pwrctrl.markdown b/source/_components/switch.anel_pwrctrl.markdown
index 5e2801fb137..fbd3023d3f8 100644
--- a/source/_components/switch.anel_pwrctrl.markdown
+++ b/source/_components/switch.anel_pwrctrl.markdown
@@ -40,4 +40,4 @@ Configuration variables:
- **username** (*Required*): The username for your device.
- **password** (*Required*): The password for your device.
-
+Application overview
+
+Access keys
+
**Services** from the **Developer Tools**. Choose **timer** from the list of **Domains**, select the **Service**, enter something like the sample below into the **Service Data** field, and hit **CALL SERVICE**.
+
+```json
+{
+ "entity_id": "timer.timer0"
+}
+```
+
diff --git a/source/_components/toon.markdown b/source/_components/toon.markdown
new file mode 100644
index 00000000000..08c38f9acea
--- /dev/null
+++ b/source/_components/toon.markdown
@@ -0,0 +1,36 @@
+---
+layout: page
+title: "Toon"
+description: "Instructions how to integrate Toon within Home Assistant."
+date: 2017-10-22 12:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+ha_category: Hub
+ha_release: 0.56
+logo: toon.png
+ha_iot_class: "Cloud Polling"
+---
+
+The `toon` component platform can be used to control your Toon thermostat. This component adds a climate device for your Toon thermostat and sensors for power and gas consumption. The component also auto-detects any smart plugs, solar panels and smoke detectors connected to Toon and adds sensors and switches for them.
+
+For the `toon` component to work, you'll need an active Toon subscription with Eneco. The component uses your Mijn Eneco credentials to control your thermostat through the [toonopafstand](https://toonopafstand.eneco.nl) domain.
+
+To use your Toon thermostat in your installation, add the following to your `configuration.yaml` file:
+
+```yaml
+# Example configuration.yaml entry
+toon:
+ username: YOUR_USERNAME
+ password: YOUR_PASSWORD
+```
+
+Configuration variables:
+
+- **username** (*Required*): Username for Mijn Eneco.
+- **password** (*Required*): Password for Mijn Eneco.
+
+Toon is a smart thermostat delivered by the Eneco power company in The Netherlands. It can measure energy consumption (power and gas), but also the amount of energy generated in case solar panels are connected to it. Toon also acts as a z-wave hub for supported devices like the wall plug and the smoke detector. This component uses the [toonlib library](https://github.com/costastf/toonlib) by Costas Tyfoxylos that connects to the unofficial API on [https://toonopafstand.eneco.nl](https://toonopafstand.eneco.nl).
+
+The current version of this component supports setting any of the four built-in programs and setting the temperature manually. It polls the Toon API at 30 second intervals so the status is relatively fresh without overloading the API.
diff --git a/source/_components/tradfri.markdown b/source/_components/tradfri.markdown
index 8bd6a2af081..1ce20d6a0c2 100644
--- a/source/_components/tradfri.markdown
+++ b/source/_components/tradfri.markdown
@@ -14,54 +14,27 @@ ha_iot_class: "Local Polling"
ha_release: 0.43
---
-The `tradfri` component supports for the IKEA Trådfri (Tradfri) gateway. The gateway can control lights connected to it and Home Assistant will automatically discover its presence on your network.
+The `tradfri` component supports for the IKEA Trådfri (Tradfri) gateway. The gateway can control lights connected to it and Home Assistant will automatically discover its presence on your network, if `discovery:` is present in your `configuration.yaml` file.
-For this to work, you need to install a modified lib-coap library.
-
-Linux:
-
-```bash
-$ sudo apt-get install libtool
-$ sudo apt-get install autoconf
-
-$ git clone --depth 1 --recursive -b dtls https://github.com/home-assistant/libcoap.git
-$ cd libcoap
-$ ./autogen.sh
-$ ./configure --disable-documentation --disable-shared --without-debug CFLAGS="-D COAP_DEBUG_FD=stderr"
-$ make
-$ sudo make install
-```
-
-macOS:
-
-```bash
-$ sudo brew install libtool
-$ sudo brew install autoconf
-$ sudo brew install automake
-$ git clone --depth 1 --recursive -b dtls https://github.com/home-assistant/libcoap.git
-$ cd libcoap
-$ ./autogen.sh
-$ ./configure --disable-documentation --disable-shared --without-debug CFLAGS="-D COAP_DEBUG_FD=stderr"
-$ make
-$ sudo make install
-```
-You will be prompted to configure the gateway through the Home Assistant interface, Enter the security key when prompted and click configure
+You will be prompted to configure the gateway through the Home Assistant interface. Enter the security key when prompted and click configure.
icon of the Developer Tools section. Look for entities that contain 'Vera Device Id' in their attributes, you'll find the entity id on the left.
+If you want to use a Z-Wave device from the Vera controller in Home Assistant automation, you'll need the entity id. In the Home Assistant UI you'll find all entities listed under the
icon of the Developer Tools section. Look for entities that contain 'Vera Device Id' in their attributes, and you'll find the entity id on the left.
diff --git a/source/_components/verisure.markdown b/source/_components/verisure.markdown
index 3dccb534fe7..1db2480cf9e 100644
--- a/source/_components/verisure.markdown
+++ b/source/_components/verisure.markdown
@@ -22,6 +22,7 @@ We support:
* Reading from thermometers and hygrometers integrated in various [devices](/components/sensor.verisure/)
* Mouse Detector
* [Locks](/components/lock.verisure/)
+ * [Door & Window](/components/binary_sensor.verisure/)
To integrate Verisure with Home Assistant, add the following section to your `configuration.yaml` file:
@@ -42,5 +43,6 @@ Configuration variables:
- **locks** (*Optional*): Set to 1 to show locks, 0 to disable. Default 1.
- **thermometers** (*Optional*): Set to 1 to show thermometers, 0 to disable. Default 1.
- **mouse** (*Optional*): Set to 1 to show mouse detectors, 0 to disable. Default 1.
+- **door_window** (*Optional*): Set to 1 to show door and window sensors, 0 to disable. Default 1.
- **code_digits** (*Optional*): Number of digits in PIN code. Default 4.
diff --git a/source/_components/volvooncall.markdown b/source/_components/volvooncall.markdown
index 7a73922f01f..24a6200f5f9 100644
--- a/source/_components/volvooncall.markdown
+++ b/source/_components/volvooncall.markdown
@@ -14,7 +14,7 @@ ha_iot_class: "Cloud Polling"
---
-The `volvooncall` platform offers integrates with the [Volvo On Call](http://www.volvocars.com/intl/own/connectivity/volvo-on-call) cloud service and offers presence detection as well as sensors such as odometer and fuel level.
+The `volvooncall` platform offers integration with the [Volvo On Call](http://www.volvocars.com/intl/own/connectivity/volvo-on-call) cloud service and offers presence detection as well as sensors such as odometer and fuel level.
To use Volvo On Call in your installation, add the following to your `configuration.yaml` file:
@@ -25,7 +25,7 @@ volvooncall:
password: password
```
-Users registered with Volvo in North America or China will need to specify a service url:
+Users registered with Volvo in North America or China will need to specify a service URL:
```yaml
# North America
diff --git a/source/_components/vultr.markdown b/source/_components/vultr.markdown
new file mode 100644
index 00000000000..187ddaab3f3
--- /dev/null
+++ b/source/_components/vultr.markdown
@@ -0,0 +1,40 @@
+---
+layout: page
+title: "Vultr"
+description: "Instructions on how to integrate Vultr within Home Assistant."
+date: 2017-10-17 21:00
+sidebar: true
+comments: false
+sharing: true
+footer: true
+featured: false
+ha_category: Hub
+ha_release: "0.58"
+logo: vultr.png
+ha_iot_class: "Cloud Polling"
+---
+
+
+The `vultr` component allows you to access information about and interact with your [Vultr](https://www.vultr.com) subscriptions (Virtual Private Servers) from Home Assistant.
+
+Obtain your API key from your [Vultr Account](https://my.vultr.com/settings/#settingsapi).
+
+
- Sample Dashboard
+
+ Default Theme
+ Obsidian Theme
+
+ Zen Theme
+
+ Simply Red Theme
+
+ Glassic Theme
+
- The Alarm Panel
-
+{% for entry in entries %}
+
diff --git a/source/_docs/hassbian/customization.markdown b/source/_docs/hassbian/customization.markdown
deleted file mode 100644
index dfc566f1ff8..00000000000
--- a/source/_docs/hassbian/customization.markdown
+++ /dev/null
@@ -1,28 +0,0 @@
----
-layout: page
-title: "Customization"
-description: "Instructions to flash the Home Assistant HASSbian image on a Raspberry Pi."
-date: 2016-09-26 21:00
-sidebar: true
-comments: false
-sharing: true
-footer: true
-redirect_from: /getting-started/hassbian-customization/
----
-
-To allow you to customize your installation further, we have included a tool called `hassbian-config`. This tool comes with a set of packages that can easily be installed for easier customization of your Home Assistant installation.
-
- - Install Hue. Configures the Python executable to allow usage of low numbered ports for use with Emulated Hue component thats used with Amazon Echo, Google Home and Mycroft.ai.
- - Install Mosquitto MQTT server. Installs the latest Mosquitto package and client tools from the Mosquitto projects official repository. Now includes websocket support.
- - Install Libcec. Adds local [HDMI CEC support][cec].
- - Install Open Z-Wave-pip. Installs Python Open Z-Wave from a pip package. This is the quickest and recommended way of installing Z-Wave support but does not OZWCP pre-installed.
- - Install Open Z-Wave. Installs Python Open Z-Wave and OZWCP from git.
- - Install Samba. Allows anyone on your network to edit your configuration from any computer. This share is unsecured and it's usage is not recommended if you share your network with others.
- - Install Tellstick. Installs the Tellstick package for controlling and using a connected Tellstick.
- - Install Tradfri. Installs dependencies for using IKEA Trådfri.
-
-The tool is available by running `hassbian-config`. To view the available packages run `hassbian-config show` and `sudo hassbian-config install PACKAGENAME`.
-For more information about this tool have a look at the [hassbian-scripts repository][hassbian-repo].
-
-[hassbian-repo]: https://github.com/home-assistant/hassbian-scripts
-[cec]: /components/hdmi_cec/
diff --git a/source/_docs/hassbian/installation.markdown b/source/_docs/hassbian/installation.markdown
deleted file mode 100644
index 454122ae2ed..00000000000
--- a/source/_docs/hassbian/installation.markdown
+++ /dev/null
@@ -1,39 +0,0 @@
----
-layout: page
-title: "Installing Hassbian"
-description: "Instructions to flash the Home Assistant HASSbian image on a Raspberry Pi."
-date: 2016-09-26 21:00
-sidebar: true
-comments: false
-sharing: true
-footer: true
-redirect_from: /getting-started/installation-raspberry-pi-image/
----
-
-The easiest way to install Home Assistant on your Raspberry Pi is by using HASSbian: a Raspberry Pi image with Home Assistant built-in. The image will install the latest version of Home Assistant on initial boot (~10 minutes).
-
- 1. [Download the Hassbian image][image-download] (364 MB)
- 2. Use [Etcher][etcher] to flash the image to your SD card
- 3. Ensure your Raspberry Pi has wired access to the internet.
- 4. Insert SD card to Raspberry Pi and turn it on. Initial installation of Home Assistant will take about 5 minutes.
-
-These instructions are also available as a [video](https://www.youtube.com/watch?v=iIz6XqDwHEk). Additional information is available in this [video](https://www.youtube.com/watch?v=tCGlQSsQ-Mc).
-
-After initial boot, you can reach Home Assistant in your browser at [http://hassbian.local:8123]. If you want to login via SSH, the default username is `pi` and password is `raspberry` (please change this by running `passwd`). The Home Assistant configuration is located at `/home/homeassistant/.homeassistant/`.
-
-The following extras are included on the image:
-
- - GPIO pins are ready to use.
- - Bluetooth is ready to use (supported models only, no Bluetooth LE).
- - SSH server is enabled.
- - A tool called `hassbian-config`.
-
-### {% linkable_title Technical Details %}
-
- - Home Assistant is installed in a virtual Python environment at `/srv/homeassistant/`
- - Home Assistant will be started as a service run by the user `homeassistant`
- - The configuration is located at `/home/homeassistant/.homeassistant`
-
-[image-download]: https://github.com/home-assistant/pi-gen/releases/latest
-[etcher]: https://etcher.io/
-[http://hassbian.local:8123]: http://hassbian.local:8123
diff --git a/source/_docs/installation.markdown b/source/_docs/installation.markdown
index 7de9486a425..c5fe54e9ed8 100644
--- a/source/_docs/installation.markdown
+++ b/source/_docs/installation.markdown
@@ -10,7 +10,7 @@ footer: true
redirect_from: /getting-started/installation/
---
-Home Assistant provides multiple ways to be installed. A requirement is that you have [Python](https://www.python.org/downloads/) installed. For Windows we require at least **Python 3.5** and for other operating systems at least **Python 3.4.2**.
+Home Assistant provides multiple ways to be installed. A requirement is that you have [Python](https://www.python.org/downloads/) installed. For Windows, we require at least **Python 3.5** and for other operating systems at least **Python 3.4.2**.
+
+
@@ -72,25 +80,50 @@
+
+
+
+
-
+
+
diff --git a/source/_includes/asides/docs_navigation.html b/source/_includes/asides/docs_navigation.html
index f3351b1d62f..cc64ef04a9f 100644
--- a/source/_includes/asides/docs_navigation.html
+++ b/source/_includes/asides/docs_navigation.html
@@ -3,26 +3,22 @@
Topics
+