diff --git a/.themes/classic/source/_includes/head.html b/.themes/classic/source/_includes/head.html index 6b5412ca646..48d1018fca5 100644 --- a/.themes/classic/source/_includes/head.html +++ b/.themes/classic/source/_includes/head.html @@ -15,6 +15,7 @@ + {% capture canonical %}{{ site.url }}{% if site.permalink contains '.html' %}{{ page.url }}{% else %}{{ page.url | remove:'index.html' | strip_slash }}{% endif %}{% endcapture %} diff --git a/Rakefile b/Rakefile index e44380c49dc..c56c918561c 100644 --- a/Rakefile +++ b/Rakefile @@ -60,6 +60,13 @@ task :generate do abort("Generating CSS failed") unless success success = system "jekyll build" abort("Generating site failed") unless success + if ENV["CONTEXT"] != 'production' + File.open("#{public_dir}robots.txt", 'w') do |f| + f.write "User-agent: *\n" + f.write "Disallow: /\n" + end + end + public_dir end desc "Watch the site and regenerate when it changes" diff --git a/_config.yml b/_config.yml index 40a6c96ad29..4a90ed5885b 100644 --- a/_config.yml +++ b/_config.yml @@ -140,13 +140,13 @@ social: # Home Assistant release details current_major_version: 0 current_minor_version: 65 -current_patch_version: 3 -date_released: 2018-03-11 +current_patch_version: 5 +date_released: 2018-03-14 # Either # or the anchor link to latest release notes in the blog post. # Must be prefixed with a # and have double quotes around it. # Major release: -patch_version_notes: "#release-0652---march-11" +patch_version_notes: "#release-0655---march-14" # Minor release (Example #release-0431---april-25): # Date we moved to Discourse for comments diff --git a/source/_addons/dnsmasq.markdown b/source/_addons/dnsmasq.markdown index 6ae42294f54..d894320ab02 100644 --- a/source/_addons/dnsmasq.markdown +++ b/source/_addons/dnsmasq.markdown @@ -11,10 +11,6 @@ footer: true Setup and manage a [Dnsmasq](http://thekelleys.org.uk/dnsmasq/doc.html) DNS server. This allows you to manipulate DNS requests. For example, you can have your Home Assistant domain resolve with an internal address inside your network. -

-`interface` options are for resinos based installation. On other system you can set it to `""`, for listen on every interface. -

- ```json { "defaults": ["8.8.8.8", "8.8.4.4"], @@ -23,8 +19,7 @@ Setup and manage a [Dnsmasq](http://thekelleys.org.uk/dnsmasq/doc.html) DNS serv ], "hosts": [ {"host": "home.mydomain.io", "ip": "192.168.1.10"} - ], - "interface": "eth1" + ] } ``` @@ -33,4 +28,3 @@ Configuration variables: - **defaults** (*Required*): A list of DNS servers to forward default requests to. - **forwards** (*Optional*): A list of domains that will forward to a specific server. - **hosts** (*Optional*): A list of hosts to resolve statically. -- **interface** (*Optional*): If an interface is set, it listens only on this interface. Needs to be set for ResinOS. Normally is `eth0` for ethernet wired connection and `wlan0` for wireless connection. diff --git a/source/_components/binary_sensor.trend.markdown b/source/_components/binary_sensor.trend.markdown index 41ac39437eb..5cad94a3b65 100644 --- a/source/_components/binary_sensor.trend.markdown +++ b/source/_components/binary_sensor.trend.markdown @@ -23,7 +23,7 @@ binary_sensor: - platform: trend sensors: solar_angle: - entity_id: sun.sun + entity_id: sensor.cpu_speed ``` Configuration variables: @@ -59,7 +59,7 @@ binary_sensor: - platform: trend sensors: sun_rising: - entity_id: sun.sun + entity_id: sensor.cpu_speed ``` 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: diff --git a/source/_components/calendar.caldav.markdown b/source/_components/calendar.caldav.markdown index ca93537fec0..8ea6b6ad087 100644 --- a/source/_components/calendar.caldav.markdown +++ b/source/_components/calendar.caldav.markdown @@ -13,11 +13,11 @@ ha_release: "0.60" --- -The `caldav` platform allows you to connect to your WebDav calendar and generate binary sensors. A different sensor will be created for each individual calendar, or you can specify custom calendars which match a criteria you define (more on that below). These sensors will be `on` if you have an on going event in that calendar or `off` if the event is later in time, or if there is no event at all. The WebDav calendar get updated roughly every 10 minutes. +The `caldav` platform allows you to connect to your WebDav calendar and generate binary sensors. A different sensor will be created for each individual calendar, or you can specify custom calendars which match a criteria you define (more on that below). These sensors will be `on` if you have an on going event in that calendar or `off` if the event is later in time, or if there is no event at all. The WebDav calendar get updated roughly every 15 minutes. ### {% linkable_title Prerequisites %} -You need to have a CalDav server and eventually credentials for it. This component was tested against [Baikal](http://sabre.io/baikal/) but any component complying with the RFC4791 should work. +You need to have a CalDav server and credentials for it. This component was tested against [Baikal](http://sabre.io/baikal/) but any component complying with the RFC4791 should work. [Nextcloud](https://nextcloud.com/) and [Owncloud](https://owncloud.org/) work fine. You might need some additional system packages to compile the Python caldav library. On a Debian based system, install them by: @@ -30,7 +30,7 @@ $ sudo apt-get install libxml2-dev libxslt1-dev zlib1g-dev To integrate a WebDav calendar in Home Assistant, add the following section to your `configuration.yaml` file: ```yaml -# Example configuration.yaml entry +# Example configuration.yaml entry for baikal calendar: - platform: caldav username: john.doe@test.com @@ -38,6 +38,15 @@ calendar: url: https://baikal.my-server.net/cal.php/calendars/john.doe@test.com/default ``` +```yaml +# Example configuration.yaml entry for nextcloud, calendars will be found automatically +calendar: + - platform: caldav + username: john.doe + password: !secret caldav + url: https://nextcloud.example.com/remote.php/dav +``` + This example will generate default binary sensors for each calendar you have in your account. Those calendars will be `on` when there is an ongoing event and `off` if not. Events that last a whole day are ignored in those calendars. You have to setup custom calendars in order to take them into account or for advanced event filtering. @@ -80,7 +89,7 @@ password: type: string calendars: required: false - description: List of the calendars to filter. Empty or absent means no filtering. + description: List of the calendars to filter. Empty or absent means no filtering, i.e. all calendars will be added. type: list custom_calendars: required: false @@ -97,7 +106,7 @@ custom_calendars: type: string search: required: true - pending_charges: Regular expression for filtering the events based on the content of their summary, description or location. + description: Regular expression for filtering the events based on the content of their summary, description or location. type: string {% endconfiguration %} @@ -111,3 +120,50 @@ custom_calendars: - **location**: The event Location. - **start_time**: Start time of event. - **end_time**: End time of event. + +### {% linkable_title Examples %} + +All events of the calendars "private" and "holidays". Note that all day events are not included. +```yaml +# Example configuration.yaml entry for nextcloud +calendar: + - platform: caldav + url: https://nextcloud.example.com/remote.php/dav + username: 'me' + password: !secret caldav + calendars: + - private + - holidays +``` + +Full example with automation to wake up to music if not holiday. Prerequisite: you have a calendar named "work" where you create calendar entries containing "Holiday". + +Custom calendar names are built from the main calendar + name of the custom calendar. + +```yaml +# configuration.yaml +calendar: + - platform: caldav + url: https://nextcloud.example.com/remote.php/dav + username: 'me' + password: !secret caldav + custom_calendars: + - name: holiday + calendar: work + search: 'Holiday' + +# automations.yaml +- id: wakeup + alias: worktime wakeup + trigger: + platform: time + at: 06:40:00 + action: + - service: media_player.media_play + entity_id: media_player.bedroom + condition: + - condition: state + entity_id: calendar.work_holiday + state: 'off' + +``` diff --git a/source/_components/discovery.markdown b/source/_components/discovery.markdown index f6629e31598..f08c5306208 100644 --- a/source/_components/discovery.markdown +++ b/source/_components/discovery.markdown @@ -79,6 +79,7 @@ Valid values for ignore are: * `sabnzbd`: SABnzbd downloader * `samsung_tv`: Samsung TVs * `sonos`: Sonos speakers + * `songpal` : Songpal * `tellduslive`: Telldus Live * `wink`: Wink Hub * `yamaha`: Yamaha media player diff --git a/source/_components/egardia.markdown b/source/_components/egardia.markdown index 068920b8ab4..1f0396bde73 100644 --- a/source/_components/egardia.markdown +++ b/source/_components/egardia.markdown @@ -2,7 +2,7 @@ layout: page title: "Egardia" description: "Instructions how to setup Egardia / Woonveilig within Home Assistant." -date: 2018-03-02 09:00 +date: 2018-03-13 09:00 sidebar: true comments: false sharing: true @@ -16,29 +16,81 @@ The `egardia` platform enables the ability to control an [Egardia](http://egardi You will need to know the IP of your alarm panel on your local network. Test if you can login to the panel by browsing to the IP address and log in using your Egardia/Woonveilig account. -To enable the integration with your alarm panel, add the following lines to your `configuration.yaml` file: +## {% linkable_title Basic configuration %} -```yaml -# Example configuration.yaml entry -egardia: - host: YOUR_HOST - username: YOUR_USERNAME - password: YOUR_PASSWORD +To enable the integration with your alarm panel, add the following lines to your `configuration.yaml` file: + ```yaml + # Example configuration.yaml entry + egardia: + host: YOUR_HOST + username: YOUR_USERNAME + password: YOUR_PASSWORD ``` -Configuration variables: - -- **host** (*Required*): The local IP address of the Egardia/Woonveilig alarm panel. -- **username** (*Required*): Username for the Egardia/Woonveilig account. -- **password** (*Required*): Password for Egardia/Woonveilig account. -- **version** (*Optional*): The version of the Egardia system. `GATE-01`, `GATE-02` and `GATE-03` are currently supported. Defaults to `GATE-01`. -- **port** (*Optional*): The port of the alarm panel. Defaults to 80. -- **report_server_enabled** (*Optional*): Enable reporting by server. Defaults to `False`. -- **report_server_port** (*Optional*): Port of the Egardia server. Defaults to 52010. -- **report_server_codes** list (*Optional*): List of codes for the different states. +{% configuration %} +host: + description: The local IP address of the Egardia/Woonveilig alarm panel. + required: true + type: string +username: + description: Username for the Egardia/Woonveilig account. + required: true + type: string +password: + description: Password for Egardia/Woonveilig account. + required: true + type: string +version: + description: The version of the Egardia system. `GATE-01`, `GATE-02` and `GATE-03` are currently supported. + required: false + type: string + default: 'GATE-01' +port: + description: The port of the alarm panel. + required: false + type: int + default: 80 +report_server_enabled: + description: Enable reporting by server. + required: false + type: string + default: false +report_server_port: + description: Port of the Egardia server. + required: false + type: int + default: 52010 +report_server_codes: + description: Map of list of codes for the different states. + required: false + type: map + keys: + arm: + description: List of codes for the 'arm' state. + required: false + type: list + disarm: + description: List of codes for the 'disarm' state. + required: false + type: list + armhome: + description: List of codes for the 'armhome' state. + required: false + type: list + triggered: + description: List of codes for the 'triggered' state. + required: false + type: list + ignore: + description: List of codes that will be ignored. + required: false + type: list +{% endconfiguration %} Note that this basic configuration will only enable you to read the armed/armed away/disarmed status of your alarm and will **not** update the status if the alarm is triggered. This is because of how Egardia built their system. The alarm triggers normally go through their servers. -You can change this, however, using the following procedure. This is a more advanced configuration. +You can change this, however, using the following procedure. This is a more advanced (and more useful) configuration. + +## {% linkable_title Advanced configuration %} 1. Log in to your alarm system's control panel. You will need to access http://[IP of your control panel]. You know this already since you need it in the basic configuration from above. Log in to the control panel with your Egardia/Woonveilig username and password. 2. Once logged in, go to *System Settings*, *Report* and change the Server Address for your primary server to the IP or hostname of your Home Assistant machine. You can leave the port number set to 52010 or change it to anything you like. **Make sure to change the settings of the primary server otherwise the messages will not come through. Note that this will limit (or fully stop) the number of alarm messages you will get through Egardia's / Woonveilig services.** Maybe, that is just what you want. Make sure to save your settings by selecting 'OK'. @@ -47,9 +99,9 @@ You can change this, however, using the following procedure. This is a more adva ```yaml # Example configuration.yaml entry egardia: -   host: YOUR_HOST -   username: YOUR_USERNAME -   password: YOUR_PASSWORD + host: YOUR_HOST + username: YOUR_USERNAME + password: YOUR_PASSWORD report_server_enabled: True report_server_port: PORT_OF_EGARDIASERVER (optional, defaults to 52010) report_server_codes: @@ -63,5 +115,3 @@ You can change this, however, using the following procedure. This is a more adva Note that for all code groups (*arm*,*disarm*, etc) multiple codes can be entered since each sensor triggers with a different code and each user of the system has its own arm and disarm codes. Also note that your system will do regular system checks which will be reported as well. Since Home Assistant provides no way of handling them properly, you can enter those codes as *ignore* (again, multiple codes can be used here). The egardia component will ignore these codes and continue returning the old status if it receives any of the codes that are listed as ignore. This is useful for example when you have armed your alarm at night: normally a system check will occur at least once during the night and if that code is not specified anywhere Home Assistant will set the status of the alarm to its default, which is unarmed. This is in fact wrong. Listing the code as ignore changes this behavior and Home Assistant will continue to show the status the alarm is in (disarm, arm, home, triggered) even when system checks occur. 5. Test your setup and enjoy. The component will update if the alarm status changes, including triggers. You can use this to build your own automations and send notifications as you wish. *Note*: previous versions required a separate egardiaserver to be set up. This is no longer necessary and corresponding system services can be removed (using systemctl). - - diff --git a/source/_components/light.limitlessled.markdown b/source/_components/light.limitlessled.markdown index 5373e34b878..2dcf4d9c7a8 100644 --- a/source/_components/light.limitlessled.markdown +++ b/source/_components/light.limitlessled.markdown @@ -90,3 +90,16 @@ When starting Home Assistant, the last recorded state will be shown. This might If you control your LimitlessLED lights via the MiLight mobile application or other means while Home Assistant is running, Home Assistant can not track those changes and you may observe obsolete information. This lack of synchronization is due to a LimitlessLED limitation. + +

+ +

+ +Because LimitlessLED lights may have an obsolete state, Home Assistant shows the power switch as two buttons rather than a toggle. This ensures that the power can be set with a single click even if the assumed state is wrong. You can change to use the power toggle with [Customize](/docs/configuration/customizing-devices/): + +```yaml +homeassistant: + customize_domain: + light: + assumed_state: false +``` diff --git a/source/_components/sensor.darksky.markdown b/source/_components/sensor.darksky.markdown index 6e3a6ced6bd..aebe2326e44 100644 --- a/source/_components/sensor.darksky.markdown +++ b/source/_components/sensor.darksky.markdown @@ -9,7 +9,7 @@ sharing: true footer: true logo: dark_sky.png ha_category: Weather -featured: true +featured: false ha_release: "0.30" redirect_from: /components/sensor.forecast/ ha_iot_class: "Cloud Polling" diff --git a/source/_components/sensor.speedtest.markdown b/source/_components/sensor.speedtest.markdown index bc1e8bf9884..f3fe80903d2 100644 --- a/source/_components/sensor.speedtest.markdown +++ b/source/_components/sensor.speedtest.markdown @@ -16,12 +16,13 @@ ha_iot_class: "Cloud Polling" The `speedtest` sensor component uses the [Speedtest.net](https://speedtest.net/) web service to measure network bandwidth performance. -By default, it will run every hour. The user can change the update frequency in the configuration by defining the minute, hour, and day for a speedtest to run. For the `server_id` check the list of [available servers](https://www.speedtest.net/speedtest-servers.php). +By default, it will run every hour. The user can change the update frequency in the configuration by defining the minute, hour, and day for a speed test to run. For the `server_id` check the list of [available servers](https://www.speedtest.net/speedtest-servers.php). To add a Speedtest.net sensor to your installation, add the following to your `configuration.yaml` file: Once per hour, on the hour (default): +{% raw %} ```yaml # Example configuration.yaml entry sensor: @@ -31,32 +32,63 @@ sensor: - download - upload ``` +{% endraw %} -Configuration variables: - -- **monitored_conditions** array (*Required*): Sensors to display in the frontend. - - **ping**: Reaction time in ms of your connection (how fast you get a response after you've sent out a request). - - **download**: Download speed in Mbps. - - **upload**: Upload speed in Mbps. -- **server_id** (*Optional*): Specify the speedtest server to perform test against. -- **minute** (*Optional*): Specify the minute(s) of the hour to schedule the speedtest. Use a list for multiple entries. Default is 0. -- **hour** (*Optional*): Specify the hour(s) of the day to schedule the speedtest. Use a list for multiple entries. Default is None. -- **day** (*Optional*): Specify the day(s) of the month to schedule the speedtest. Use a list for multiple entries. Default is None. -- **manual** (*Optional*): True or False to turn manual mode on or off. Manual mode will disable scheduled speedtests. +{% configuration %} + monitored_conditions: + description: Sensors to display in the frontend. + required: true + type: list + keys: + ping: + description: Reaction time in ms of your connection (how fast you get a response after you've sent out a request). + download: + description: Download speed (Mbit/s) + upload: + description: Upload speed (Mbit/s) + server_id: + description: Specify the speed test server to perform the test against. + required: false + type: int + day: + description: Specify the day(s) of the month to schedule the speed test. Use a list for multiple entries. + required: false + type: [int, list] + hour: + description: Specify the hour(s) of the day to schedule the speed test. Use a list for multiple entries. + required: false + type: [int, list] + minute: + description: Specify the minute(s) of the hour to schedule the speed test. Use a list for multiple entries. + required: false + type: [int, list] + default: 0 + second: + description: Specify the second(s) of the minute to schedule the speed test. Use a list for multiple entries. + required: false + type: [int, list] + default: 0 + manual: + description: True or False to turn manual mode on or off. Manual mode will disable scheduled speed tests. + required: false + type: bool + default: false +{% endconfiguration %} This component uses [speedtest-cli](https://github.com/sivel/speedtest-cli) to gather network performance data from Speedtest.net. Please be aware of the potential [inconsistencies](https://github.com/sivel/speedtest-cli#inconsistency) that this component may display. -When Home Assistant first starts up, the values of the speedtest will show as `Unknown`. You can use the service `sensor.update_speedtest` to run a manual speedtest and populate the data or just wait for the next regularly scheduled test. You can turn on manual mode to disable the scheduled speedtests. +When Home Assistant first starts up, the values of the speed test will show as `Unknown`. You can use the service `sensor.update_speedtest` to run a manual speed test and populate the data or just wait for the next regularly scheduled test. You can turn on manual mode to disable the scheduled speed tests. ## {% linkable_title Examples %} -In this section you find some real life examples of how to use this sensor. +In this section, you find some real-life examples of how to use this sensor. ### {% linkable_title Run periodically %} Every half hour of every day: +{% raw %} ```yaml # Example configuration.yaml entry sensor: @@ -69,11 +101,13 @@ sensor: - download - upload ``` +{% endraw %} ### {% linkable_title Run at a specific time %} Everyday at 12:30AM, 6:30AM, 12:30PM, 6:30PM: +{% raw %} ```yaml # Example configuration.yaml entry sensor: @@ -89,29 +123,33 @@ sensor: - download - upload ``` +{% endraw %} ### {% linkable_title Using as a trigger in an automation %} +{% raw %} ```yaml # Example configuration.yaml entry automation: - - alias: 'Internet Speed Glow Connect Great' - trigger: - platform: template - value_template: '{% raw %}{{ states.sensor.speedtest_download.state|float > 10}}{% endraw %}' - action: - service: shell_command.green - - alias: 'Internet Speed Glow Connect Poor' - trigger: - platform: template - value_template: '{% raw %}{{ states.sensor.speedtest_download.state| float < 10 }}{% endraw %}' - action: - service: shell_command.red + - alias: "Internet Speed Glow Connect Great" + trigger: + - platform: template + value_template: "{{ states('sensor.speedtest_download')|float > 10 }}" + action: + - service: shell_command.green + + - alias: "Internet Speed Glow Connect Poor" + trigger: + - platform: template + value_template: "{{ states('sensor.speedtest_download')|float < 10 }}" + action: + - service: shell_command.red ``` +{% endraw %} ## {% linkable_title Notes %} - When running on Raspberry Pi, just note that the maximum speed is limited by its 100 Mbit/s LAN adapter. -- Entries under `monitored_conditions` only control what entities are available under home-assistant, it does not disable the condition from running. -- If ran frequently, this component has the capability of using a very large amount of data. Frequent updates should be avoided on bandwidth capped connections. -- While running, network usage is fully utilized. This may have a negative affect on other devices in use the network such as gaming consoles or streaming boxes. +- Entries under `monitored_conditions` only control what entities are available in Home Assistant, it does not disable the condition from running. +- If ran frequently, this component has the ability to use a considerable amount of data. Frequent updates should be avoided on bandwidth-capped connections. +- While running, your network capacity is fully utilized. This may have a negative effect on other devices in use the network such as gaming consoles or streaming boxes. diff --git a/source/_components/usps.markdown b/source/_components/usps.markdown index 3971db4ec66..3a7c9a06abe 100644 --- a/source/_components/usps.markdown +++ b/source/_components/usps.markdown @@ -32,6 +32,8 @@ Install the latest version of [PhantomJS]( http://phantomjs.org/download.html). Don't use apt-get to install PhantomJS. This version is not compatible.

+If you use the PhantomJS option, specify `driver: phantomjs` in your `usps` configuration. + ### Chrome @@ -60,6 +62,7 @@ Configuration options for the USPS component: - **username** (*Required*): The username to access the MyUSPS service. - **password** (*Required*): The password for the given username. +- **driver** (*Required*): Specify if you're using `phantomjs` or `chrome`. - **name** (*Optional*): Prefix for sensor names (defaults to "USPS")

diff --git a/source/_components/weather.darksky.markdown b/source/_components/weather.darksky.markdown index 0352ef6074e..0130a933d05 100644 --- a/source/_components/weather.darksky.markdown +++ b/source/_components/weather.darksky.markdown @@ -7,6 +7,7 @@ sidebar: true comments: false sharing: true footer: true +featured: true logo: dark_sky.png ha_category: Weather ha_release: 0.61 diff --git a/source/_docs/installation.markdown b/source/_docs/installation.markdown index 4b54abe2d32..bb51e938636 100644 --- a/source/_docs/installation.markdown +++ b/source/_docs/installation.markdown @@ -14,7 +14,7 @@ redirect_from: /getting-started/installation/ Beginners should check our [Getting started guide](/getting-started/) first. This is for users that require advanced installations.

-Home Assistant provides multiple ways to be installed. A requirement is that you have [Python 3.5+](https://www.python.org/downloads/) installed. +Home Assistant provides multiple ways to be installed. A requirement is that you have [Python 3.5.3 or later](https://www.python.org/downloads/) installed.
diff --git a/source/_docs/installation/archlinux.markdown b/source/_docs/installation/archlinux.markdown index 09ae89b4dde..3e13bd26912 100644 --- a/source/_docs/installation/archlinux.markdown +++ b/source/_docs/installation/archlinux.markdown @@ -21,10 +21,10 @@ $ sudo pacman -S python-pip and Home Assistant itself. ```bash -$ pip3 install homeassistant +$ pip3 install --user homeassistant ``` -Home Assistant is part of the [AUR](https://aur.archlinux.org/packages/home-assistant/). This means that it can be installed with `pacaur`: +Home Assistant is part of the [AUR](https://aur.archlinux.org/packages/home-assistant/). This means that it can be installed with `pacaur`. This package is often broken or outdated: ```bash $ pacaur -S home-assistant diff --git a/source/_docs/installation/armbian.markdown b/source/_docs/installation/armbian.markdown index e54d67acb85..5f16fc5bc0e 100644 --- a/source/_docs/installation/armbian.markdown +++ b/source/_docs/installation/armbian.markdown @@ -11,6 +11,8 @@ footer: true [armbian](https://www.armbian.com) runs on a wide-variety of [ARM development boards](https://www.armbian.com/download/). Currently there are around 50 boards supported inclusive the OrangePi family, Cubieboard, Pine64, and Odroid. +Python 3.5.3 or later is required. + Setup Python and `pip` ```bash diff --git a/source/_docs/installation/centos.markdown b/source/_docs/installation/centos.markdown index b427d83d39e..d1d29402a38 100644 --- a/source/_docs/installation/centos.markdown +++ b/source/_docs/installation/centos.markdown @@ -9,9 +9,9 @@ sharing: true footer: true --- -To run Python 3.x on [CentOS](https://www.centos.org/) or RHEL (Red Hat Enterprise Linux), [Software Collections](https://www.softwarecollections.org/en/scls/rhscl/rh-python34/) needs to be activated first. +To run Python 3.x on [CentOS](https://www.centos.org/) or RHEL (Red Hat Enterprise Linux), [Software Collections](https://www.softwarecollections.org/en/scls/rhscl/rh-python36/) needs to be activated first. -There are effort in progress to bring Python 3.4 to [Extra Packages for Enterprise Linux (EPEL)](https://fedoraproject.org/wiki/EPEL) which will allow you to follow the [Fedora Instructions](/docs/installation/fedora/). +You must install Python 3.5.3 or later. Software Collections version of Python 3.5 is 3.5.1 so this guide uses Python 3.6. ### {% linkable_title Using Software Collections %} @@ -21,21 +21,21 @@ First of all install the software collection repository as root. For example, on $ yum install centos-release-scl ``` -Then install the Python 3.5 package: +Then install the Python 3.6 package: ```bash -$ yum install rh-python35 +$ yum install rh-python36 ``` Once installed, switch to your `homeassistant` user (if you've set one up), enable the software collection and check that it has set up the new version of Python: ```bash -$ scl enable rh-python35 bash +$ scl enable rh-python36 bash $ python --version -Python 3.5.1 +Python 3.6.3 ``` -You will be in a command shell set up with Python 3.5 as your default version. The virtualenv and pip commands will be correct for this version, so you can now create a virtual environment and install Home Assistant following the main [instructions](https://home-assistant.io/docs/installation/virtualenv/#step-4-set-up-the-virtualenv). +You will be in a command shell set up with Python 3.6 as your default version. The virtualenv and pip commands will be correct for this version, so you can now create a virtual environment and install Home Assistant following the main [instructions](https://home-assistant.io/docs/installation/virtualenv/#step-4-set-up-the-virtualenv). You will need to enable the software collection each time you log on before you activate your virtual environment. @@ -55,7 +55,7 @@ User=homeassistant Environment=VIRTUAL_ENV="/srv/homeassistant" Environment=PATH="$VIRTUAL_ENV/bin:$PATH" # ExecStart using software collection: -ExecStart=/usr/bin/scl enable rh-python35 -- /srv/homeassistant/bin/hass -c "/home/homeassistant/.homeassistant" +ExecStart=/usr/bin/scl enable rh-python36 -- /srv/homeassistant/bin/hass -c "/home/homeassistant/.homeassistant" [Install] WantedBy=multi-user.target diff --git a/source/_docs/installation/hassbian/installation.markdown b/source/_docs/installation/hassbian/installation.markdown index 3c4acb26e9d..8ed803699e9 100644 --- a/source/_docs/installation/hassbian/installation.markdown +++ b/source/_docs/installation/hassbian/installation.markdown @@ -12,7 +12,7 @@ redirect_from: /docs/hassbian/installation/ 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) + 1. [Download the Hassbian image][image-download] 2. Use [Etcher][etcher] to flash the image to your SD card 3. Ensure your Raspberry Pi has wired access to the internet for the entire process or configure your wireless network settings **before proceeding to step 4**. 4. Insert SD card to Raspberry Pi and turn it on. Initial installation of Home Assistant will take about 5 minutes. diff --git a/source/_docs/installation/macos.markdown b/source/_docs/installation/macos.markdown index 25b3706db7c..51292c43ab2 100644 --- a/source/_docs/installation/macos.markdown +++ b/source/_docs/installation/macos.markdown @@ -11,7 +11,7 @@ footer: true [macOS](http://www.apple.com/macos/) is available by default on Apple computer. If you run a different operating system, please refer to the other section of the documentation. -To run Home Assistant on macOS you need to install Python first. Download Python from https://www.python.org/downloads/mac-osx/ and follow the instructions of the installer. +To run Home Assistant on macOS you need to install Python first. Download Python 3.5.3 or later from https://www.python.org/downloads/mac-osx/ and follow the instructions of the installer. Open a terminal and install Home Assistant. diff --git a/source/_docs/installation/raspberry-pi.markdown b/source/_docs/installation/raspberry-pi.markdown index d7f3c231ef7..b0cb1b8a4a1 100644 --- a/source/_docs/installation/raspberry-pi.markdown +++ b/source/_docs/installation/raspberry-pi.markdown @@ -12,6 +12,8 @@ redirect_from: /getting-started/installation-raspberry-pi/ This installation of Home Assistant requires the Raspberry Pi to run [Raspbian Lite](https://www.raspberrypi.org/downloads/raspbian/). The installation will be installed in a [Virtual Environment](/docs/installation/virtualenv) with minimal overhead. Instructions assume this is a new installation of Raspbian Lite. +You must have Python 3.5.3 or later installed, which is the case for Raspbian Stretch. +

Although these installation steps specifically mention a Raspberry Pi, you can go ahead and proceed on any Linux install as well. This guide is also referred to as the "Advanced Guide" for a virtual environment install.

diff --git a/source/_docs/installation/synology.markdown b/source/_docs/installation/synology.markdown index 8885d8e868b..fee65366be6 100644 --- a/source/_docs/installation/synology.markdown +++ b/source/_docs/installation/synology.markdown @@ -26,7 +26,7 @@ Running these commands will: Using the Synology webadmin: - - Install python3 using the Synology Package Center + - Install python3 using the Synology Package Center (be aware, this provides 3.5.1, which is not compatible with Home Assistant 0.65.0 or later) - Create homeassistant user and add to the "users" group SSH onto your synology & login as admin or root @@ -57,6 +57,10 @@ Use PIP to install Homeassistant package # ./python3 -m pip install homeassistant ``` +

+Until Synology offer an updated version of Python, Home Assistant 0.64 is the most recent version that will be able to be installed. You can manually specify the version of Home Assistant to install, for example to install version 0.64.3 you would do `./python3 -m pip install homeassistant==0.64.3` +

+ Create homeassistant config directory & switch to it ```bash diff --git a/source/_docs/scripts/conditions.markdown b/source/_docs/scripts/conditions.markdown index d2dc0638d80..a9e0b8c5647 100644 --- a/source/_docs/scripts/conditions.markdown +++ b/source/_docs/scripts/conditions.markdown @@ -28,6 +28,21 @@ condition: below: '20' ``` +If you do not want to combine AND and OR conditions, you can also just list them sequentially, by default all conditions have to be true. +The following configuration works the same as the one listed above: + +```yaml +condition: + - condition: state + entity_id: 'device_tracker.paulus' + state: 'home' + - condition: numeric_state + entity_id: 'sensor.temperature' + below: '20' +``` + +Currently you need to format your conditions like this to be able to edit them using the [automations editor](/docs/automation/editor/). + ### {% linkable_title OR condition %} Test multiple conditions in 1 condition statement. Passes if any embedded condition is valid. diff --git a/source/_includes/custom/footer.html b/source/_includes/custom/footer.html index 886bd8a6405..b07ee5bcf85 100644 --- a/source/_includes/custom/footer.html +++ b/source/_includes/custom/footer.html @@ -7,7 +7,7 @@
Contact us at hello@home-assistant.io (no support!).
Website powered by Jekyll and the Oscalite theme.
- Hosted by GitHub and served by CloudFlare. + Hosted by Netlify.
Creative Commons License
home-assistant.io is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License.
diff --git a/source/_posts/2018-03-09-release-65.markdown b/source/_posts/2018-03-09-release-65.markdown index 09d94335436..c198e403ad0 100644 --- a/source/_posts/2018-03-09-release-65.markdown +++ b/source/_posts/2018-03-09-release-65.markdown @@ -146,6 +146,21 @@ intent_script: - Bump pyvera to 0.2.42. Improve event loop robustness. ([@pavoni] - [#13095]) ([vera docs]) - Fix Kodi by updateding jsonrpc-websocket to 0.6 ([@Tadly] - [#13096]) ([media_player.kodi docs]) +## {% linkable_title Release 0.65.4 - March 12 %} + +- Fix unavailable property for wemo switch ([@balloob] - [#13106]) ([switch.wemo docs]) +- Hue: Catch if bridge goes unavailable ([@balloob] - [#13109]) ([hue docs]) ([light.hue docs]) +- Adding check for empty discovery info in alarm control panel Egardia. ([@jeroenterheerdt] - [#13114]) ([alarm_control_panel.egardia docs]) +- Throttle Arlo api calls ([@arsaboo] - [#13143]) ([arlo docs]) + +## {% linkable_title Release Notes 0.65.5 - March 14 %} + +- Bugfix HomeKit: Error string values for temperature ([@cdce8p] - [#13162]) ([homekit docs]) +- Revert throttle Arlo api calls ([@arsaboo] - [#13174]) ([arlo docs]) +- Ignore unsupported Sonos favorites ([@amelchio] - [#13195]) ([media_player.sonos docs]) +- Avoid Sonos error when joining with self ([@amelchio] - [#13196]) ([media_player.sonos docs]) +- Fix input_boolean Google Assistant serialize error ([@balloob] - [#13220]) ([google_assistant docs]) + ## {% linkable_title If you need help... %} ...don't hesitate to use our very active [forums](https://community.home-assistant.io/) or join us for a little [chat](https://discord.gg/c5DvZ4e). The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks. @@ -694,3 +709,28 @@ Experiencing issues introduced by this release? Please report them in our [issue [media_player.cast docs]: https://home-assistant.io/components/media_player.cast/ [media_player.kodi docs]: https://home-assistant.io/components/media_player.kodi/ [vera docs]: https://home-assistant.io/components/vera/ +[#13106]: https://github.com/home-assistant/home-assistant/pull/13106 +[#13109]: https://github.com/home-assistant/home-assistant/pull/13109 +[#13114]: https://github.com/home-assistant/home-assistant/pull/13114 +[#13143]: https://github.com/home-assistant/home-assistant/pull/13143 +[@arsaboo]: https://github.com/arsaboo +[@balloob]: https://github.com/balloob +[@jeroenterheerdt]: https://github.com/jeroenterheerdt +[alarm_control_panel.egardia docs]: https://home-assistant.io/components/alarm_control_panel.egardia/ +[arlo docs]: https://home-assistant.io/components/arlo/ +[hue docs]: https://home-assistant.io/components/hue/ +[light.hue docs]: https://home-assistant.io/components/light.hue/ +[switch.wemo docs]: https://home-assistant.io/components/switch.wemo/ +[#13162]: https://github.com/home-assistant/home-assistant/pull/13162 +[#13174]: https://github.com/home-assistant/home-assistant/pull/13174 +[#13195]: https://github.com/home-assistant/home-assistant/pull/13195 +[#13196]: https://github.com/home-assistant/home-assistant/pull/13196 +[#13220]: https://github.com/home-assistant/home-assistant/pull/13220 +[@amelchio]: https://github.com/amelchio +[@arsaboo]: https://github.com/arsaboo +[@balloob]: https://github.com/balloob +[@cdce8p]: https://github.com/cdce8p +[arlo docs]: https://home-assistant.io/components/arlo/ +[google_assistant docs]: https://home-assistant.io/components/google_assistant/ +[homekit docs]: https://home-assistant.io/components/homekit/ +[media_player.sonos docs]: https://home-assistant.io/components/media_player.sonos/ diff --git a/source/developers/architecture.markdown b/source/developers/architecture.markdown index afe8a21ef9c..191ed65f7b9 100644 --- a/source/developers/architecture.markdown +++ b/source/developers/architecture.markdown @@ -7,7 +7,7 @@ sidebar: true comments: false sharing: true footer: true -og_image: /images/architecture/ha_architecture.png +og_image: /images/architecture/ha_architecture.svg --- Before we dive into the Home Assistant architecture, let's get a clear overview of the home automation landscape as a whole. This way, we can show how the different parts of Home Assistant fit into the picture. @@ -19,9 +19,9 @@ For more information about each part in this overview, - + Home Automation landscape + src='{{site_root}}/images/architecture/home_automation_landscape.svg' /> Overview of the home automation landscape

@@ -34,7 +34,7 @@ The Home Assistant core is responsible for Home Control. Home Assistant contains * **Timer**: sends a `time_changed` event every 1 second on the event bus.

- + Overview of the Home Assistant core architecture diff --git a/source/developers/internationalization/backend_localization.markdown b/source/developers/internationalization/backend_localization.markdown index 6d395352b4f..f50d797045a 100644 --- a/source/developers/internationalization/backend_localization.markdown +++ b/source/developers/internationalization/backend_localization.markdown @@ -11,9 +11,41 @@ ha_release: 0.64 --- ## {% linkable_title Translation Strings %} -Platform translation strings are stored as JSON in the [home-assistant](https://github.com/home-assistant/home-assistant) repository. These files must be located adjacent to the component/platform they belong to. They are named `strings..json`, unless the component being translated exists in its own directory, in which case the file is simply named `strings.json` in that directory. This file will contain the different strings that will be translatable. Currently only states are supported by the frontend. +Platform translation strings are stored as JSON in the [home-assistant](https://github.com/home-assistant/home-assistant) repository. These files must be located adjacent to the component/platform they belong to. Components must have their own directory, and the file is simply named `strings.json` in that directory. For platforms, they are named `strings..json` in the platform directory. This file will contain the different strings that will be translatable. + +In order to test changes to translation files, the translation strings must be compiled into Home Assistant’s translation directories by running the following script: + +```bash +$ script/translations_develop +``` After the pull request with the strings file is merged into the `dev` branch, the strings will be automatically uploaded to Lokalise, where contributors can submit translations. The translated strings in Lokalise will be periodically pulled in to the home-assistant repository. ## {% linkable_title States Localization %} The first step when localizing platform states is to ensure that the states defined in the actual platform code are defined in `snake_case`. The states should not contain capital letters or spaces. Next, the strings file needs to be created. The states should exist under the `state` key, and map the backend state keys to their English translations. [The season sensor localization](https://github.com/home-assistant/home-assistant/pull/12453/commits/bb2f328ce10c3867990e34a88da64e2f8dc7a5c4) is a good example. + +## {% linkable_title Configuration Flow Localization %} +The translation strings for the configuration flow handler are defined under the `config` key. An example strings file below describes the different supported keys: + +```json +{ + "config": { + "title": "This title is shown in the integrations list", + "step": { + "init": { + "title": "The user visible title of the `init` step.", + "description": "Markdown that is shown with the step.", + "data": { + "api_key": "The label for the `api_key` input field" + } + } + }, + "error": { + "invalid_api_key": "This message will be displayed if `invalid_api_key` is returned as a flow error." + }, + "abort": { + "stale_api_key": "This message will be displayed if `stale_api_key` is returned as the abort reason." + } + } +} +``` diff --git a/source/help/index.markdown b/source/help/index.markdown index 4ad053d851a..12e1dfde028 100644 --- a/source/help/index.markdown +++ b/source/help/index.markdown @@ -48,6 +48,7 @@ Looking for [talking points](/help/talking-points/) or [trivia](/help/trivia)? Don't miss the regular [Home Assistant podcasts](https://hasspodcast.io/). +- [The winners of the Thomas-Krenn-Awards 2018](https://www.thomas-krenn.com/de/tkmag/allgemein/die-gewinner-des-thomas-krenn-awards-2018-stehen-fest/) - March 2018 - [Hausautomations-Schaltzentrale Home Assistant auf Python-Basis](https://www.heise.de/ct/ausgabe/2017-26-Hausautomations-Schaltzentrale-Home-Assistant-3909532.html) - December 2017 - [Using Home Assistant the ARTIK Cloud](https://developer.artik.io/documentation/developer-guide/wireless-iot/hass.html) - September 2017 - [Control home automation hardware with Home Assistant](http://www.linux-magazine.com/Issues/2017/203/Home-Assistant) - August 2017 @@ -61,7 +62,7 @@ Don't miss the regular [Home Assistant podcasts](https://hasspodcast.io/). - [Monitor IoT devices with Home Assistant and Datadog](https://www.datadoghq.com/blog/monitor-home-assistant/) - June 2017 - [Castálio Podcast - Episódio 102: Marcelo Mello - Red Hat e Automação Residencial com Home Assistant](https://youtu.be/hZq8ucpzjCs) - May 2017 - [Paulus Schoutsen and Home Assistant - Episode 8](http://codepop.com/open-sourcecraft/episodes/paulus-schoutsen/) - March 2017 -- [Zammad, Home Assistant und Freifunk - are the winner of the Thomas-Krenn-Awards 2017](https://www.thomas-krenn.com/de/tkmag/allgemein/zammad-home-assistant-und-freifunk-das-sind-die-gewinner-des-thomas-krenn-awards-2017/) - March 2017 +- [Zammad, Home Assistant and Freifunk - are the winner of the Thomas-Krenn-Awards 2017](https://www.thomas-krenn.com/de/tkmag/allgemein/zammad-home-assistant-und-freifunk-das-sind-die-gewinner-des-thomas-krenn-awards-2017/) - March 2017 - [10 open source software tools for developing IoT applications](http://www.cbronline.com/news/internet-of-things/10-open-source-software-tools-developing-iot-applications/) - March 2017 - [A Look at HASSbian: Raspberry Pi for Home Automation](http://www.piboards.com/2017/03/07/a-look-at-hassbian-raspberry-pi-for-home-automation/)- March 2017 - [Home Assistant with Paulus Schoutsen - Episode 94](https://www.podcastinit.com/episode-94-home-assistant-with-paulus-schoutsen/) - January 2017 diff --git a/source/help/talking-points.markdown b/source/help/talking-points.markdown index 040bd3ad0ba..44c106d2dec 100644 --- a/source/help/talking-points.markdown +++ b/source/help/talking-points.markdown @@ -12,7 +12,7 @@ footer: true People are starting to present Home Assistant at meetings and get-togethers. Below you find a couple of bullet points for your presentation. - [Numbers, numbers, numbers](/help/trivia/) and other details -- Over 750 implementations +- Over 1000 implementations - Not depending on cloud services. We like to keep your privacy private - Control all your devices from a single, mobile-friendly interface - Written in Python3 with 94% test coverage diff --git a/source/images/architecture/home_automation_landscape.svg b/source/images/architecture/home_automation_landscape.svg new file mode 100644 index 00000000000..c0fbca28183 --- /dev/null +++ b/source/images/architecture/home_automation_landscape.svg @@ -0,0 +1,904 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + Lights + + + + Smart Home + + HomeAutomation + User + + Configuration + + Home Control + Commands + Information + + + + Switches + Many more... + Internet of Things + + + + + Commands + Information + Information + Commands + Information(ie. light is on) + Commands(ie. turn light on) + Graphic by Paulus Schoutsen 2014, CC BY 4.0 + + diff --git a/source/images/screenshots/limitlessled_assumed_state.png b/source/images/screenshots/limitlessled_assumed_state.png new file mode 100644 index 00000000000..ea1b99c3668 Binary files /dev/null and b/source/images/screenshots/limitlessled_assumed_state.png differ