From bd5f24cdd42fab793c0d4ae3482ad57fba09aa1c Mon Sep 17 00:00:00 2001
From: Franck Nijhof
@@ -53,7 +50,7 @@ Configuration variables:
cover:
platform: opengarage
covers:
- garage:
+ garage:
host: 192.168.1.12
device_key: opendoor
name: honda
@@ -93,12 +90,12 @@ sensor:
{% endif %}'{% endraw %}
group:
- garage:
+ garage:
name: Garage
entities:
- cover.honda
- sensor.garage_status
- - sensor.garage_car_present
+ - sensor.garage_car_present
customize:
cover.honda:
diff --git a/source/_components/device_tracker.linksys_smart.markdown b/source/_components/device_tracker.linksys_smart.markdown
index 4cf0ca7e5a5..0b9875e5f23 100644
--- a/source/_components/device_tracker.linksys_smart.markdown
+++ b/source/_components/device_tracker.linksys_smart.markdown
@@ -12,12 +12,11 @@ logo: linksys.png
ha_release: 0.48
---
-The `linksys_smart` platform offers presence detection by looking at connected devices to a Linksys Smart Wifi based router.
+The `linksys_smart` platform offers presence detection by looking at connected devices to a Linksys Smart Wifi based router.
-Tested routers:
+Tested routers:
LINKSYS WRT3200ACM MU-MIMO Gigabit Wi-Fi Wireless Router
LINKSYS WRT1900ACS Dual-band Wi-Fi Router
-
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.
diff --git a/source/_components/device_tracker.ubus.markdown b/source/_components/device_tracker.ubus.markdown
index 39febb54260..ba38f2f1b64 100644
--- a/source/_components/device_tracker.ubus.markdown
+++ b/source/_components/device_tracker.ubus.markdown
@@ -70,14 +70,13 @@ Configuration variables:
- **password** (*Required*): The password for your given account.
- **dhcp_software** (*Optional*): The DHCP software used in your router: `dnsmasq`, `dhcpd`, or `none`. Defaults to `dnsmasq`.
-
See the [device tracker component page](/components/device_tracker/) for instructions how to configure the people to be tracked.
-## Troubleshooting
+## {% linkable_title Troubleshooting %}
If you find that this never creates `known_devices.yaml`, or if you need more information on the communication chain between Home Assistant and OpenWRT, follow these steps to grab the packet stream and gain insight into what's happening.
-### Increase Log Level
+### {% linkable_title Increase Log Level %}
1. On your Home Assistant device, stop Home Assistant
2. Adjust `configuration.yaml` to log more detail for the `device_tracker` component
@@ -167,6 +166,6 @@ Connection: keep-alive
```
11. In this case we are actually receiving a valid response with no data. The request says that we are looking for ARP information from `hostapd.*`, which is the access point on the router. In my environment I don't use the AP on the router, and so it was correctly returning no data. Armed with this information, I know that I cannot use this component for device tracking or presence.
-### Cleanup
+### {% linkable_title Cleanup %}
When you're done troubleshooting, remember to reset your logging configuration and delete any capture files that contain sensitive information.
diff --git a/source/_components/ecobee.markdown b/source/_components/ecobee.markdown
index 1d18fb430d1..217922806b2 100644
--- a/source/_components/ecobee.markdown
+++ b/source/_components/ecobee.markdown
@@ -14,25 +14,24 @@ ha_release: 0.9
ha_iot_class: "Cloud Push"
---
-
The `ecobee` component lets you control a thermostats and view sensor data from [ecobee](https://ecobee.com) thermostats.
You will need to obtain an API key from ecobee's [developer site](https://www.ecobee.com/developers/) to use this component. To get the key, first you need to register your thermostat which should be done as part of the ecobee installation. Once you have done that perform the following steps.
-1. Click on the **Become a developer** link on the [developer site](https://www.ecobee.com/developers/).
+1. Click on the **Become a developer** link on the [developer site](https://www.ecobee.com/developers/).
2. Login with your ecobee credentials.
3. Accept the SDK agreement.
4. Fill in the fields.
-5. Click **save**.
+5. Click **save**.
Now login to the regular consumer portal, and in the hamburger menu there will be a new option **Developer**. Now we can create the Application to hook up to Home Assistant.
-1. Select the Developer option.
-2. Select **Create New**.
-3. Give your app a name (it appears to need to be unique across all users, as I tried 'home-assistant' and it said it was already in use. Try
diff --git a/source/_components/joaoapps_join.markdown b/source/_components/joaoapps_join.markdown
index c0b94b2eb58..822a14604ba 100644
--- a/source/_components/joaoapps_join.markdown
+++ b/source/_components/joaoapps_join.markdown
@@ -12,7 +12,6 @@ ha_category: Hub
ha_release: "0.24"
---
-
The `joaoapps_join` component 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/).
@@ -57,4 +56,3 @@ The services exposed in the `joaoapps_join` component can be used with the servi
| joaoapps_join/send_url | `{"url":"http://google.com"}` |
| joaoapps_join/send_wallpaper | `{"url":"http://www.planwallpaper.com/static/images/ZhGEqAP.jpg"}` |
| joaoapps_join/send_file | `{"url":"http://download.thinkbroadband.com/5MB.zip"}` |
-
diff --git a/source/_components/juicenet.markdown b/source/_components/juicenet.markdown
index 74cc2fdb890..0ff22b9908e 100644
--- a/source/_components/juicenet.markdown
+++ b/source/_components/juicenet.markdown
@@ -12,7 +12,6 @@ ha_category: Hub
ha_release: 0.47
---
-
The `juicenet` sensor platform pulls data from a [JuiceNet](https://emotorwerks.com/products/juicenet/) charging station equipped with a wifi connection. It will access and make available all of the devices attached to your account.
## {% linkable_title Configuration %}
diff --git a/source/_components/keyboard.markdown b/source/_components/keyboard.markdown
index 00dad71931c..d1324ae76ae 100644
--- a/source/_components/keyboard.markdown
+++ b/source/_components/keyboard.markdown
@@ -12,15 +12,14 @@ ha_category: Automation
ha_release: pre 0.7
---
-
The `keyboard` component simulates key presses on the host machine. It currently offers the following Buttons as a Service (BaaS):
- * `keyboard/volume_up`
- * `keyboard/volume_down`
- * `keyboard/volume_mute`
- * `keyboard/media_play_pause`
- * `keyboard/media_next_track`
- * `keyboard/media_prev_track`
+- `keyboard/volume_up`
+- `keyboard/volume_down`
+- `keyboard/volume_mute`
+- `keyboard/media_play_pause`
+- `keyboard/media_next_track`
+- `keyboard/media_prev_track`
To load this component, add the following lines to your `configuration.yaml`:
@@ -33,7 +32,7 @@ keyboard:
You may need to install platform-specific [dependencies for PyUserInput](https://github.com/PyUserInput/PyUserInput#dependencies) in order to use the keyboard component. In most cases this can be done by running:
```bash
-$ pip3 install [package name]
+pip3 install [package name]
```
#### {% linkable_title Windows %}
diff --git a/source/_components/keyboard_remote.markdown b/source/_components/keyboard_remote.markdown
index 24efed9a3c2..f94507ac0e2 100644
--- a/source/_components/keyboard_remote.markdown
+++ b/source/_components/keyboard_remote.markdown
@@ -19,7 +19,6 @@ This component allows you to use one or more keyboards as remote controls. It wi
The `evdev` package is used to interface with the keyboard and thus this is Linux only. It also means you can't use your normal keyboard for this because `evdev` will block it.
-
```yaml
# Example configuration.yaml entry
keyboard_remote:
@@ -47,7 +46,7 @@ keyboard_remote:
type: 'key_up'
```
-or like the following for one keyboard:
+Or like the following for one keyboard:
```yaml
keyboard_remote:
@@ -70,15 +69,18 @@ automation:
service: light.turn_on
entity_id: light.all
```
+
`device_descriptor` or `device_name` may be specificed in the trigger so the automation will be fired only for that keyboard. This is especially useful if you wish to use several bluetooth remotes to control different devices. Omit them to ensure the same key triggers the automation for all keyboards/remotes.
## {% 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.
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.
Here's an automation example that plays a sound through a media player whenever the keyboard connects/disconnects:
+
```yaml
automation:
- alias: Keyboard Connected
@@ -104,13 +106,14 @@ automation:
```
## {% linkable_title Permissions %}
+
There might be permissions problems with the event input device file. If this is the case, the user that Home Assistant runs as must be allowed read and write permissions with:
```bash
-$ sudo setfacl -m u:HASS_USER:rw /dev/input/event*
+sudo setfacl -m u:HASS_USER:rw /dev/input/event*
```
-where `HASS_USER` is the user who runs Home Assistant.
+Where `HASS_USER` is the user who runs Home Assistant.
If you want to make this permanent, you can use a udev rule that sets it for all event input devices. Add a file `/etc/udev/rules.d/99-userdev-input.rules` containing:
@@ -118,8 +121,8 @@ If you want to make this permanent, you can use a udev rule that sets it for all
KERNEL=="event*", SUBSYSTEM=="input", RUN+="/usr/bin/setfacl -m u:HASS_USER:rw $env{DEVNAME}"
```
-You can check ACLs permissions with
+You can check ACLs permissions with:
```bash
-$ getfacl /dev/input/event*
+getfacl /dev/input/event*
```
diff --git a/source/_components/kira.markdown b/source/_components/kira.markdown
index b32ae95eac1..0e74ad07b69 100644
--- a/source/_components/kira.markdown
+++ b/source/_components/kira.markdown
@@ -39,6 +39,7 @@ kira:
```
Configuration variables:
+
- **sensors** (*Optional*): Kira sensors to register
- **name** (*Optional*): Name of this sensor.
- **host** (*Optional*): Bind address for this sensor. 0.0.0.0 is default.
@@ -70,6 +71,7 @@ The first time the Kira component is loaded, `kira_codes.yaml` will be created i
```
Configuration variables:
+
- **name** (*Required*): The name of this code.
- **code** (*Required*): The data for this code (see below).
- **device** (*Optional*): The device this code is associated with. Default is "unknown".
@@ -81,6 +83,7 @@ Some manufacturers (e.g., Samsung) require an IR code to be sent a number of tim
### {% linkable_title Code Types %}
When creating an entry in `kira_codes.yaml`, a few different kinds of codes can be used.
+
- **kira**: This is the native wire protocol used by Kira modules. These can be captured using netcat.
- **pronto**: Pronto codes are supported.
- **nec**: If the device uses NEC IR codes and the manufacturer has published them, they can be used here.
diff --git a/source/_components/konnected.markdown b/source/_components/konnected.markdown
index 8ab60c77e60..4710844aa45 100644
--- a/source/_components/konnected.markdown
+++ b/source/_components/konnected.markdown
@@ -14,7 +14,7 @@ ha_release: "0.70"
The `konnected` component lets you connect wired sensors and switches to a NodeMCU ESP8226 based device running the [open source Konnected software](https://github.com/konnected-io/konnected-security). Reuse the wired sensors and siren from an old or pre-wired alarm system installation and integrate them directly into Home Assistant.
-Visit the [Konnected.io website](https://konnected.io) for more information about the Konnected Alarm Panel board and compatible hardware.
+Visit the [Konnected.io website](https://konnected.io) for more information about the Konnected Alarm Panel board and compatible hardware.
The component currently supports the following device types in Home Assistant:
@@ -45,7 +45,7 @@ konnected:
switches:
- pin: 5
```
-
+
{% configuration %}
access_token:
description: Any random string. This is used to ensure that only those devices which you have configured can authenticate to Home Assistant to change a device state.
@@ -55,7 +55,7 @@ api_host:
description: Override the IP address/host (and port number) of Home Assistant that the Konnected device(s) will use to communicate sensor state updates. If omitted, this is defaulted to the value of `base_url` in the `http` component. If you've set `base_url` to an external hostname, then you'll want to set this value back to your _local_ IP address and port (e.g. `http://192.168.1.101:8123`).
required: false
type: url
- default: value of `base_url`
+ default: value of `base_url`
devices:
description: A list of Konnected devices that you have on your network.
required: true
@@ -71,15 +71,15 @@ devices:
type: list
keys:
pin:
- description: The number corresponding to the _IO index_ of the labeled pin on the NodeMCU dev board. See the [NodeMCU GPIO documentation](https://nodemcu.readthedocs.io/en/master/en/modules/gpio/) for more details. Valid values are 1, 2, 5, 6, 7 and 9.
+ description: The number corresponding to the _IO index_ of the labeled pin on the NodeMCU dev board. See the [NodeMCU GPIO documentation](https://nodemcu.readthedocs.io/en/master/en/modules/gpio/) for more details. Valid values are 1, 2, 5, 6, 7 and 9.
required: exclusive
zone:
description: The number corresponding to the labeled zone on the [Konnected Alarm Panel](https://konnected.io) board. Valid values are 1, 2, 3, 4, 5 and 6.
required: exclusive
type:
description: Any [binary sensor](/components/binary_sensor/) class, typically `door`, `window`, `motion` or `smoke`.
- required: true
- name:
+ required: true
+ name:
description: The name of the device used in the front end.
required: false
default: automatically generated
@@ -89,12 +89,12 @@ devices:
type: list
keys:
pin:
- description: The number corresponding to the _IO index_ of the labeled pin on the NodeMCU dev board. See the [NodeMCU GPIO documentation](https://nodemcu.readthedocs.io/en/master/en/modules/gpio/) for more details. Valid values are 1, 2, 5, 6, 7 and 8.
+ description: The number corresponding to the _IO index_ of the labeled pin on the NodeMCU dev board. See the [NodeMCU GPIO documentation](https://nodemcu.readthedocs.io/en/master/en/modules/gpio/) for more details. Valid values are 1, 2, 5, 6, 7 and 8.
required: exclusive
zone:
description: The number corresponding to the labeled zone on the [Konnected Alarm Panel](https://konnected.io) board or the word `out` to specify the dedicated ALARM/OUT terminal on the Konnected board. Valid values are 1, 2, 3, 4, 5 and out.
required: exclusive
- name:
+ name:
description: The name of the device used in the front end.
required: false
default: automatically generated
@@ -104,7 +104,7 @@ devices:
required: false
{% endconfiguration%}
-#### Configuration Notes
+#### {% linkable_title Configuration Notes %}
- Either **pin** or **zone** is required for each actuator or sensor. Do not use both in the same definition.
- Pin `D8` or the `out` zone will only work when activation is set to high (the default).
@@ -145,12 +145,12 @@ konnected:
Konnected runs on an ESP8266 board with the NodeMCU firmware. It is commonly used with the NodeMCU dev kit WiFi module and optionally Konnected's Alarm Panel hardware. The following table shows the pin mapping between the Konnected hardware labeled zones, the NodeMCU labeled pins and the ESP8266 GPIO pins.
-| Konnected Alarm Panel Zone | NodeMCU pin | IO Index | ESP8266 GPIO |
+| Konnected Alarm Panel Zone | NodeMCU pin | IO Index | ESP8266 GPIO |
|---|---|---|---|
-| 1 | D1 | 1 | GPIO5 |
-| 2 | D2 | 2 | GPIO4 |
+| 1 | D1 | 1 | GPIO5 |
+| 2 | D2 | 2 | GPIO4 |
| 3 | D5 | 5 | GPIO14 |
| 4 | D6 | 6 | GPIO12 |
| 5 | D7 | 7 | GPIO13 |
| 6 | RX | 9 | GPIO3 |
-| ALARM or OUT | D8 | 8 | GPIO15 |
+| ALARM or OUT | D8 | 8 | GPIO15 |
diff --git a/source/_components/lock.wink.markdown b/source/_components/lock.wink.markdown
index a792e130a8b..38b37fe9ea0 100644
--- a/source/_components/lock.wink.markdown
+++ b/source/_components/lock.wink.markdown
@@ -13,13 +13,11 @@ ha_release: 0.9
ha_iot_class: "Cloud Polling"
---
-
The Wink lock platform allows you to control your [Wink](http://www.wink.com/) locks.
The requirement is that you have setup [Wink](/components/wink/).
-
-### Supported lock devices
+### {% linkable_title Supported lock devices %}
- Kwikset
- Schlage
@@ -56,7 +54,7 @@ You can use the service wink/wink_set_lock_alarm_sensitivity to set the alarm se
| Service data attribute | Optional | Description |
| ---------------------- | -------- | ----------- |
-| `sensitivity` | no | String one of low, medium_low, medium, medium_high, high
+| `sensitivity` | no | String one of low, medium_low, medium, medium_high, high.
| `entity_id` | yes | String or list of strings that point at `entity_id`s of locks.
Example:
@@ -140,7 +138,6 @@ You can use the service wink/wink_add_new_lock_key_code to add a new user code t
| `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.
diff --git a/source/_components/notify.mastodon.markdown b/source/_components/notify.mastodon.markdown index 2e8327f4c26..65bdc1e38a4 100644 --- a/source/_components/notify.mastodon.markdown +++ b/source/_components/notify.mastodon.markdown @@ -12,7 +12,6 @@ ha_category: Notifications ha_release: 0.67 --- - The `mastodon` platform uses [MAstodon](https://joinmastodon.org/) to delivery notifications from Home Assistant. Go to **Preferences** in the Mastodon web interface, then to **Development** and create a new application. diff --git a/source/_components/sensor.efergy.markdown b/source/_components/sensor.efergy.markdown index 7a57d281fb0..3ffd7d36d77 100644 --- a/source/_components/sensor.efergy.markdown +++ b/source/_components/sensor.efergy.markdown @@ -13,7 +13,6 @@ ha_release: pre 0.7 ha_iot_class: "Cloud Polling" --- - Integrate your [Efergy](https://efergy.com) meter information into Home Assistant. ## {% linkable_title Setup %} @@ -49,15 +48,13 @@ sensor: Configuration variables: - **app_token** (*Required*): The App Token for your account. -- **utc_offset** (*Required*): Some variables (currently only the daily_cost) require that the -negative number of minutes your timezone is ahead/behind UTC time. +- **utc_offset** (*Required*): Some variables (currently only the daily_cost) require that the negative number of minutes your timezone is ahead/behind UTC time. - **monitored_variables** array (*Required*): Variables to monitor. - **type** (*Required*): Name of the variable. - - **instant_readings**: Instant energy consumption. - - **budget**: Monthly budget. - - **cost**: The cost for energy consumption (with the tariff that has been set in Efergy) over a given period. - - **amount**: The amount of energy consumed over a given period. - - **current_values**: This returns the current energy usage of each device on your account, as `efergy_\
It might be necessary to install additional packages: $ sudo apt-get install libxslt-dev libxml2-dev python3-lxml
-If you are working with the All-in-One installation, you may also need to execute also within your virtual environment the command pip install lxml
; be patient this will take a while.
pip install lxml
; be patient this will take a while.
+
To use the Fritz!Box network monitor in your installation, add the following to your `configuration.yaml` file:
diff --git a/source/_components/sensor.kwb.markdown b/source/_components/sensor.kwb.markdown
index 8c93feb4dd3..e47d36488f0 100644
--- a/source/_components/sensor.kwb.markdown
+++ b/source/_components/sensor.kwb.markdown
@@ -20,6 +20,7 @@ Direct connection via serial (RS485) or via telnet terminal server is supported.
Since this serial protocol is proprietary and closed, only most temperature sensors and a few control relays are supported, the rest is still WIP (see https://www.mikrocontroller.net/topic/274137).
Direct connection via serial port:
+
```yaml
# Example configuration.yaml entry
- platform: kwb
@@ -30,6 +31,7 @@ Direct connection via serial port:
```
Telnet terminal server with a serial-ethernet converter:
+
```yaml
# Example configuration.yaml entry
- platform: kwb
diff --git a/source/_components/sensor.loopenergy.markdown b/source/_components/sensor.loopenergy.markdown
index a2709b48797..b3369c6fc52 100644
--- a/source/_components/sensor.loopenergy.markdown
+++ b/source/_components/sensor.loopenergy.markdown
@@ -14,7 +14,6 @@ ha_iot_class: "Cloud Push"
redirect_from: /components/sensor.loop_energy/
---
-
Integrate your [Loop Energy](https://www.your-loop.com/) meter information into Home Assistant. To use this sensor you need the client serial number and secret keys for your devices.
The library used to get the data isn't officially supported and the only way to get the keys is to log into loop energy's website and type a command into your browser console.
diff --git a/source/_components/sensor.pyload.markdown b/source/_components/sensor.pyload.markdown
index 0c5886b6377..4bfd7edf02f 100644
--- a/source/_components/sensor.pyload.markdown
+++ b/source/_components/sensor.pyload.markdown
@@ -13,7 +13,6 @@ ha_release: 0.58
ha_iot_class: "Local Polling"
---
-
The `pyload` platform allows you to monitor your downloads with [pyLoad](https://pyload.net/) from within Home Assistant and setup automation based on the information.
To enable this sensor, add the following lines to your `configuration.yaml`:
@@ -55,10 +54,8 @@ ssl:
default: false
{% endconfiguration %}
-
If everything is setup correctly, the download speed will show up in the frontend.
@@ -26,7 +25,6 @@ Train departure sensors require three character long `origin` and `destination` To add a single train departure sensor add the following to your `configuration.yaml` file: - ```yaml # Example configuration.yaml entry for a single sensor sensor: @@ -69,17 +67,15 @@ A large amount of information about upcoming departures is available within the next_trains_platform: friendly_name: 'Next train platform' value_template: {% raw %}'{{states.sensor.next_train_to_wat.attributes.next_trains[0].platform}}'{% endraw %} - ``` Bus sensors require as their `origin` a bus stop ATCO code which can be found by browsing OpenStreetMap data as follows: -1. On [OpenStreetMap.org](http://www.openstreetmap.org/) zoom right in on a bus -stop you're interested in -2. Click the layers picker button on the right hand side -3. Tick the 'map data' layer, and wait for clickable objects to load -4. Click the bus stop node to reveal its tags on the left +1. On [OpenStreetMap.org](http://www.openstreetmap.org/) zoom right in on a bus stop you're interested in. +2. Click the layers picker button on the right hand side. +3. Tick the 'map data' layer, and wait for clickable objects to load. +4. Click the bus stop node to reveal its tags on the left. The `destination` must be a valid location in the "direction" field returned by a GET query to `/uk/bus/stop/{atcocode}/live.json` as described in the [API reference webpage](https://developer.transportapi.com/docs?raml=https://transportapi.com/v3/raml/transportapi.raml##bus_information). A bus sensor is added in the following `configuration.yaml` file entry: @@ -116,7 +112,6 @@ And the template sensor for viewing the next bus attributes. next_bus_estimated: friendly_name: 'Next bus estimated' value_template: {% raw %}'{{states.sensor.next_bus_to_wantage.attributes.next_buses[0].estimated}}'{% endraw %} - ``` Powered by [transportAPI](http://www.transportapi.com/) diff --git a/source/_components/sensor.wsdot.markdown b/source/_components/sensor.wsdot.markdown index 3b2e163398c..268fd900b4f 100644 --- a/source/_components/sensor.wsdot.markdown +++ b/source/_components/sensor.wsdot.markdown @@ -15,8 +15,7 @@ ha_release: 0.37 The `wsdot` sensor will give you travel time information from the [Washington State Department of Transportation (WSDOT)](http://wsdot.com/). -First, you need to get a free Traveler Information `api_key` from the [WSDOT API webpage](http://wsdot.com/traffic/api/). Just enter your email address to instantly get the key. - +First, you need to get a free Traveler Information `api_key` from the [WSDOT API webpage](http://wsdot.com/traffic/api/). Just enter your email address to instantly get the key. Once you have the code, create `wsdot` sensors by editing your `configuration.yaml` file as follows: @@ -38,11 +37,11 @@ Configuration variables: - **id** (*Required*): Name of the route. - **name** (*Optional*): Name of the route. Default just uses `id`. -Figuring out which Travel Time ID (`id`) is associated with your routes is a bit of a challenge. If you visit `http://wsdot.com/Traffic/api/TravelTimes/TravelTimesREST.svc/GetTravelTimesAsJson?AccessCode=[your_api_key_here]` substituting your `api_key`, you will get a list of all available routes. Search through it and then find the key `TravelTimeID`. That tells you the number you need. +Figuring out which Travel Time ID (`id`) is associated with your routes is a bit of a challenge. If you visit `http://wsdot.com/Traffic/api/TravelTimes/TravelTimesREST.svc/GetTravelTimesAsJson?AccessCode=[your_api_key_here]` substituting your `api_key`, you will get a list of all available routes. Search through it and then find the key `TravelTimeID`. That tells you the number you need. Some common examples include: -``` +```text 73 Issaquah-Seattle (WB PM) 74 Seattle-Issaquah (EB AM) 75 HOV Issaquah-Seattle (WB REV) @@ -78,4 +77,3 @@ Here's an example of the sensor in use:
@@ -119,8 +118,7 @@ in the `_1h_` part of the sensor name with `1` to `36`. e.g., `weather_24h` will ### {% linkable_title Additional examples %} -#### Daily forecast - +#### {% linkable_title Daily forecast %} ```yaml sensor: @@ -152,8 +150,7 @@ group:  -#### Weather overview - +#### {% linkable_title Weather overview %} ```yaml sensor: @@ -190,13 +187,12 @@ group:  -
Note: While the platform is called “wunderground” the sensors will show up in Home Assistant as “PWS” (eg: sensor.pws_weather).
Note that the Weather Underground sensor is added to the entity_registry, so second and subsequent Personal Weather Station ID (pws_id) will have their monitored conditions suffixed with an index number e.g. - - sensor.pws_weather_1d_metric_2 +- sensor.pws_weather_1d_metric_2 Additional details about the API are available [here](https://www.wunderground.com/weather/api/d/docs). diff --git a/source/_components/sensor.xiaomi_miio.markdown b/source/_components/sensor.xiaomi_miio.markdown index 65d1f3780fd..d67aa622baf 100644 --- a/source/_components/sensor.xiaomi_miio.markdown +++ b/source/_components/sensor.xiaomi_miio.markdown @@ -17,8 +17,8 @@ The `xiaomi_miio` sensor platform is observing your Xiaomi Mi Air Quality Monito Currently, the supported features are: -* Air Quality Index (AQI) -* Attributes +- Air Quality Index (AQI) +- Attributes - power - charging - battery diff --git a/source/_components/smappee.markdown b/source/_components/smappee.markdown index ce56987f72c..c91c9d0f59c 100644 --- a/source/_components/smappee.markdown +++ b/source/_components/smappee.markdown @@ -24,7 +24,6 @@ Info on how to get API access is described in the [smappy wiki](https://github.c To use the `smappee` component in your installation, add the following to your `configuration.yaml` file: - ```yaml # Example configuration.yaml entry smappee: diff --git a/source/_components/switch.rachio.markdown b/source/_components/switch.rachio.markdown index 786c3574132..e24fab29fae 100644 --- a/source/_components/switch.rachio.markdown +++ b/source/_components/switch.rachio.markdown @@ -18,7 +18,7 @@ The `rachio` switch platform allows you to toggle zones connected to your [Rachi Once configured, a switch will be added for every zone that is enabled on every controller in the account provided, as well as a switch to toggle each controller's standby mode.- You must have the [Rachio component](/components/rachio/) configured to use this switch. +You must have the [Rachio component](/components/rachio/) configured to use this switch.
To add this platform to your installation, add the following to your `configuration.yaml` file: @@ -44,7 +44,6 @@ In this section, you find some real-life examples of how to use this switch. ### {% linkable_title `groups.yaml` example %} - ```yaml irrigation: name: Irrigation diff --git a/source/_components/tado.markdown b/source/_components/tado.markdown index 34447a66d90..386db0de0d1 100644 --- a/source/_components/tado.markdown +++ b/source/_components/tado.markdown @@ -13,7 +13,6 @@ ha_release: 0.41 ha_iot_class: "Cloud Polling" --- - The `tado` component platform is used as an interface to the [my.tado.com](https://my.tado.com/webapp/#/account/sign-in) website. It adds climate devices for every tado zone and sensors for some additional information of the zones. To use your tado thermostats in your installation, add the following to your `configuration.yaml` file: diff --git a/source/_components/vacuum.xiaomi_miio.markdown b/source/_components/vacuum.xiaomi_miio.markdown index 4a5f09e6879..6cdc2c33f30 100644 --- a/source/_components/vacuum.xiaomi_miio.markdown +++ b/source/_components/vacuum.xiaomi_miio.markdown @@ -136,13 +136,13 @@ easily via a hidden menu item at the Mi-Home app or using the `miio` command lin You can install the command line tool with: ```bash -$ npm install -g miio +npm install -g miio ``` Discovering devices on current network ```bash -$ miio discover +miio discover ``` This will list devices that are connected to the same network as your computer. Let it run for a while so it has a chance to reach all devices, as it might take a minute or two for all devices to answer. @@ -159,10 +159,10 @@ Support: At least basic The information output is: -* __Device ID__ - the unique identifier of the device, does not change if the device is reset. -* __Model ID__ - the model id if it could be determined, this indicates what type of device it is -* __Address__ - the IP that the device has on the network -* __Token__ - the token of the device or ??? if it could not be automatically determined +- __Device ID__ - the unique identifier of the device, does not change if the device is reset. +- __Model ID__ - the model id if it could be determined, this indicates what type of device it is +- __Address__ - the IP that the device has on the network +- __Token__ - the token of the device or ??? if it could not be automatically determined #### {% linkable_title Windows and Android %} @@ -174,7 +174,7 @@ To fetch the token follow these instructions depending on your mobile phone plat 4. Change the MiToolKit language to English if you need to. 5. Click "Extract Token" 6. On the phone, you must confirm the backup. DO NOT enter any password and press the button to make the backup. -8. Once you have confirmed the backup the token extraction will begin, it should appear in the MiToolKit shortly. +7. Once you have confirmed the backup the token extraction will begin, it should appear in the MiToolKit shortly. #### {% linkable_title Linux and Android (not rooted) %} @@ -183,14 +183,14 @@ Follow the pairing process using your phone and Mi-Home app. You will be able to Before you begin you need to install `libffi-dev` and `libssl-dev` by running the command below. This is needed for `python-miio` to be installed correctly. ```bash -$ sudo apt-get install libffi-dev libssl-dev +sudo apt-get install libffi-dev libssl-dev ``` If your Home Assistant installation is running in a [Virtualenv](/docs/installation/virtualenv/#upgrading-home-assistant), make sure you activate it by running the commands below. ```bash -$ sudo -u homeassistant -H -s -$ source /srv/homeassistant/bin/activate +sudo -u homeassistant -H -s +source /srv/homeassistant/bin/activate ``` To fetch the token follow these instructions depending on your mobile phone platform. @@ -205,7 +205,6 @@ To fetch the token follow these instructions depending on your mobile phone plat 8. Untar the unpacked data: `tar -xvf unpacked.tar` 9. `sqlite3 apps/com.xiaomi.smarthome/db/miio2.db 'select token from devicerecord where name like "%Vacuum%";'` returns the token for your Xiaomi vacuum bot. - #### {% linkable_title Linux and Android (rooted!) %} Follow the pairing process using your phone and Mi-Home app. You will be able to retrieve the token from a SQLite file inside your phone. @@ -213,14 +212,14 @@ Follow the pairing process using your phone and Mi-Home app. You will be able to Before you begin you need to install `libffi-dev` and `libssl-dev` by running the command below. This is needed for `python-miio` to be installed correctly. ```bash -$ sudo apt-get install libffi-dev libssl-dev +sudo apt-get install libffi-dev libssl-dev ``` If your Home Assistant installation is running in a [Virtualenv](/docs/installation/virtualenv/#upgrading-home-assistant), make sure you activate it by running the commands below. ```bash -$ sudo -u homeassistant -H -s -$ source /srv/homeassistant/bin/activate +sudo -u homeassistant -H -s +source /srv/homeassistant/bin/activate ``` To fetch the token follow these instructions depending on your mobile phone platform. diff --git a/source/_components/websocket_api.markdown b/source/_components/websocket_api.markdown index 5cb8e926d0d..7711d202b82 100644 --- a/source/_components/websocket_api.markdown +++ b/source/_components/websocket_api.markdown @@ -22,4 +22,4 @@ It is HIGHLY recommended that you set the `api_password`, especially if you are websocket_api: ``` -For details to use the WebSocket API, please refer to the [WebSocket API documentation](/developers/websocket_api/) . +For details to use the WebSocket API, please refer to the [WebSocket API documentation](/developers/websocket_api/) . diff --git a/source/_faq/after-upgrading.markdown b/source/_faq/after-upgrading.markdown index 0440745d0a9..c74ca7d7646 100644 --- a/source/_faq/after-upgrading.markdown +++ b/source/_faq/after-upgrading.markdown @@ -9,9 +9,8 @@ footer: true ha_category: Usage --- +After upgrading to a new version, you may notice your browser gets stuck at the "loading data" login screen. Close the window/tab and go into your browser settings and delete all the cookies for your URL. You can then log back in and it should work. -After upgrading to a new version, you may notice your browser gets stuck at the "loading data" login screen. Close the window/tab and go into your browser settings and delete all the cookies for your URL. You can then log back in and it should work. - -Android Chrome +Android Chrome: chrome -> settings -> site settings -> storage -> search for your URL for Home Assistant-> "clear & reset" diff --git a/source/_faq/browser.markdown b/source/_faq/browser.markdown index ee2dd204f7a..78ae2000c46 100644 --- a/source/_faq/browser.markdown +++ b/source/_faq/browser.markdown @@ -9,5 +9,4 @@ footer: true ha_category: Usage --- - Close the windows or tab and clear the cache. The frontend is aggressively caching and clearing the cache ensures that the frontend is reloaded when you access it the next time. diff --git a/source/_faq/component.markdown b/source/_faq/component.markdown index 0f46cf01cf7..9d4aaadff0b 100644 --- a/source/_faq/component.markdown +++ b/source/_faq/component.markdown @@ -9,7 +9,6 @@ footer: true ha_category: Configuration --- - When a component does not show up, many different things can be the case. Before you try any of these steps, make sure to look at the `home-assistant.log` file and see if there are any errors related to your component you are trying to set up. If you have incorrect entries in your configuration files you can use the `check_config` script to assist in identifying them: `hass --script check_config`. diff --git a/source/_faq/configuration-file.markdown b/source/_faq/configuration-file.markdown index 8f06e8247f4..c33e1678269 100644 --- a/source/_faq/configuration-file.markdown +++ b/source/_faq/configuration-file.markdown @@ -9,5 +9,4 @@ footer: true ha_category: Configuration --- - And not JSON or XML for the [configuration file](/docs/configuration/)? Because [YAML](/docs/configuration/yaml/) can be written by hand, you don't have to care about commas or tag and it's a superset of JSON. diff --git a/source/_faq/connection-error.markdown b/source/_faq/connection-error.markdown index 3acb6edd3dc..cad8704c49f 100644 --- a/source/_faq/connection-error.markdown +++ b/source/_faq/connection-error.markdown @@ -9,7 +9,6 @@ footer: true ha_category: Usage --- - It can happen that you get a traceback that notify you about connection issues while running Home Assistant. Eg. ```bash From 2295af2801a5d7c5437b15a67744b9f8cee1c29b Mon Sep 17 00:00:00 2001 From: sjabby-When you're done, remember to set up regular backups of your configuration. This will protect you from hardware failure and mistakes. On Hass.io you have snapshots, but you can back up to [GitHub](/docs/ecosystem/backup/backup_github/), [DropBox](/docs/ecosystem/backup/backup_usb/) and many other ways. All that matters is that you set them up and test them regularly. +When you're done, remember to set up regular backups of your configuration. This will protect you from hardware failure and mistakes. On Hass.io you have snapshots, but you can back up to [GitHub](/docs/ecosystem/backup/backup_github/), [DropBox](/docs/ecosystem/backup/backup_dropbox/) and many other ways. All that matters is that you set them up and test them regularly.
### [Next step: Configuring Home Assistant »](/getting-started/configuration/) From 4868f38b4bfef926b06a6a5707025843b47051a3 Mon Sep 17 00:00:00 2001 From: drjared88
Be careful when setting up port forwarding to the remote access. If you don't restrict access by requiring authentication and guest access is enabled, your configuration could be exposed to the internet!
From e669efb972eb80a387d2550fec4afc8b9f5222f5 Mon Sep 17 00:00:00 2001
From: sjabby
-
-Screenshot of the picture glance card.
+
+ Picture glance card for a living room.
-
-Screenshot of the entity filter used on a Glance card.
+
+ Entity filter combined with glance card.
?K^vh``x@SLXX|^DFd$c3`X7i zgQ|Xphr_yAdC!f8or;I!wwvS8opw0J$I~7hyT`NoMiA%uFoyuoF-U^(>7Y}=?&)gI z%&zUc!s_Jv$=DZ0pVR3myI*&^tfSs{dyOZ*9!~oipC30XiMXF`cPgKMJ>Dp^J$%y~+% ztV#BBFPufz#gY-;0Q>n{K1TT<=MlqMhzVkxM+0OxACQZI;@s!oCXC3*siX#^_vK>} zhVv*n_E2RV&ttP>^Qc6m20tA;#1+Wq)6N41Ra(yDb*w4q&7@>LfT|OkhV$RM3=HYA zpCo*b&1Vde8lIzodfmB{&J;E p3ss94DL-Wy< z7MB9?KY@+W!hrWP(jUNvrGc2+8oSPmP-kLY2nIGG&9r8QwB}d^r{%y9)D5Mg?HWs+ z#5y{8_hoojD~Z#${9Xod`vGQX<(=O4>yGc{QHXd8)_)jWv7c%U*@98<;j>Dqf!%l; zt!we *c8YRVbR_gXS8F4-Oz1yWJft*RFc zE9IYv=KCL@TaYST^*elk@Q&9@j0r<6r^phMtqfM2e4`mH^a#q-LQC>$7te$z;~ZV< zkauS)2TghvK2Xbk8;vb`B|Byc8CbZtRECAKHX+}vU}3gj`)yJ*edE71-T+xYqRmFR zL8eonc|GRkN!VZN07rf4gc{|kozBeSRbMq2kMbWYJ4TC9&{F4$npF!AMcj)PNC@B~ z*2&vvnVpq8re1#RM1ys~PtN{rgX#Bw_qI+5y)xaXbzNY6ElDy1uZVMj& zJ&rkj5e!b_wA(c0NcK@>j6s%w&r0cB>rLkSwH{6Rv^kT~TI+&S``J+}kXyKkIV8nK zi4~g_0s5M;KN})z mfM{SpVsuezp3xRY>g2_rKmV*;?r=6|Et@2!0jxwh| zkWbiRxjuZLKkHFi7eDL84VlyHBXB!B>n9GOKL?U0TAvS47nYq5(l;KS4>9%AUktO& zT3?KC?v!1Cc%#}t4tLP+FUNji*<6lGKCoU+$nL~mPD<>MDZJy$TtXdJG<#h?sp*z} zHKnq%dG#l-WiDU-4cLSW{{d{$lR +u-TF^+-=6G+1_m> znN{3vr@0;9?PP_#0Gl1?!`4Yr=L+<1shiZ(zGjGkQ2`+VMd-YU^KVIVwJ2_ygFE zDyS+S&xcEWc#lU)E7*UItNjMH%BSlkx09!v#YBc*x0{KmE`opGnSW7^++Do?`;?=u zc+~Z1soCj;a+Hdmt!p)cFlWG&BUG+fwuH;6vG0X)yccyh9SMT^FqXvJ=zg(30v~@c zZ@;xU7!iy?$lGCtNte*tSZx%0i(FExR+Y-{J&3p;W{sxT==Z>IveA!f%+n1Rf{`bP z)ZhMAG>f3?)u7#E7UguX4N%YlGY$Cj)Dkly2fn=5`-^b4!~#Fa6o?YuMY>w?jn0UL zG`gf)n#Nz!KL@xECugbUX&;BJ)^*QJhd$v0+{wO;8~IInG2xsr?>P`9Kd` zQ&l$KWRXuCADf|!%tC}D)}sV;v1j@5ue*taG=l(X_PzN40s-xEOhn1|gr QE(?UhBXefgc*M*0YMT472g*s^vB3 iG`Xobo_v)T^*7Jwo9I#r%e zVapEja&dix@SsYf;@oNfEnXuj>LJPah0g;Gr3q$bj_iu1_g=x|LMMEdcIHDAI1I}B z;xwmz9&>aUoy!H->Mq;PyT{#VL}?qHAJ0Ey{D6F}$FD?pJ7iW3mcs!h4z^vN4N%j) z(bA*=@63 R`$-qwQuh&Hr>6J34oFYxEc8aOFR5TfbW3I1_Q5w|$`;pNF26;Fg_N-`}nU;_$Pt z0;s^0!}{%S%JF+=GH`ArRoeV>XZkeG=b&cX?G1>i5nxl2^EHCIUU(tc5VP-<~8rf$nw-D}C-Z3%`K4b~>W2 z?=NTVp8upAlXgA}zb W%Zx8`}vo^PZTXY3z|x@3sLjb|2O3T2*5?2 z1P~)wwvUI zav&R`$G%Vw^dK3p9IQe~u>-N{Q1#&)>@c_9_b-%#R|ltC5==SJeffEF@n>=Sm}|}= z?5%U&Zh$GrFZ)Q>;aoxkKtJF8Sro}388Muc Q)#P34C0# zm?A4B>NSUaD6b7FB^A&lB12qitRNKwU{UPT?4gjz`Y<7&Ox@VzxBLH{i|j#=LO_CF z5b&@se;yO qbCHyf$9#@Wsr0k7HZ8(NBElLRVCw(`9#mNkdnJx+*jPbz`#9A4MeTa{E}J zl$Nx%{q6RYM73=}yV-G+_+Z5bov6kC^b&oOV;W1qy<5&{CB%lfW1DR8oi0^UL$lv} zL8vmE0{fNYFzwzm^Nh~^zI~K?sop4Brip(ST!j)LH&^Y}*j+LyjgCu` ^%ZVxhCmaJ7oSh@wsZ0)v4&+MsYEV$BO6C z^+P~SG@>lQ3GPHN%Zq~AyO0Y3;YlIIj=gIpb%d8{L}B;+mY1a*jnT7_olje`uX$Sp zl@{}W^{la4_AtDo?PIk)U?Hr%_icn5-oJ+|AQAU+$Fixsq)hYpO&zh&gD)n&zt}=e zl&h0r3ys>6qst*T)O*ZBi3w)-tbm_{R&PCq8Xn%5L)RNc)!y#1&Idtrm4tlH?v+j{ zdv|4~+qj%EsHeO{*^nQ2V7vjwNjT*7#^vMB7|Kv|+8~YZ;$Q|Nry`Y34MlT-52P-X zopKH;1~V8zgF|^5rdewzd6v}|2J^qh$s-qYFitA)|BCxdn%S`PxOlyHlYI>5Ygl}d zW($XP0Op$+*B5E_!eG`sUvScb=r5f77Y38T3T80w0k-#hMTLJbn3lD?Kct!M3xoMX zn*AG2w#^$e{u3vmzI+Btvp*Qj_w%5K3()OqB3PO&!9oA8_U(Vz(*M`r3V}d`K!ZRA zV}vKfdbyTaMOK%8<0bVJS#(yH{rcb=?c3KG%`RKyglstS2JCLHhl0YkM@S_2hKKzK z%t5KbZcNL`Vc6qof=UcHeQmhR1Z^gW5$~0QQ8Rh`*R2_}OA6n$yUcOA8n-xSWmq4m zqAaDjluEdXM>%e_RB5#)8Nos7;QkHH{J@_F8-fD-d4Bu`Qu)kwpQrP!)PDOFVH+s2 z{Vp@K>>pvca4lhy4n%!Xh*xN|vr)PHQAk_yPVNqbS&nzoC_RmKnY~^fv_~8Lta@CZ zNz7&r3+XZ${Q6zbyQ!m$ 8G1SYs8K$j)9)!V-6iD6VoKQ?2ehTeOhh7kcYl=&L@~+)qF%jl;506u020)m z5Y+07TK;z(D~+IK?xrk~^F@04Oj o7!cX76ZQ~(4tqgOjEyg#^ZkPRR|l7Trr?_ z{f9|uldaFzrQ$PUR04ze3Gy?_JA&7SJhP0slOBBadQO*+S0m))ReY1BUh5%f{3qqA zQ!*CW)0mp3Vp}ubw_ k+?CSutE@PbhY*?j?sk(MSJV!BAwii8M*4twBD|!TQn{lQmRj9;C0pcN&KPU8uUI z=r08KqkC)GTp$mRS+lL%Ot-yae{CHJuY#af+9Mpnb;ou;xBB<4Xs*eqftf~lghkEK zwr^N7oY^=o)yX@gF1enSAQbC7f~}-8D< NXYtf)&R`&fTC~u@ijz6>c!tOXT z10|s{R?uvw-1H-%ZhbedA?(-06@O&*-8FeLodP8Z3L?$wh!34m@_I9@98=fsNF9`)M~@6pBk^>?@v4|Fk^` zGbSPLb~MKZc=;4($nklzu6t=)BIr42d+cHfC$+IJ$M{DmgD7A=P) hHt1YSU#D=K~Zlx&0Y6<`7n@U z8RTfssn(2%)4fk01T=!)Pnwn ;ix7(#B?T^<7Cmj%Q^rxNBIM%0K@Kj}BFM{Lnv>QzV>_s4#V-gqRnw6dP5yX~E z^%J|vmc(EsYOiFu`~B04Xq2rPU~432>1X~!@gQG}{JY{oN}nC)|E+igmM{OIc#i6U zD*w@BeV+>;{mW!^AC^StzFq&Vc*6U=M){=1$^Pj@Fx+vaW#<0Fi%9(YNxqfde|&dP zXLXFa`K#?B@(^sY{>w=|#18_Stp7a8e=DB;NU#?{^~LLI#cH(eW+TmL93Mv+LI~=x zHcIf}ZBK_E+~p)ASn>3uLc+gITYG+{Qul+fK@0e;c-XR#jhO;|o2<@jD3oBu^J@*P zc-CM-PN7g7s{-(${ePRRk*9D{Xe5ZSox-F|(eMKHBuHkr!lc7Y2$Db&3|n9~9*ZA> zj5_3-=ivWhvg!g}6i+X$^hYEGYeVdYBp7;ku;M``!>%#!p-DOmS2F+c+68Q~)|>_7 zhvyP7&IJ%|9z(!U3% >oml?EuX Fk$9NlQqrC=+fa?nZ-|6eY()sGP4g&6a;MorqKnw%%x=2t*P|?3( zEsKlO9LceBESM!O3nju_luErnRI?6F3|J)2kun~p>YU5{`0A|~cQ*lKc7(K`KZfey zr-bA45b3o7+40+93*kvb&U$~gL<=QLmWx6`F;j)gXeGMgxKtszeU^^SsR9<2;$gM` zyt*~zV$G`(_4s|I>=b1N_vupI#}f5^+P+-;`XY0=1FWphnS_?Ba(k0v^li()gqSfn z_Yo_e)n;Gl;mM4f;T?W~vC%JxQ&kWuMTT$a#)Gk^U?N6@VE8m8A~mmTl19u4R^7W} zYnUtS(;;P}r2De5KNO36hg9>s4>A>Zs;_#oz%i9soPUm7Z)h4Rv327KUcSdJEq9@{ z(t1#;@^L5w%2nWmS@zX&CpIfWlsjvs% -n?Y|%KNU*BnD?<44Tx>4y(j3iPT@q-JcVQ_#0_SOTkmE3RUU43 zsD- 8bv&!)mlE5`H?yP1IsoJYTZKj&QQep!N(HnTh$eOr9*)3Wnu2%PD zTQ^LImD9+^wq3DGkL3g1yTRFxU+Ih~P-)}MstM1X_6>&wJVp8(EJ^vOk@guhUg8)= zoaMUHkT~r0BPgZU-MwNJfQUsS`ZUhep*X`ZJJ}6sHT?c0P&J-w_>wr(UBA$;%jj(V zO)@Q#0Wsb405uP23iZ3`stT3_@2X|E&e)+<6+viMIo*rU 0Wc%GgizBx z!{MX_`P_CgLrKUj6anp5?}L3F9#*p`OAEW_jyHV95%btt lKI=oj?^uQ)T>Sv- >v)tU( z&HEA{UX9%V7-mV+olI=-V7vA(LGy%_v~NhXSB>_R-L`Mr@wCG6!bozM7xU`d(XlV| z(uZ~2oAx@q@}ews^V)HnhjX7z{218iokRgmKj%+C0sXe#F@i%)Qc!Kf%w~7ihPyEU zFIfAeQ7L2gGk?9(^^Hm)ws~y`jNq2oW1{SgvfP3wjNIH82x?!|Bo%0PU(HsRrgJxLL2mBIVtVg! z0Sra%%x)i9i$q*h0yqIqdyN4r&)3?+CNRMXnz6S5gp_iIZ@w0qe$lTBjJ!72uKS`P zD5|9Htm_g~ 3UXzc)ZAoT4yb zf7tgXKReuzF3NCHfN7t)_k3aa{A`HOX$a^x+;7g?ra*sYSG+Y(WN|Knn<_F!5{7n9 zc9T Iky>k|6FLROA(bU9;K~s!N{&!RTu>ejH-c;M!mJ~;E2ZLwBlz{ zo9Tu6#1)Uw9ELv^y$usW1n=KnWco|x+dyzQrMt#Z)3=e`Z~nMuMtCvPl1?%G;t_zD zrMwss(a8AQn6n*~l%&WU2}AbJa-0LQdcCo6;zn1uT1*MrB2sY~rg1fMo|1RIG8$ou z8qsiE@$kvPh{X`dU*mW4 cr4US;tW>O5L;59Mo@=KQp=mTw1%Ycc_XW r21~8#E^^-il#FeXFe+X4Q6ftQmm5=ne z&`bUPOlIEacX8~vsV+12bzftoHf0@~jYeU_(-Hy`IAF+OJu1yyn8l3-osFK&LQzXx zc+}!_sMAR;UE?f*<@cbJ_VoCwbXE{De$FRvA%yI4< 6nR;AwslEdD32cW}Q zV2qe7X;DC78BHCU%oS=%yH;R7nCyt}=De@qiVsP0st^`mn0r_F!y^RyjegvRqCm|e zdoBY2w^HV|N E^OwoG8rRs})%Uq#!gK9A4ixzzAZWsbnt={dHgCN#n}mxJN2 z;AV_AXCyVMtI^z%R+lTC9*XrWD7QcE?U_)Tc{ORTmmTzRcQOVce>Ay7Fq>M%5^E0U zB3^hgTn3BZTG0x*x)U+4wj$U5Ayu{6e5lnaaL9~`Uc`k^C>W`~EQZiXe7PA3@A%td z#3!T@%-h$5YL#o&4zJ7lmsf+0Mr%^luR)p(QJAi*h&2THU~4r+%Z=qixDT=w#ud)B zV73IR(g%uita>l-{`OmX5!FY5WsG?ZYbULIzV9mqeG#hK20Si(IU66A+)D(zrwm3b zp5#0({F(=5o(JKivKZIQp3t8`DwV|n4)bJz1Jfo~{>(OdL9e6KZ5GZE;@%2u!N+Oa z@O)JMCjM%FJks;jdn!v7`jt^84@AK=zV({+&Z_t8{hm?5Mzpv!g@b`Ye92*IxG1h+ zIchXZ4`<9tj%%GplE|s*f{nmiWRsA0&UF;g??NQ=B)FtuoACHa %>uv;CjE6E%W2oG4l`4q|8GP4u@VZKK< z`XSC@SFoX2a#B|+8B?B%)GzLJLR`%(i2vcx)SMsYlk_CF=Vy_L+;0_1d&NZs`zqRb zUrD1`9*P&hqV15T+wyDOc8Qf!Sc}qNMJMcA)yf~gMH^-5Va+i6!C@^}v>nw=sahS? z&%KDYCD((a# @ARPs?qSDeabI#<)$PU(M7W%VJ@AtWJ)z{`CdVtMZ$sqFqnf0TZOKk|jt zWn!h=kHAv~%O!WTRenC#?YV4`F%ZdD_d%&mb0)H(M1(W3ILTVmb}o YoxG`bxiRy! zbA%jlV$c&RNn<)yYr8Atb;}=#g)s3FwWR&yL0{FeHetRX4G8g2{q${{pIyh#joA}( zvDRM;Yu^$_<<(qHb1IP3A~h)Zz@Xs-$Fh`L_1g@(+nV#|j7PA6cXR5tv+n|x^NbVm ze9b>OJzA{S;_2F=e-qd^x3o6+@}OT|p9{`fIcy;x9XAq=S#|B_hH2^xY~RhPXm8Y~ ze(zlYx@zM@G~S%7b+bNO&&nrPUu?!2$?NiRIr5#h)3A=Zd|uYPqeQqAOLXpK*Q>9c zGk~?BTJeLYOiGpKTF1gs*e|BQ;_WO`$yReZQ;O7^N7zIWK#SiV{iK7i8%YJ{VjSsD z->{pb)Q$(Y8pIX^n@O1Zv4}937$pu#h a_vh2l*;UD&2rA2TM z?#x7@x_(F`bQ%_ddj~b&B`NALEMjWq=lx;^F~ef0%J }7KgD0prNyb@>!u%|=YixQ@3t*OHeEIgWyON1i$tO7 z)pC4^RNi11ka$1GMda7bSe6>29EmIxZ;6T%=2fIXmD 4F} zKCfJY)ue82pD};zx?IAW-LCg#_CcEP;KtqOAXMFTaQvM|3RfJ23vS#+2O6Mwf}NUM zdp|j#F{Ve+fV{^ @hnEfSk6<|HcdHd zErKjQv83%n@8HY~fLsbN(@dEHuov(~Jr*u9&YX96RtKJge6F2>e<2qM+L?nKV=l7b z(;>027lwnmFSCaqw-{5K1&GwA;0mm}=#&PeRc+be4mL~}9i%>K|B6YZ{NRrs0PHk^ zMbAM^hh!T`?zYwSOWUj4dvpC2#0c-0%KO@qvsG{^2g3zfQjV5C(PK1^`>I&p#FBq! z0A#;^k@}pME!a3XjThq-0{{9zEgNF8hW#SP{7MLI(&OX1Ca@Va-G!tN0oAxoTwxz! zqAQ^}(S9GFC+WKi)yvuQgIzg!NShkVwP>z4r8a~kjYPd0f6R?G1~CN7lDipS@{9OP z@Hb=|?7Foe!5k)J1L^=v6}st}mh1Y`h;nPSw+a={u2;1XTaeh!sf+lub%>qiknGK9 zOMR-@)zZWV=m|qh+uS$JW8Mr}XQ8t=ZN4oI5&5DK`r{oQH?5L+dIllx>ZY^_)jQtw zr~*71f!9h%+Ev!1%&kfz!LhZcBeb^F#0!!v=Yd7>M^ 8+|=5J$Y5RDfYy|Tv8{@i zGwR=Yj8Cw7_7yTH9TAi3?Y!Z>>W#8 `de74VuctKSW(` y%~L15Ft$5JtR{b|sJ5yUVr8jyjXCF2sQZ&<3OAZ-g_$ zI!#Su)%s9n?Xq8&ZxF^@d=GChB|dm-oW9~#nx5`#eDoGHWl7SYz|dX5`dSM*aeYdM zouvedc3u@J@kdp{6=qiS_SVAvYJ+JhYSqvI*Tq$j7_Mt|RK%ecZ7WDz-!=6e{4gFB z>q4MBW2DQlk#&etVe|}SqYa|`VzAcq#xv!O`P=4mmNcF&Xw{pR#Rz@(#kQdd|Bmd1h$ z4poKPpM-B;h_671>8}P~ky&39ppJPjlp+vnc-Cri$7+nq8mGw~ALy4<=q*hp zN(%2Gbm>AVDMbwsIx6&dPwn`0>4A;yd8!%^ j|pyk1lLO`x#5rKq{r zqiLW(V&K4yjO=cp0&bAfu9xbwy5Bg*XFPLn?KwX}fD0B*@Y;@`v3l@VN>%eF4|81M zFlQJW_%C*x0ZkMkk)k2DZXuri0iNoxNU*+N-~s+gVdk(fz`{V`M1b|1AYOf)9?9?@ zl0h8_h7^=C_W9D J!~*C?NzUV{5tMYEf9g9!<$}nwx+PgPa6Qtv-`#c8@#USQah-ykzXiRTKnG zc)z3$pH#F+a-zq)^Ker*X?{csAWo9lLxx5UWk!MB#YWpjk;gUuQZ-(4D@iLp{?%1v zJC3BThRUj`u_mm6a +AV59a^kuRcotPHii%U89(I|TpN+Z_M@|AWmC zun-pz{QodTiVAgFT@K*?n{lBu04kBN(%XNI3&GJk?SRsnwP=2i3z^Ef)9VC7Q79&} zq`r&`;bUg>yD-G=BPYfcO%^KVvap4Y5h&%$*7C=`sKmJaq6#FO-@>G4-|Moze6bO; zwJShvI#xLCc;@p3?2AfVKCIp>RjlYY|AI;PYax;X7<9DDkRdy7vEdSRB3&`u>@;i( zH*2CroycG~TBKyfc387S5%l?+rixsvtEkI6^aMJbk(dk<`qE>0 73cRhqSnEEGxJi+|u zSL%YIpP^v!@-qyaWN(DC&6saQFx=;EMDkwmZbS*f(riYHVq0u}lcX%(1dEsdRD}36 zVf3#>2yl|^JY%r~E TluOkF(~GK%Z_;3C9Jk_{Fw2jxxMC8aoj6d|rlf-0I! z4Xm-%$zMznLm}%jB~iK~EV)2US`2yP(sIm_5^kHuHP?s3ruv#eT5ysrV};#mx&D%5 zKODcQ*EM)avfrLmgOlva>QQ+fm^V|w3q4(O!zm} ^p$v~=0Yqlt$LP0iquDD9Ja|cYjCT6$+}<3y6kLJP~lbYm^7A7 z-46__N9H~?p!ONg#md3u6qcL8)wF6<_SFod+tC%SZpabK6uH3b554SksTT{@RHY7e zg8fhISmLuI^h*vK$d2vGbI&sMz1FQ-PPHSytlY6R-PbEB4FW&*ZA68=zuPnr0e8}( zbBA3Q14~C>urpT)JZgm13_RYvc5=8M6H)8pUUnuTc|do&N#nrLTx(}*_vU!wSg=CM zaNQXo{AJhno!y6PYnV0a?jkw0`fi~o45ejfD8a{LzqIz4dt90T{nugrkWTIJt^E4U zYJ2xv_v3C%z3TPz^LyUG8xBS;Je}C}j%P#oEC{$;u6>nCjWeaxnlgx>$!rkfvgf;l zjMG3e+;x8(`qd-n#zxQLN^d2o>{CbfA5ew{KK-S7zs?H r)eJi zUK+(CYKR22u&A5ny3DW0DQk~hvWo;%0T3S}9s`*%7knLaQ;eJ4mX_>YC6Pz!b5z5t z!sXj>_~xijAApN9ATn{s6k%z+fw@G@!+9>N`L-wd9Z7IMr986XX?OA)kVGHmr!x01 z&Nv;{Fif=2=Q o) zqqyal;nGIn099L9;!jHE=^N*3G*=wIWlvI&zuO(k{?45AgMgA*M@%+^2GeMS-gIBM zncl+CFXh>Bnr>O*xmMKQ!I3R>X{*V%*=~hJ6GPjGi$+}t3G%{!Pq}buZXOi!jy2ge zyl_-pYLwvTq~3kcHvAI;pRZ%~=cpkK+}ACVfeB9j$nQvD= S;C~#Dit }~OOwP-qZB~JD7{Gg7Vs?lWpgI{2( z>P`-PAHH~`<7o>4N$ux30`Z{)C7_9Jv9u`Xf^yZnN!$uSnYpIr>4flJ?blEMu>pk0 za%u1|nS^;Kvzz5iVmQ`
EmVGzfVyeRE-YnY$1 _|>ehxo9m|(iRc8Pak-WBB`vx$UP7l=9e6cf@D{&+7 zz2)j)uGVT5^u6`PNDDhBQt;vVez7|V?nk$Oe{ee87!u&9Xn%UR+BwLK`l1~JK8uo| zF`!9F*8Ki~;cEeC!n-|zSlroJ{z}H2y+H)JxG!gsWbYgD1j(E?)S3o4*z`5#Kf}ly z=12id8A& }96ojo9zfauTxzXY&IRPmJ@MHzau7ehZw3_&TE7!eH5=;mz z@G=+&S566vBwi|~g6P^!W5hqSkjYFp`Wf}wP0_EM4=C;D`9rZUU|2 N 47?y_AbD4>y z9PoFp`SLBPAZY)&*v(ekz3#-%NPf?0L$)4mgjCH718`aQHA281wvFed_EZu&5x=%a z&6UV*rAduY?r<{MR|nFegkQX_J;}wWBf+<~A1?v5Wa9~UkB`Q<&gL?o+j6c_JtkMn z@}W~}u=;j#SbgZea{rK4%xtgnOF|R_0_cSd%`Olwq^cGdG;I;Ed8iYQJMHu@ruS3S zqWIhIpqZy|)K{{;sn>g?$;@h~rx`7?v>%@6Fq&P2|7_dG&J@a32_vP~w%40W=lr$} z)w_@ ViurT=9I3rxIr!gK#5UVnd<|AA)bfgf`g1m`~<^Y7WT z$J?zTj?mGrzmLPC946Qsu!i9O=C|ZhPEXkPiwz;8M6oa9@HD?4d`><%AvCKIN*hkj zl>(2$hd*4uSDv3Fn#@QSButmSqHgy_{LHRXQg6mztkNAyfgr0VQGV_&MmNi7HK}2= zF*pJ^DHAa866AJTtQ}wK@Fm-yY-CmJYSDo6dp(TH#Qftf@QMcb(V)C7f|W-V|1(RM z-P0#s-Lhsj74NjsI~qxMGm?n{qsg+?3tOU5kmZdtd8^yU+Lrk%NA@TyCH3~$p|-(! zccn_Cc$tvoxP!^^J3+Zs{)qxX`v>9DXIXLcsdks8$wcRVJ1Uv0Q<;*|3`Whz2eR1U z_MrdFZ&~^#iEWgVbQJ=svPs-Vg8=C+|Hf}+zEYF^!EZUY=i aHJm=;>P>bwFb-^>)D%@%H^d?ml>FYFhW uL|tmcCHWQ2`lx=bkruX=gP|p1d%?sn9Z* zfk$!Anhu)Q)^p(du(Zn|b~nD-MxGmF=P{8)8}V^$qVmHTB32ui8E6R}m_ZdQA(uuq zo~ODQEvIL%irLi~ZuYTL6nWQqbEC5Ba%;vT_9Y4to||PArHrfT#G50ICSN#Pcf6pt zw%7AGbnWgNgTcryn+v7~jDt@ZsT@-bR*_=MyZ2?ibGZV@+-+YOLGBYatgpG6o;2lM z4p%|)JgX@iK1U;(Krb7-R?HR8brkUU+D&8tujly;!->a%tBB_v(2hsvp>N05ny-P) zlc%=uLJvHff$E9+>!&T${6xVFBV Ra(Wp(<)z@d-> zt4QL5|CfOCAFxRA6%%;2<7FuA1H^am)f~~GT>;RT9?gzpS;--2L_T*p`8mDJ;Hx?E zI2{aoqD+KC=`YZK0>4oxmC#FJ7z+NylyJcxvgOr3Rr|kB-109qf{#dfFY>=;;s3nk zL(Fxtf7Gxx{14Us$1FU(IVh*s#{2Sd{sq-uF8Qecib}-5H-4{inK-KV8}PLL$aZZS za(8P>I%>^Io3jTh^EK*}SMP_QS<9AN-Md_kZfzL5TzwE=ZEwn%c @TKAhQQfw>Jc(*aG@-5(*)#t7u~Imi)C_L{$TtfY*d? azF@w#6H)lI`NL&ZE#qeJd<-r-Cp6F*aKyuhM) zGx+eplgF7W=V~jQs6KGuus`8=V*aL hb%vp5-ca?z$A@Ow1@b cy=;Seg+14`Ma^bH>b| pP1q5J$Kd|?TVno#BeEiuz^obt!1YU&fv}lum)#TXcmKRDCSjZnTxGyi zBAl@K_{5HQw!bFH zb`#{D?!l4c%Ou$spHV*Z@r{?r5tUcF`-TA=IZ`Q%at&wZ{>#MeACqJX-WO{jC*M!k zpon}fCLX$51y0(W{=DSlZxgpSjL)19$Y9m}=fo`m@ht}Uk`I=#FKE^ougCx$4r$$_ zmeGPRv}3*~u4u0amwe%w*ZeRN6rrf6eBsrA!e~wQP*i|yWQ8h!{F+YK|I^NyzeCx# zf80)FD`g24LW#&Wq%7GZ5@XEBz6{xyF?KVIow1IwOZKINm{OJ$S(7cKkgTOb!wlhj zao2r#?&tVE$MXj~KhJNUYd$mAdA?uoms~UokbGR{ADxbp#iQ8vqC{VwK9(GPMH`TO zkiz#RANsuL JYW#_yQWjMam-x9jcS0wT#xI4w9ZK zdc4z;bP8Y3vH}GADbPBd7H=UtmhjT~!fKp5@2qI5q^=m%+3e|~j-XtXelJ{V0-{&= zI9{>~@pL`+N4(?7qve?W$dOdPaAE@qM2=hQ`8yn+uL|l6pdGAJGK$dW>c%7XBS$t@ zG^h*SAtFG@@O`X )B?7XZ6?9 z%04dF^X?wX5q?Ck!dzj9f<_eb5X&_9oDH#zuWmXFrs_sl7?)N=_(FYibs!7p8nX %5vzzocOg4)g9`=3YA6Y9zHq^mFh6wEA^MB?YWF)Ja(rl6Q+el! z3Pi$crY2gy%H~AR$azQ`V`6ZXoyZL{F+(E2pSu_*w3-R(J+9OIfr1COj{BM0-hTj` ztadjvwM3>^>_poQ%YdQGy^Ws@4bNR!LMn!f1&EEU%x>(uU0rf&CUv@2vm8|uV~7f3 zK0Me>nfC5zYl%tKaG%??CEa&Y$jzou=I@rBR*~Pc-Zgz%5%Z_M@vd%kq$=W0RnS7* z*bOzg+VsBfw#hw~8%t)hLM2bHXOhMMi03Z3EriXFm5%cY6J zi2p*f1QOa686HJz@!D__&XfwB^fc7EXgu>2Lg4Hx6j2zTDp#B7FvL?OdOsW4w(x3B zA9lB<-5yzT-mJptdtH6RX1T>bT0k@M;%qxx eu35ef !{iboopV}jfp3=7 zA4FH5-?-xF>IWVu6#s!@<};#IpPr1%^SCdcW6kW2EJ=GH!-`CD(%)=&RnWhA3#B`G zx|c*S(s)sBlCa$2HZr0%Pvz@)=Pv0Zlu6HGBj^ouz#{P8Lok0shkT-`EzE4(9_L DQd*54lo$7aIQPrU6C?`KLqT){J$h2EXH+p50dZt~a&4 zsKPAOOmrO%ys|nalULDtKXw^?>e UvX~&lP&Q1k#|()GeMBCZWDnm%v}r6J*VM0>Hq}-dA>3 z|FPAjJK}_$O=#ry 8_L+?ya#rL%9)*xiOUKDU>aVUuxMezSqQ$k(@< z*KnOddnKuilYM@>>-XFP+!LH>^cz}sWayA1CLgwR1%QW+eE=n5@4#kv$B#D#ZpzR# z(+AO!OkZdPF_Hps5kbQ^uike-h7`errYLE8H(DH$sRNnN7|byb$I^w&h=k0VhG-fZ zFVF`pnbK@_psyMl7e&$hSO{4I3_7NvAcnw{VwXYMJ7jh6JA1qC4&NtH5J#e&nWSN& z4;bNNKu?MYN)KZKVIUqs9=M?Mj;;nCwj6NOpjPm;B-Fc7B<~oCkA&hBMhj}Ag+{42 zG>yOdp>yPI@;GVmCDdw3Q33d y8hhCD;YH-n-Cz)>%> 4MD8t71oU~*fvrt|#g#Sp& zh-gX@5i$W!S;wSI6H?3vQY6M>B)e!~a;di9R5=|#Sb8d`Ar&;5dXkiCwMea2j#W2{ z)QX8zZcIxriOVoe(zXw2<)XQ*lWyvt&gO)MJ;~%Er&n|0z>+w-@n{E~l=o$KKaSx( zK_DJWDeaMo<|qBSBQyM$>>`o2W=PwRE=&X`o(RHYbSPN|R0WDD=0~ww3f89!j0D+W zmj;X)N!IINpC$m9Xs{9JxIOw3rjj0|T7V8>NN(OsH!d H&E-zVWNQ2RP$2RQ9etO{nSA3~JmfsG zN%rk%@T-!1r3-Y>R)iPXlT7W2VoC4=nf}le&Sg@}9 z`B7?a5(U7S(^=(oa>wlw?(udT{SZ#NR8Z_PR^nFS69O_eUM__Bhf4+crrLY#6oqfu z>rm@DfU=50c~W1F+D8!WY2kE}vZj?WnfX9$tOSLyXV|@b=NApZ+}tWM>@K*on9UYY z% Fk=i%fC-&T1NFCG28A#3Pz>}UmT_KAIthIe&+qHU>pP>%QKhruI@Y@ z^nRT!UwlB``Yv_nS&7SeA6c(#se`xWi4T`l0_5$7{h>^v4S_f^@48uiX@4jSW@Z{K zZc0OwHS{Y-^Peet0-gEzI;Xa02c2TGGfGI>7SzU3=|`{XB6ix^j$g{>ODkE=%`J_^ zDTKt{S1jxW_SnfdBBL=K(&|SGEt!Qk0crWI?kmHT(+W?+`cNI3k+*}jLPNQwJ#O#x z8%aW|8*XOiX_NVzne~9?$D!Qs3tK}7{tefdM2fEk8>(uuT_em%WBJvROQ+GFq>AIE z*e+{K*cUx7rH8NiZzNo1&9j>jBU=e1T_ooU!(h9_Ap>zcW* A}30DDkXubiNsHgj@ xB>x=mj_q5o&?~`R`FvY9)qxihXRwq>A z#u^>2MV}CTf5EkY#AFO#NnR+)=`KoC4P>sr=h@>+2fz1(eRSyV+|T1n-n%t>*Skfq zc?hsj?tF!qPQH (!1DI#~~*_rzW8WkHdQ#u<*8@Qmmpr$X6$Gj@~Lodj| ziu5@A9mO7>JfE@xWUAXKiqCmwC%x+yffxOg75nXA#OK7Kp{nHlcJNn20(nvZ0L=w^ zU6s>>{ w?cl!@jQ ERJ5Ri3jtO7%yMg`fQC*#B4koXW-@lf!?MT2(s2E3K0oST1 zYgXV`bzx5i+v>{fLh^lO?CG7ZO6o@+T7BnPBBiy`;0jS6N88Myw}kZ*cIV3r?GvYl zu!#Y?N1+l~jfJX2b?MTy@^QSha)06V&Kb#&9gnTI&VxDfQQy{{N^|PZjkmB6m*TRq zj(U~k`6Z|A0TI>Pey5jZp>F4 &l|3ZXg|!0kQRcWh=p z`=zGcEQ aQ5)dvl{VXdNfH+4H|516<-F7is|?NI$AwW_Nh%0;nOBeV(9I*@RYS ziY=gDmdw7gG{k=0zH}L^ki#qJ^eTf>$!xU+R_N#SU7$Zl&R^)Q3Nb;%!f9K|m)%-+ z+~@YSSRv6F_2n|#3B8fNLM;J*{Y7hyZ)F+1Jg0GsDc81NjwHog)D?m#??47W{aGBB z{R4~;(qP#KBUoN^0)~i>^>6vuG!6_AI&;^}ej6ejG7dj91h8Lorr x@;f~12 z)tox8Fl0k&_T{(4#V;8TPiDvd0^PJ3629M+O2zu(6j$tYyYE;xMmnl?UL$yGZ7$Wc z^h|RS`P0&Qr@F;fgqW1(aH?zh+d^gX($7XlmbaF?>*V)O7s_uHeG`b~6T4+4=V#%n znY)b5t$@w>)Dk(*SL+v%CNbwuC6~0iA#P2)Z!~x?SslI8#T>+$XVJ`l;&Ouy=*!H@ z*!A;S0L`NByL|H7tcb~%i&tZQ23Yh>6kQoqOs#g(Z)(s8-UfZF?aP+$581g$ )ZNcuM^0!k;CiT6mwp(v+8AU7KiUjzeQ!mm23Nx<+$Sw_H>lO#tLGhN#IU(JQ zz01D2@~DF=S8c9<^GaSG+LSwO5KStX&n|VWo~-(!_kpiWeg@o%3Ox4BG%i6S3qJ;u z$o9=tu@zsP@otnbf6 k&i diff --git a/source/images/lovelace/lovelace_views.png b/source/images/lovelace/lovelace_views.png new file mode 100644 index 0000000000000000000000000000000000000000..785f1c9af2262f4a27cba552796964f3675164a5 GIT binary patch literal 4735 zcmcgwXE>W}|F%kusG?}CDxyl!nl(#pja{m0uhwjh60=rI?Gd99tF~A*QV~=Ul?rX` z+A|1Jv_`BqeV*g}`2X;J`G2^_bzkRw9mnrHj`O^J*BNhYr~_oU%0NLu0o2pgG^L=R z945az0I0}!s`Y6p@`KXPR7ZoNc93VCJfLw?2dh(1G^8+|I9wo)>7VOb`B6|XcmKU8 z`+O>#DJWRk^)%JZgKW3pA&I=>HhpO #+-e{8 zQ3oo1#1-iS`Gd_?x9!<>0$hnZjkqT0wwgD0gu5&4*MXOJ8=MK9Li&i&3&h-D6|G~@ zU{A`l1PHv<#)`$TXbG-d)`%-k+hq{Y{H_a$Whs7Ig4O_-$e7xa;aC5G<5188|Hhd~ zQ2AE}3w {axg{fZB?e zd?0WCvbUIz?SsZr@;8U&_h{*a7ZI1HxpAo`&p_wzcKPBtCQ_DCf?eeYK!#PE1PPbi zW>KG`GPCdI?OMSfMqwF^%^o(}nxXMMr5Ie}j>e4m RAUw^x1W5Q|IAuHFAAp+NxNk08}`a!^Wst5HVCI+wHyRSq26T-73}WWL8@kz*=WT zv8OcOAlCTd1_!h~RvnuNj($b&p XJxh^f2rEm^mTN)b`B%Ci=X2+D2J zV&+4pknPRhrM;b!D?PYdA@E2R4Mb9CCTD I3@B>+t|&QRH6E zREM5<8r;aJ+vmQd=Q%a{+Z+P3&IT%$yNYSaKgPEFNb*w|ZS2mStV)3U@URpy3iPln zm!T_vLFOiF;fDUm_r@w%n4!8trOL{{k0=%YlZz91yR*R(@!D>#Vqaa_0-j3BrFU<8 zM*F0`o)XD23&vITe@;~Bm{|e&zcY*X-q2&$h;!&Sf*>EZfQA9vO0bBDYIOTBBhpUu zwq=exg_$jk0Z`!&qC{amRQpo)If(fr*L_P1TOV%$DFQpO?UuaGUsjW`1iIFlz;hWI z=1lqK&CHDfT_)q(LlL@0SzvJ) $*a)oh5(YdG)(}e`t{4`_t>tR8_wD=d11s G2fC~@H#pk^V_6)NmJ#Un@y5XxDdO@6yXBzb @%YWRVheL0iXz-U}s? z-%hz~Av3|VAMXa-{u%Ba`v>h|KC9U=+^O_EPZ^&@k1Rt6xM~0zK)#l<+x+g2JcB-u zM6~!1FS?rn>p50%XRo(@`4`O9L-z0AkW4)4bnvhw;A(V2R%OVAfypJ- NGi$QgQzKvpY8!(p!>sGSji9|cOe> $ZF5pMJYkK^<9}_LvqrP1M`4hI1qGHv#6?958lnGrqovy_24qvk3qS1P- zPIk7SXFI&-)}*3iG4%I{-Jmdnr~mI>m-gsSK_#IFGb=lO4H5g|$Ai5&7cN+8k?|8j zw$1G)Sz)8rpbeUII!Pwhw!(Q`$kbU?#KwKj#m-<9<>uk~U$jd*_88lSEjV{w>J6?Q z_3o?LuN1@0MIf|EtLqh$?vk>PiAw1_pJ9Ae%9fa_u=CIp{&K;WQAs`J+3(iX+mhBD z+y9j2#+ez%WVY%P@CT*0PPV#beeYfnA(0sMB+k>fL+ZEmM}Deuj>ES6n#byt^VrXa zhA$1K*ctjP^f;O>cQgt@5{`cEeecFE*{Oc>b5amWLlhhZLy_gwc&F-|oivdRrrmRC z?)JU3k;ERgVD$c4F9@RycU{e!Sdg9iTA(s{Ef)W3@nE30^W71^-f()!_t0_AuAEz~ zMGRg`T7PrXE?goQ!Dcs)CmPB8dS*2j;I`g9S0UY^cILP?9h&~dBfFFf{mvn=pl}PK zj=L-AhP mq_+NbVEr=(X!r(r4=IJ_mMKvgezyeLGY*&>slfZk(9@% zhBOkE(;hQQp69^VGEZY8BIJCLtP^uD 1WRa$Xc z-j}|ZXgM)pY3;*XceWf2%{65d)@~W_>-hE2ZM2UQ%;z1v>D8C*Lg-Z5J?QF3`K$(C z6-=U!DKKCNXGw$a#XE*COah!ngt*?~`fc2bJHt^sNRg{+%;jZ$>9O_#) SLSg%)CWL8 zv84V>ZJS*+C*?j8YTd5$RY2-m?UpL;YP30~WPkkPSom@zHZZ)V4|7?RR G1Z6IBS`j&>oDoMSMME|T`NyA)!Ts1|@X3 zX7Q6mc+yV18{ 7GkHlZzkF(Bbq~b>k)Ki=tvyt5n`EydOpdDx*)NxTbk$C)WY{;;sH)Y?Hdc z60~i>kt4J@;8X>777HawQ$o4YO8Zfj_YNv^oN7oKItDu^LuQ$<3$z$#-bjD+V|K@` zQyOaco3l{>IzI3K0si _S!bP039wUC+aV1HS4oF?WHsk(0T6um +~kub;dwJhVv+D6!U_*1W5& z@ ma<%?@;N~qPb3&e VK0WgKjSnSi3q}viq*|9-*obE{VyXZ*N|MKV#IvY4h+dM zD`*qO(>40)FC}IT*KXT$!9sT|(_ci)cv72y-bfJo0y&kY?6GkZt(kLSO)rJrDU~|? z3rQNX@o^@|1K!G8vRQKnHHDqIY K>s7z&`=v3C@{SvSv!SitbqmXH1$g17*Hx-v zL)q3GaVDvY3SCgWTZ4LU5WA#3G}Cd3b%jADSai_9AER0%;p2QLbSP`t>co4;n4fUu zJShManq58}chr-AHV?BhdM|Q~LkYihieFNLRkS^^gMe=&72=)S#5TIELWKh`9;UXw zttHCI#0bR8ubOuV`bgr`K6*ZJ kNv_>}Zuc zX~WFERHm1fH_~A-7u4DOFwCj2)W$r qIqKiiL$*by)>J8&q!<}$^_d%iXC;&e130 I8=h6NWoR*+ zTp{en9g^;3#P8Wc(PXwK3#sCH*1;AKuQ@y}q}uIfjqh}av4>T?a>GQ^eb_JH=3a3f z>CuqLSLUq{_5-4skudM4Fp(V`qTI^p@Kb~0aZk=#^9rdED3jDSPhu5i_H!(7Sxe 6ay``;g_lG`{ z^J4;yx3YCilCIv^0Pz_>7>b Jf%4zD4`!L^=6A4LPnmOtU U>1D@y{9WCXO1hBndJh^o!KhDB zFHWN~0_5L>%xvdlKmH~hm`io%T+h10MBYB0S7QO@CJs#q_CGPHpajpD22fur+^hZ> zrJelTk?!slVA|>8gDPY8zK$h?j`bFM)?%?MK1*j~3w~yAhVtBprs$he$|36m*?(oS zorUf%?}qTSt5l;U3 KN$gH#Bt#%`--AV6okewTa%lm^SX>ZDi0dS}@G z*){lht1*p$*wW*_ym$}>Ke~Wy>R3;D^Z2JtTAp2rZkvBwhb8wdvYW>S40J}??YSr7 zQGDC1U`TXQ&oxIaF%#S0oR?eJ8O^t<;idO1Ag4I6;&7ciPVNz12q7q- gZNV$Twym`tQb)FYgo6qA BZ?$N(U{f za7Uw+tawGrIyG6EGbIM+I&yQC66dfudD=b Tc8*Nob4i|bJN 9)>wu#cYZ5!;rr2b|a+}*U8#_qj$4fz+C0^#x7o5)Rvn!gi{mushN zS_7`zG_{2YJlP1j{C^}M|Ko88_ZI7MF2?J1=6XKPBM|dQ#B^5HlN_jMGJA@h^5-*V VVNBW+{)R>rdRm5>wHo$O{{cBAH9P --Screenshot of views. +
+
+{% configuration views %} +views: + required: true + description: A list of view configurations. + type: list + keys: + title: + required: true + description: The title or name. + type: string + cards: + required: true + description: Cards to display in this view. + type: list + id: + required: false + description: IDs are used in the URL, more info below. + type: string + default: view index + icon: + required: false + description: Icon-name from Material Design Icons. + type: string + panel: + required: false + description: Renders the view in panel mode, more info below. + type: boolean + default: "false" + background: + required: false + description: Style the background using CSS, more info below. + type: string + theme: + required: false + description: Themes view and cards, more info below. + type: string +{% endconfiguration %} + +## {% linkable_title IDs %} + +You can link to one view from another view by its ID. For this use cards that support navigation (`navigation_path`). Do not use special characters in IDs. + +### {% linkable_title Example %} + +View config: + +```yaml +- title: Living room + # the final path is /lovelace/living_room + id: living_room +``` + +Picture card config: + +```yaml +- type: picture + image: /local/living_room.png + navigation_path: /lovelace/living_room +``` + ## {% linkable_title Icons %} -You can use icons instead of text for your view tabs. The title in the example will be used as a tooltip. +If you define an icon the title will be used as a tooltip. ### {% linkable_title Example %} ```yaml -views: - - icon: mdi:settings - title: Debugging +- title: Garden + icon: mdi:flower ``` -## {% linkable_title Panel view %} +## {% linkable_title Panel mode %} -This type of view uses the first card in the `cards` list to expand it to ocuppy the complete view space, similar to panels. One very good practical use will be for floor plan type of cards. +This renders the first card on full width, other cards in this view will not be rendered. Good for cards like `map`, `stack` or `picture-elements`. ### {% linkable_title Example %} ```yaml -views: - - icon: mdi:settings - id: debug - title: Floorplan - panel: true - cards: - - type: picture-elements - image: /local/floorplans/main.jpg - elements: - - type: state-icon - tap_action: toggle - entity: light.ceiling_lights +- title: Map + panel: true + cards: + - type: map + entities: + - device_tracker.demo_paulus + - zone.home +``` + +## {% linkable_title Backround %} + +Style the background of views using [CSS](https://en.wikipedia.org/wiki/Cascading_Style_Sheets). For wallpapers you probably want to use the example below, more options can be found [here](https://developer.mozilla.org/en-US/docs/Web/CSS/background). + +### {% linkable_title Example %} + +```yaml +- title: Living room + background: center / cover no-repeat url("/local/background.png") fixed ``` ## {% linkable_title Themes %} -You can also set a [theme](/frontend/#themes) per view. Theme is currently only partially usable (font color works). - -```yaml -views: - - icon: mdi:heart - id: debug - title: Home - theme: dark-mode -``` - -## {% linkable_title Custom ID %} - -You can now assign a custom ID to a view, for nicer navigation paths in URLs. This id allows you to deep-link navigation to this view from cards that allow `navigation_path`. +Set a separate [theme](/components/frontend/#themes) for the view and its cards. ### {% linkable_title Example %} -View: - ```yaml -views: - - icon: mdi:settings - id: debugging -``` - -Picture card: - -```yaml -- type: picture - image: /local/debug.jpg - navigation_path: /lovelace/debugging +- title: Home + theme: happy ``` From e748ea0492af8dbbfd510b08c4b65c094057ae2a Mon Sep 17 00:00:00 2001 From: Trey Richards+ Use titles and icons to describe the content of views.
Date: Wed, 11 Jul 2018 10:50:26 -0700 Subject: [PATCH 17/30] Fix mixed up documentation URLs (#5760) --- source/_docs/installation/hassbian.markdown | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/source/_docs/installation/hassbian.markdown b/source/_docs/installation/hassbian.markdown index 7ae3954bce1..9c12947cd46 100644 --- a/source/_docs/installation/hassbian.markdown +++ b/source/_docs/installation/hassbian.markdown @@ -14,8 +14,8 @@ Hassbian is our customized operating system for the Raspberry Pi Zero, 2,3 and 3 - [Install Hassbian](/docs/hassbian/installation/) - [Customize your installation](/docs/hassbian/customization/) - - [Pi specific integrations](/docs/hassbian/common-tasks/) - - [Learn how to perform common tasks](/docs/hassbian/integrations/) + - [Pi specific integrations](/docs/hassbian/integrations/) + - [Learn how to perform common tasks](/docs/hassbian/common-tasks/) ### {% linkable_title Activating the virtual environment %} From b0a1e16dfc8bfc88e6bdebeaf489d2efbe7dbc2d Mon Sep 17 00:00:00 2001 From: Pascal Vizeli Date: Wed, 11 Jul 2018 19:51:45 +0200 Subject: [PATCH 18/30] Release HassOS (#5747) * Release HassOS * Update 2018-07-11-hassio-images.markdown * Update 2018-07-11-hassio-images.markdown * Update 2018-07-11-hassio-images.markdown * Update index.markdown * Update index.markdown * Update index.markdown * Update installation.markdown * Update 2018-07-11-hassio-images.markdown * :pencil2: Initial review. * :pencil2: Blog post tweaks * :pencil2: Getting started index tweaks * :pencil2: Tweaks to Hassio index * :pencil2: Tweaks to Hassio installation guide * :pencil2: Processes review feedback * :pencil2: Updates title & description. * :pencil2: Processed review * Redundant information * Update 2018-07-11-hassio-images.markdown * Update 2018-07-11-hassio-images.markdown * Add files via upload * Delete blogpost.png * Create TEST.TXT * Add files via upload * Delete TEST.TXT --- .../_posts/2018-07-11-hassio-images.markdown | 64 ++++++++++++++++++ source/getting-started/index.markdown | 25 +++---- source/hassio/index.markdown | 16 ++--- source/hassio/installation.markdown | 45 ++++++------ .../blog/2018-07-hassio-images/blogpost.png | Bin 0 -> 42047 bytes 5 files changed, 102 insertions(+), 48 deletions(-) create mode 100644 source/_posts/2018-07-11-hassio-images.markdown create mode 100644 source/images/blog/2018-07-hassio-images/blogpost.png diff --git a/source/_posts/2018-07-11-hassio-images.markdown b/source/_posts/2018-07-11-hassio-images.markdown new file mode 100644 index 00000000000..3b33431cc92 --- /dev/null +++ b/source/_posts/2018-07-11-hassio-images.markdown @@ -0,0 +1,64 @@ +--- +layout: post +title: "New Hass.io images, based on HassOS" +description: "We have released HassOS, a brand new operating system for the purpose of running Hass.io" +date: 2018-07-11 00:00:00 +date_formatted: "April 22, 2018" +author: Pascal Vizeli +author_twitter: pvizeli +comments: true +categories: Announcements +og_image: /images/blog/2018-07-hassio-images/blogpost.png +--- + +After 4 months of hard work, we are happy to announce our new images for Hass.io, based on HassOS. HassOS is a brand new operating system that we have created specifically for the purpose of running Hass.io. And yes, this supports the Raspberry Pi 3 B+! + +## {% linkable_title What is new %} + +We have built HassOS on top of the [Buildroot] framework. The focus of the system is to be a very small and highly efficient operating system to run Docker like a hypervisor. It has just enough software installed, to run a supervisor. We have also focused on security, there are, for example, no default passwords and we use [AppArmor] to protect the applications and containers on HassOS. + +Key features: + +- Safe and secure updating with [Rauc] over USB or internet (OTA) +- Uses an LZ4 compressed root filesystem and parts of the memory +- Read-only root filesystem, designed to run on embedded systems +- Dbus connected hosts services +- Latest LT Linux kernel +- Latest Docker-ce version +- Fully supported NetworkManager +- Bluetooth support using Bluez +- Supports lot different hardware + +## {% linkable_title Migration %} + +The design of HassOS is different from ResinOS. Because of this, we can't provide an OTA update from the old ResinOS system to the new HassOS based system. + +You need to perform the following steps to upgrade: + +1. If you have installed the Bluetooth add-on, please remove it, since it is no longer required. +2. Make a Hass.io snapshot of your current system and download it to your computer. +3. Download the latest [Hass.io stable][installation] version. +4. Flash the downloaded Hass.io image with [Etcher] to your SD card. +5. Raspberry Pi: In case you have modified the `config.txt` (in the boot partition), you will also need to apply these changes to HassOS. Do **NOT** simply copy the file from your old setup into HassOS! Apply those changes manually! +6. If you use a custom network configuration or have configured SSH development access, you need to create a configuration [USB stick]. Copy the resin-sample into the `network` folder on a USB stick and insert it into your device. +7. Take the freshly flashed SD card with HassOS and place it into your device, and boot it by turning it on. +8. Copy the snapshot into the host with the SSH or Samba add-on. +9. Restore your snapshot via the Hass.io panel. +10. Done! + +## {% linkable_title Future %} + +HassOS is a wonderful base system and allows us to start working on integrating all kinds of amazing features into Hass.io (and bring them to the UI as well). For example, we are planning on bringing network and Bluetooth configuration possibilities into the UI. The goal is a full featured hub system that allows anybody to use Home Assistant. + +The Hass.io API is extensive, and we are going to adopt more of its features into Home Assistant as well. For example, sensors that allows you to monitor the system usage of an add-on or even Home Assistant itself. + +A big shout out to all people who donated money for us to buy hardware! Thank you! We have already started on making HassOS compatible with all kinds of hardware and are currently aiming to release support for new devices every 7-14 days and keeping this up until we support all major IoT boards. + +Feel free to jump into the project and help us to improve the documentation or other tasks that are going to help us moving forward. + +[Rauc]: Safe and Secure Updating +[Buildroot]: https://buildroot.org/ +[AppArmor]: https://gitlab.com/apparmor/apparmor/wikis/home/ +[USB stick]: https://github.com/home-assistant/hassos/blob/rel-1/Documentation/configuration.md#automatic +[installation]: https://www.home-assistant.io/hassio/installation/ +[Etcher]: https://etcher.io/ diff --git a/source/getting-started/index.markdown b/source/getting-started/index.markdown index f57416d0349..e376fa7e09e 100644 --- a/source/getting-started/index.markdown +++ b/source/getting-started/index.markdown @@ -11,7 +11,7 @@ footer: true The goal of this getting started guide is to install [Hass.io](/hassio/) on a Raspberry Pi 3. Hass.io is our own all in one solution that turns your Raspberry Pi into the ultimate home automation hub. -Follow this guide if you want to easily get started with Home Assistant, or if you have no or little Linux experience. For advanced users or if you have no Raspberry Pi at hand, check our [alternative installation methods](/docs/installation/). The [FAQ](/faq/#home-assistant-vs-hassio) explains more about the differences. +Follow this guide if you want to get started with Home Assistant easily, or if you have no or little Linux experience. For advanced users or if you have no Raspberry Pi at hand, check our [alternative installation methods](/docs/installation/). The [FAQ](/faq/#home-assistant-vs-hassio) explains more about the differences. Please remember to [secure your installation](/docs/configuration/securing/) once you've finished with the installation process. @@ -24,38 +24,35 @@ We will need a few things to get started with installing Home Assistant. Links b - [Raspberry Pi 3 model B](http://a.co/gEfMqL4) + [Power Supply](https://www.raspberrypi.org/help/faqs/#powerReqs) (at least 2.5A) - [Micro SD Card](http://a.co/gslOydD). Get one that is Class 10 as they are more reliable. Size 32 GB or bigger recommended. - SD Card reader. Part of most laptops, and also available as [standalone USB sticks](http://a.co/5FCyb0N) (the brand doesn't matter, just pick the cheapest) -- Ethernet cable (optional, Hass.io can work with WiFi too) - -
- Support for the Raspberry Pi 3 model B+ is available in the alternative installation method [Hassbian](/docs/hassbian/installation/). - - The recently released Raspberry Pi 3 model B+ is not yet supported by Hass.io. -
+- Ethernet cable (optional, Hass.io can work with WiFi as well) +- A USB-Stick (optional, allows for unattended configuration) ### {% linkable_title Software requirements %} -- Download [Hass.io image for Raspberry Pi 3][pi3] +- Download Hass.io image for Raspberry Pi 3 as [32bit][pi3-32] or [64bit][pi3-64] variant - Download [Etcher] to write the image to an SD card - Text Editor like [Visual Studio Code](https://code.visualstudio.com/) [Etcher]: https://etcher.io/ -[pi3]: https://github.com/home-assistant/hassio-build/releases/download/1.3/resinos-hassio-1.3-raspberrypi3.img.bz2 +[pi3-32]: https://github.com/home-assistant/hassos/releases/download/1.5/hassos_rpi3-1.5.img.gz +[pi3-64]: https://github.com/home-assistant/hassos/releases/download/1.5/hassos_rpi3-64-1.5.img.gz ### {% linkable_title Installing Hass.io %} 1. Put the SD card in your SD card reader. 1. Open Etcher, select the Hass.io image and flash it to the SD card. -1. WiFi setup only: open the file `system-connections/resin-sample` (from the `resin-boot` volume on the SD card) with a text editor. Change `ssid` to be your network name and `psk` to be your password. Note: When connecting to a 5 GHz-only network, make sure your device supports that. If you don't know what that means, then you probably have nothing to worry about. +1. WiFi setup only: Format a USB-Stick with name `CONFIG` and copy one of [the examples] to the file `network/hassos-wifi`. 1. Unmount the SD card and remove it from your SD card reader. 1. Insert the SD card into your Raspberry Pi 3. If you are going to use an Ethernet cable, connect that too. -1. Connect your Raspberry Pi to the power supply so it turns on. -1. The Raspberry Pi will now boot up, connect to the Internet and download the latest version of Home Assistant. This will take about 20 minutes. Do not expect anything but the Home Assistant logo on the HDMI display, or any use for a keyboard or mouse. +1. Connect your Raspberry Pi to the power supply, so it turns on. +1. The Raspberry Pi will now boot up, connect to the Internet and download the latest version of Home Assistant, which will take about 20 minutes. 1. Home Assistant will be available at [http://hassio.local:8123][local]. Shortly after the download has started, a simple preparation status page will be available at this URL. Point your browser there. The page refreshes automatically, and Home Assistant will be shown when the download is complete. [local]: http://hassio.local:8123 +[the examples]: https://github.com/home-assistant/hassos/blob/dev/Documentation/network.md-When you're done, remember to set up regular backups of your configuration. This will protect you from hardware failure and mistakes. On Hass.io you have snapshots, but you can back up to [GitHub](/docs/ecosystem/backup/backup_github/), [DropBox](/docs/ecosystem/backup/backup_dropbox/) and many other ways. All that matters is that you set them up and test them regularly. +When you're done, remember to set up regular backups of your configuration. These backups will protect you from hardware failure and mistakes. On Hass.io you have snapshots, but you can back up to [GitHub](/docs/ecosystem/backup/backup_github/), [DropBox](/docs/ecosystem/backup/backup_dropbox/) and many other ways. All that matters is that you set them up and test them regularly.
### [Next step: Configuring Home Assistant »](/getting-started/configuration/) diff --git a/source/hassio/index.markdown b/source/hassio/index.markdown index a5f4798c8dc..0773f3918e6 100644 --- a/source/hassio/index.markdown +++ b/source/hassio/index.markdown @@ -19,10 +19,10 @@ The advantages of using Hass.io: - Free and open source - Optimized for embedded devices like Raspberry Pi - 100% local home automation -- Easy installation and updates (powered by [ResinOS] and [Docker]) -- Management user interface integrated into Home Assistant -- Easily create and restore full backups of your whole configuration. -- Easily install many popular add-ons including [Google Assistant], encryption via [Let's Encrypt] and dynamic DNS via [Duck DNS].
[Browse available add-ons »][all]
+- Easy installation and updates (powered by [HassOS] and [Docker]) +- Management web interface integrated into Home Assistant +- Create and restore full backups of your whole configuration with ease +- Install many popular add-ons with a single click! For example [Google Assistant], encryption via [Let's Encrypt] and dynamic DNS via [Duck DNS].
[Browse available add-ons »][all]
- Active community that is helpful and sharing add-ons including AppDaemon, Homebridge and InfluxDB.
[Browse the forums »][forums]
[Join the Hass.io chat »][chat]
[Browse community add-on repositories »][comm-add-ons]
@@ -31,7 +31,7 @@ The advantages of using Hass.io: ### {% linkable_title Upgrading %} -Hass.io users can update Home Assistant via the 'Hass.io' page in the UI. However please note that Home Assistant updates take time to roll into the Hass.io builds. Therefore there is often a slight delay between the availability of a Home Assistant update and an update being available in Hass.io, be patient. When a Hass.io update is available, it will be shown as available on the ‘Hass.io' page in your UI. +Hass.io users can update Home Assistant via the 'Hass.io' page in the UI. However, please note that a Home Assistant updates take time to roll into the Hass.io builds. Therefore there is often a slight delay between the availability of a Home Assistant update and the update being available in Hass.io, so be patient. When a Hass.io update is available, it will be shown as a notification in the ‘Hass.io' page in the web interface.
@@ -51,13 +51,13 @@ Hass.io upgrade process from the SSH command line [comm-add-ons]: https://community.home-assistant.io/tags/hassio-repository [all]: /addons/ [chat]: https://discord.gg/K3UVxJd -[ResinOS]: https://resinos.io/ +[HassOS]: https://github.com/home-assistant/hassos [Docker]: https://www.docker.com/ [install]: /hassio/installation/ ## {% linkable_title hassio command %} -On the SSH command line you can use the `hassio` command to retrieve logs, check the details of connected hardware, and more. +On the SSH command line, you can use the `hassio` command to retrieve logs, check the details of connected hardware, and more. Home Assistant: @@ -92,7 +92,7 @@ You can get a better description of the CLI capabilities by typing `hassio help` ```bash NAME: - hassio - Commandline tool to allow interation with hass.io + hassio - Commandline tool to allow interaction with hass.io USAGE: hassio [global options] command [command options] [arguments...] diff --git a/source/hassio/installation.markdown b/source/hassio/installation.markdown index 3d62ece3620..4bbe870d5f9 100644 --- a/source/hassio/installation.markdown +++ b/source/hassio/installation.markdown @@ -1,7 +1,7 @@ --- layout: page title: "Installing Hass.io" -description: "Instructions on how-to install Hass.io." +description: "Instructions on how to install Hass.io." date: 2017-04-30 13:28 sidebar: true comments: false @@ -9,34 +9,24 @@ sharing: true footer: true --- -Hass.io images are available for all available Raspberry Pi and Intel NUC platforms. +Hass.io images are available for: -
- The recently released Raspberry Pi 3 model B+ is not yet supported. -
- -- Download the appropriate image for your Raspberry Pi / Intel NUC: +- Download the appropriate image for your IoT: - [Raspberry Pi / Zero][pi1] + - [Raspberry Pi / Zero][pi0-w] - [Raspberry Pi 2][pi2] - - [Raspberry Pi 3][pi3] - - [Intel NUC][nuc] + - [Raspberry Pi 3 32bit][pi3-32] + - [Raspberry Pi 3 63bit][pi3-64] +- As [Virtual Appliance]: + - [VMDK][vmdk]-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. +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 were only designed to provide just enough power to the device it was designed for by the manufacturer.
- Flash the downloaded image to an SD card using [Etcher]. -- There is an [issue in the Etcher flashing process on Mac OS High Sierra](https://github.com/resin-io/etcher/issues/1908). - There is an easy workaround, just uncompress the image first. - - ```bash - $ bunzip2 -c resinos-hassio-1.3-raspberrypi3.img.bz2 > image.img - ``` -
- -- Optional - Setup the WiFi or static IP: On the SD-card, edit the `system-connections/resin-sample` file and follow the [ResinOS howto][resinos-network]. +- Optional - Setup the WiFi or static IP: On the SD-card, create the `network/my-network` file and follow the [HassOS howto][hassos-network]. - Insert SD card to Raspberry Pi and turn it on. On first boot, it downloads the latest version of Home Assistant which takes ~20 minutes (slower/faster depending on the platform).@@ -45,7 +35,7 @@ Please remember to ensure you're using an [appropriate power supply](https://www - Enable either the [Samba add-on][samba] or the [SSH add-on][ssh] to manage your configuration in `/config/` (From the UI choose **Hass.io** which is located in the sidebar).
-If your router doesn't support mDNS then you'll have to use the IP address of your Pi, instead of `hassio.local`, for example `http://192.168.0.9:8123`. You should be able to find the IP address of your Pi from the admin interface of your router. +If your router doesn't support mDNS, then you'll have to use the IP address of your Pi instead of `hassio.local`. For example, `http://192.168.0.9:8123`. You should be able to find the IP address of your Pi from the admin interface of your router.
@@ -82,11 +72,14 @@ When you use this installation method, the core SSH add-on may not function corr A detailed guide about running Hass.io as a virtual machine is available in the [blog](/blog/2017/11/29/hassio-virtual-machine/). [Etcher]: https://etcher.io/ -[resinos-network]: https://docs.resin.io/deployment/network/2.0.0/ -[pi1]: https://github.com/home-assistant/hassio-build/releases/download/1.3/resinos-hassio-1.3-raspberrypi.img.bz2 -[pi2]: https://github.com/home-assistant/hassio-build/releases/download/1.3/resinos-hassio-1.3-raspberrypi2.img.bz2 -[pi3]: https://github.com/home-assistant/hassio-build/releases/download/1.3/resinos-hassio-1.3-raspberrypi3.img.bz2 -[nuc]: https://github.com/home-assistant/hassio-build/releases/download/1.3/resinos-hassio-1.3-intel-nuc.img.bz2 +[Virtual Appliance]: https://github.com/home-assistant/hassos/blob/dev/Documentation/boards/ova.md +[hassos-network]: https://github.com/home-assistant/hassos/blob/dev/Documentation/network.md +[pi0-w]: https://github.com/home-assistant/hassos/releases/download/1.5/hassos_rpi0-w-1.5.img.gz +[pi1]: https://github.com/home-assistant/hassos/releases/download/1.5/hassos_rpi-1.5.img.gz +[pi2]: https://github.com/home-assistant/hassos/releases/download/1.5/hassos_rpi2-1.5.img.gz +[pi3-32]: https://github.com/home-assistant/hassos/releases/download/1.5/hassos_rpi3-1.5.img.gz +[pi3-64]: https://github.com/home-assistant/hassos/releases/download/1.5/hassos_rpi3-1.5.img.gz +[vmdk]: https://github.com/home-assistant/hassos/releases/download/1.5/hassos_ova-1.5.vmdk [linux]: https://github.com/home-assistant/hassio-build/tree/master/install#install-hassio [local]: http://hassio.local:8123 [samba]: /addons/samba/ diff --git a/source/images/blog/2018-07-hassio-images/blogpost.png b/source/images/blog/2018-07-hassio-images/blogpost.png new file mode 100644 index 0000000000000000000000000000000000000000..443fb8a540b6d7572ef2a63e4177cd5224b842ac GIT binary patch literal 42047 zcmeFY^
23Pk1Ox=6a zMdg)`9`JS3L_tOh_y#^lZ|eepFA^tNZ5IN9JCv6{gaoPSw7?&UUFDSC5zk$xrsQFd zTu~$@Ab3n5C-qvxb7Bqa70F`lJ$*2JA}uwQqKP@cg0#?O6@T=3M-|jct;sguew7{i z?n#n+5%cu-bvfN9+(S2C%f`IEM`5m8{+N*OMz|37?+}(jKCQ}^5c#?A;SZsD>mS_v zGjJyxE8X2<{B!t6strS8>9~SI-|608y_>{V4=e`K;71lxX6?M0OJ04#r|zR9mrEcZ z;Na+?_;>g9*DYYRm!J1m*CGGzI0UY7|GRrYPe}dm?lzR*&cC~0>A)LTcY$x1QP-~S zUVXc7M0j=g_4ogE_kVl$e}Zzk1OKNL|7TJDf6Zrv_QwND7R-}^SXxcy0yC&QI6Tr! z>D+^lT`66lE8BQ+I8C-;xIirSp~9^zm3l6C4dKE2C3b`|3mP{p9~tSjHys_BAgjhA zXr5ipLT9eLqL_WcoL9%3mmu)ZTpJnQDs>-b##yy5zZ&=S61U9;$Auc@*-ED|=jp!9 z>;GJJ>E;Ls#v)+kr7N+ng%%jamNSM9S>kT5mm^FHS|=&B*R`*j5Y&~I6M{{$hXezt zwCZ45=Gs^WQT-JWB`comR}DO~VRuV~ t>X)TL}dU*7xY9;VRp zHz3l3 C8IoENHY z+&sW}DGiLVa?WrOjLWdoi8cN=p}&cuC{ZopLY|p~66thFkAH)3Z{It}qRJv#XeSLK zON3Ul55oUb$NF*T7Tjmhd{SVRQ!ZF8&Brzk=W{#CbY2vY&GBCuR?2bin7HcoxuXJ| z5e(^CSbIpNXlWz8UN-dQo;ezkT_rWaL5GAze%F6Qw#emArfzM!=IZ!&IHk1sYT({h zwVRNo6|e<~=oX^Ou*Y_i1yZLOmTgLv^@(+UftEvNF!tB7Y`ay0+~~2gN2u~}`@aFj z6ljbXx# Scv%aiDu z*ddja)U248_ RwEzQRc46L{#H?g6u72`5khJJ;2VJ!J)AnXA?K^x6Uxb}z0&r0_vOs##^hE?Ef zVsB$8m^Dqaz;?s8X!#fmAok^~8QJxN8+O>`_pjYk^tkB!xL $PC`X=<>jlQxWK@pgp#H&-;z{kjxzeL@{TvNr=47jdb%`79C;unKQ ziI~2ip#>)9sjD5@vbLt*cvBhc#y&_>!>5mH3h>02s sJ7`e()8tVq{%)GEBh* zssYyntC8W7jvmFaU&%EpFXvWiWHu>!R@sNUVWMB)kIX&% (Opn@iNEIYpeDTKQysyVk>+pQOBuVLM(;h>?xNi3w 3mOgNn<=UrtkgZ(%yYH_!Xk>LVg)f>pmVSFB_=(CelyhJXw8>1B z)oT9cUzm|w^?)!Dog$l5t1KaW!eBm#Z*00=#8fgu=>6TMvKobqw_KI3lD*nYquUDi zjWj`;tfcC=jb9gJAB01d3-Usd$oDtEJl#ZycL$KxaM6GL?xUZz-q{iy6O-~}UDz!Z z0)gDE-&q*ZEi|L~@&UQwy#G(PPO7#@Ue9e){ULu~BsWM+IFj+OfL1dpAHQMMj_CEd zl7&FWI{^xeKE5|3Jns6|WOQ~K>_2;Bo0#RcW!&*T_$ru0`SbV&E)>aHCdfUT*?s8s z@UCN`II)P1P Ba4oqvr9%jZOJX zL*8TRFs@IRdX!?miU*I4(ujO^kbbpx)CP}#;KI{8xAeD7m1Ye-{D(|xX`m4%Ru(4S z@GG4ClN3;Gf|J4vTTcg?3A8ohZ}M{aayO^%mhsoBF+blj3H#skk*jV7y}a0_ZV0 z@p9R!Vs?#aN=Thv&Ayb4qot^xkf=JpfvylUGm>?1@k<2x)!21aTa;dGOhkFosFx+N zhjOp^YU-&Vv9UTCMHw5>=?3 )(bR)$nfy%?44l{<#vOv4~*uQeQHeY1x(= zcN&>|ezak<8e5Byu|o`u!kRO}vN>8c{5eeOtyQ1@1?PbckZ{mINI_<&2(8sYoeqoR zZo*C64w=dh-C86+?#(D#2d|EM(`op@O37dGYHor0QwqGT5zF2y%$3rj2HTlN@WLbA z#VIo{@(%Ac$MxxzV`S KRX;eI@!xN{#8cc%6ltT{M3gqN}Jl!|K>@qAqKJafZoDr&yIO zc&&U-(2?iAf7r!nG|_?r4eb5EW1=xASrXKNEPVs|=Ol!gii?qhff4z6yvr$0?m$Mt z_c6U>gphozgo+`|U*O)AIF|Y-P#Te{74Rq0hh20&lNn5@9Z0EFm4w|aIN2fd2#YN& zBblOb_o%F2|0H1^^k~}4o02x@pTuwQU<|BAiBmFe|4Gw?X4?o%?lp_xqyv7=a~YOA zbG6JUndyp^z8dCz^2u2Wa0m^oe{wcQep}c74GJxJmG>anFQd_2A^qMz@KtK7AS{2Z z#;aR68ZV0T4mcW$a$a=wXksx6(qrD=o%tWUTbmlZ0fC3PI{pyHp%yZ9!%9t;UwG*8 z1}gx*yD_9M{(rscy3-jB=VT0-k=!n;?i_^A+FWO3j@}%Nl}{!pg8iB-J@@Cl+W1lh zz}+dOyMC)1BN<_df96^a6S)UJ?c*&1oJ7~=E`OY|<{A7M=>MIoU>$-N0ZJ_9*;>mN z78@TVcL=B{?lkDC5G)!q{cj|!P_=J90}c=S->Ht9`#ZPZupja+ny+m5NZ483Nx)S- zc$5pn-!nn74{jGW3E0IP+oxRFYNK(WxpAJ2#camGLdFnwz@|D0`{=~4UWXfmNiL>X zHR@XK%AFp{2IczQyBq*enF)ebPYj24sg_5 }b{c>>`GE;Uv==F}!;k!bSdDRCByebf#k?c2{X zwyarIajGlX{bSZKas@pew2BCgXlSA8*rsA}`P< zjLL(^Z$n`=KMtPri5ZVX8cwprJ5c`bKrMkF0gj{z*wXZPqQ7RbqUwgvaJZWe= vQ6$ry?uy)Wt*sU(8R3X`AeSw 7cG^!Tm0;COu(#OxWI!cn zy-eL_tx~XmNz~Xe{nCnN=vLgh(Agk^PiSDT%wMVFrMp77R#FrnuPCf5#%6yodywWE zDxM{7=B!LFW}PlVIwW5IeXt|iAhm`fBmbEL*DOc;GyIq5SI;MR07l318ks}WKtMj; z@y)##wm{TWC9A{BWAFtgg2S&XJ`E+kT7|my;W+{vcR^wtCpSu45AvX?RX)4%r)>KT zyY8>0t2VC&xLpIyS>Of1J|tSl%5+DVKjzBbNVs+BE92jjjCm)$4Og3oiU=kv1so4& zkbA+ZQnuLJ!J_Z9VmR2oiH3mwvRN(v+}PFZP)Wh0r6yTlTN`-swCx50@$h>^`C`X8 zV*Di=P|tsxyJc-mgoxM7;&|_0CGufK@#V{K4!1$u$rJ}_J0WdJn88$c<-5tpS4)`U zF$)CDNGt3)4(2krz_f1o&g19Oo{rd1K0)w@l=#L Nx(^cEo+-8APADm9`L0nQC zAIV2DWDWnM1_&k!sy&@MyK3=xtl{80Xcj7E!)DCnlOQL2tYOF#XP0NPv3tOe%`lCr zN~E2-d)4%sc0NImtf)TuK|;wMpQ>+Faz~1*GyAXF5fA!)&zcr+ug_JxR~&cTCjAg5 z8n+V+-PlYHey~38&$ji;11@Q9B)c@UE&u+ZtRtH=1?JxapG%)#!i{;1lf6z-?XUq) zTEEnaV*0R0d0b(cMw#@2ED%j=g8Gr=(l%`-2lD@B14$-W)#&?mv%6&DF5LSmaVuXB ziyOO|N1nV*vV64QDbsso+utC%tHxV4|5+Gem~loTir#=g*hK#}##9nrSK_((ljyR+ zy|y?1lOSL%@rKBBXEsuCEv%r)jUtMFb^u1z7`$cFmCv-SO{R`p4BWHPtm;&T{c@Ze zj?6*6ux0otsMaNK&c! `T)y-px@bJ3+#R$;$KUi7_?s0N=6%Sk}G4T~mo)?2ZP-D+v&(VNQp z?qQcp2n^O3BPcS 0?YUmw;;dBT22y57;r|4GVR4{dLM`k4MSgb7JHnqu7ik zbcrq;k&?1G1%d7aoakY>JHS`ozI5)kc92^x(?;Ts4f-i-Q%lrFf1qO~p?tguB-$*& zvEQlEWbs^&3 -it<5kI$Se%G=h{=KvE`bdBD<94 zzR3UcQU(a3!O4?d;hMjzzxRN2h_|PX3k0_H(nqtet@g-^&1#lE&QXF&iB6Z!F CVAD5X|?aZHvxd~;Zm>5NkGh9$N`KqROO^HFOLQsK?|{!%C+9+ za4oUZml{H%?+w-jUup^#N~J%#Z2sI4Xdb1}f_=QtHVD6uqmmfohz}{4?zCgk8E0Il zV1^e1;kG3J@8Moo$Od?zp(#qKao320#^-Kh%SP}Rw6yGd-TjP$&`DL-5t}mCABvx^ z0;64lQ9y%v{wQrUd{g&mVTi=uxo?D=dx-Gnwogc0b<51B*XHBCoJDfl&l?a7M`kSL zN5JAqAU} HudY~oNI)n7(kF#Txwc^3!eGa!BgDNfP z4tQKsHM(`3;}`&gZXHJ(v2eM@Nh>Rv?hx&N^Jd=`KOcaq{TP3hrC9qKPqkkFaxe5z zPS*hfs7m@(50)83{(70K<#MH nCscbmb?OL$< z_u5~@yDpb7D)1=T>&8e~q3YB3{unwSAfM7ubiS*!Lub=rsvJuU=`pNwdAu#T?CbK^ z_1pY@y?0HB@_N`%JZVvQrwu|nuI95c#}$YQOi8uA0jBW0x0AzErIj2NU%Bo@2JVul zsynr WVo#UCbCoAlqmTzPU;$_)q}B6`otUvVXy3*_xRBa 1nXQ$cBr +`$z=K zD3bFaSIOB f+udDC|vMV(8#OA-X>uWcZ;lnDsUiw3vy3ApecQ1F R2Qg{TqQ6&hSaku@Zk)fYR|cd0)?japgUjw<+Z&XF&>8Q6Cc zHqaeXI-M|8t`|0*jUV@j@`^tV7pxdh)SKVD0=&H%TerC>m!&sHP}VWe7QZ{P3>Ku4 zipq2*`;K-JnP=@oYA1Szl|*I^Onl}vq9R8RvhORb-?;ODYyY(o?BXunRCdr1$nc2v z=qga{1^*`ClA`MQl=i#mtlf6H;FA8s8&vJQ)(IQdsi@_5t^Jc# @WYAg~jW*|NbSTlD8XdmIJ E+ID8B)kyhLNR*ljTZ(52=F0IIs&*<)C`;5BWzvt=|B&Fi$ zX8E;iJf*Q2R)=XWg81FC!FZ)22ERNmzm1khtZr(KPfCK6dHSQnyoeuTWOXJ<5UI{T zz|&_4G*%VWd7wcm|1TF-K_!8@{d_YI#@#_?M8yTd+!b53X^PT>+LR42z!m9)=QjgR zqu@4W)2?|bvT0f4jZtm#w%cMZh`Em;sQ=LGHY|=MJ}q)rK8l}89Ccf@T@4zp+P?D| zy`7S%sWD?Lf&`pErMG?Bz16eIPUX%*|LL|Wmg)caSZt@P@8~H+at@dvJOsOovb_m~ z9&U-C5$KRBDSxicpW s~|VFI2V82wKtk{n0a_LYAipN zdn5Hx34O!(cAZ37ESb;kQa*N4{{E}@H#rAT;|NH5`J*schV?UPPy8!TVn#kg!_ 8B3E;@LzT$0ac$mR%B9eloTbKA$~M@>~! (d}5r(DK;9}Aa6G{aV#%3B;YmhEpA}EcKW~};vbP>;b2kI_O8H$ zB!}vRkpjdUjX^g4fKhqBI!E9Kefd9H-K6>q<8X}DSBRu9tFLO{`Tl_gRAYe$vrmpX z C z4c}uF{J*6uui4w$dkvutF6*7x?*7onED8| TyJLqVp@3Oh;P|uq_=*z&91Ttb{$7)N_pS~_JUU88D9;95VsDxL zA30-PBiAjGl6?oHStU5`;J`!}2quY?ud>R?5h+t|YKZO 3K3sv7+f34@@A$JzTr=vd*9ZGj6pOu}$==CrGSvcD>!-h8b zDvs%t;*`%megG3olN^kv>fGeJyV5y@eKeqUmD$)87$R7GO%;LmQtf+5?zVWp;vqL( z34a4qve{r&;}HDYkPr1)_Tb1E?if{Iwu>EkbDfL0TRO=*ijl;_4u~jNma=<5%2${z zIWI+JwyUW0^aUGv+2X8GS3q)^$cN(=aIWqqjX^^XNBq==D8T%Fto(sYx@E^S##C{$ zXjy*RTK0tF(wOvOdWjIovJ3eTuij?)$l M2Vj?2U15Agaza5)3eVUByQ*5tTaeMTBl;T8BZnzAsct7No^If*3ZF7YDk z+qjDzwwI@5Zy4#{TT8`{ P;T`v9oEteD~s_)@BuuHSn z5aPYIdDMjIst3QstKmjaxG#BMbC?+1lK(!FTS1IH ^KZ@|KIKAr85t)nZBKoF|YA&Wl}drl7RFJX1?8@G$p>;Bc#|73crb4 z>pu||Q)Vw546`YFgHTN*wj*-CqNxJkq)s9|ft-k X1ZKsV)OyK zvRCVT0x?P2hFmvS3ALL{!^U4YXVHdPBi dd2k}bsr&7qIlOk} z09`Grk%1-@>dx-LDyCK51@z%T{~g|a$aMlkV+TU8N8a(TC5z7$sh<{BpN4L@XMb(W zjDsCOiGAg 0KaWj{JCkmhDA zqD2zZ??`lKrxE3ey`8vmc@{ 6KiaN9er9&Lktv{jPWYq` z5 `NZ9X O2CNO+XuRg&z73IxL>l{s{r17jj|Eoc@`lPryslz`paljPMgwArx>pK zs`H#u0iqxSkN@}q+QaMKz3!Jij;VgVQlffYTphmCfsP4(?K|r=N!6Y(!wZA$8P}AU zZ0@ArYg@bFg1GF#$c 7uHFqUr}H5)M!>Z-b6PHke|uj6KCQO9l5orqnpcm-eVDb$~ykFmRt!HjwHE^m)AN z^zJS|*oW$XW%ePjflykVG>cO6qU2~J{4z0`qVpqu<^wuxj_Y#I2=*7bRubsT_D)kV z0R2`QKMo4J2e2%J;IXZR{omGEe}x73*fNdXvQ1oVXDUTLY)-a}e#v>8p?mYu2plm* z_F0D0e<>7%;MZ<=b&sIbgLU5ZyA8k@xc#tm{Sg;1B5ayv!7UhfYB^5d4wjF6FnL;& zA<(0H!7e6QN11oYl|HeLhHpUA0m9Z{j~`3>Qh!q{hmZT1iBUGYlR f{~kn zk%JD#oD~P_7P^Rg;WEhKv(;I^AG-nFncfzXQLeeEoaB@8>_D%vAbR%92pWVf`{0dm za4olRE4Kk= fZ9sRsW^z{d0 znO2n%ic{VD7VJZ3bfla8dJ-J KoVCEazdvy `QU`!5wmi1# zr08Z8Qp10_i97%`{U|Tx(i;zS?RB{4qNi2dzO|B`YdI;a)F31pjqw9eSrs9~NKair zz!Nz+7L3RFNq#o_)Y2x|kfN5ia*2cG@gO)?YocIECzwHggm#RID~}wh?T4ww$c!-i zS@jjtZ*J&?AvJtPu@^Gac#q?F#ejNP0JX0_|4`3*qzh4dtz|&T#Q-gkY{oE5R@^C@ zpv((ds&1+pTUMS4Phud-tH77CyNP(;i|gB%d(oX;$3+cf)l!UFFE+{GwOru7n*^RR z{O;bh)_9Gf6<>Y;bY#uL&WJS|Sz O2l%juq;j?T6Xe;W5O>#$zKU%0CPi-rE+17n>bYB_7Kx&8MIb!$$xD8l6a) z;J0G`Loc?8;YCW-^4~tG-@FTt(%R))H2;9ytdvj6*U2_QCa1&~@BNq|LUD>{!X#?% z C1Zd@44O&$Z(FM3m61K)2#n2U>G8lOA9SsQzd>?VGj zIEdxq9^Hqpc6dKaMB}F7_ZqQ+^UWU0vqe0KrgrkY*EV5>m5!e^*U)3919gulIm!lH zMiwuKd*lG}Wlze~ivr=FO6*ef*Y%QLIN6l!yh~8(>%YFrDGJe!n!cmMTC^!*j|b&Z zo^7m$`5(1dJ^h3ruZr}avHM;kVzp#Ib?|ybe)D?dnOtswhwxBdvC7`&M$U&DjX)Jo z5O(V8QZt4;L&-H;C*5U1k9ja)*Dm{!D9x(YbjGs!b?xMyqiw?PaQBv^n(~>tJV3EW zKxFTtks8nz@+Z>| UPg&e1fH3w@7&J^~iauPmCD-vg z1{XG+9eY}svb_=2g!!Kq#7TH@82nl?gd!Wy^D(23pl&`fI77Y6 Tg)g#gP#}s7G`foO)O0iJzRUkIEdc zr$rp)Xqlv+M|4v9Z5BY}Djx>T&xT{jCBcISnPGTd$J}E{-YB=9XnNjVdQ-1Tlf2BA zhJ(UPy6NFxD63?f4$BJtcPAhLOZZstrx-|b^X7kbXAyv-f}#x5D~a~Bk*pOWvC=87 zWp!h!?<8T*O2!bmF}poLvT_k1@3`SraTv6J{`ZUXpHgAkh-pS;t(>M443*!-_~77m zE^>t@MUIlO%Sn>j#?T~BXqkB9{#T6TshQiimZDI xP{f*oj$ z`1j-Zj*O;Xwrv%Yb( XLxWC6(vEbx53NA<)rgZ z;UhGE8&?^kAZJ(=jXh6(o#O)w1D9NgsnNmtpA^{ud}~gNomHt}C?~jSYoNUG#H=kX zymS=XaJpcFf=@7Q=?9xbH8PER{AvS9Vq7k>KOtO+HR;8vMm(7{#Lo`b1PKVjXMR@6 z1}x2+GjdX$c%A3vJvm!*Va1rdAs(SkE`cattXG7cx5O{xki0Rq#mB28;p3MmwL|hB z$AB_<*bCXL-l>bd>d~~7w*Q=iq5}Q*k{z(GV4DqCLTD=Swcs*9&-Z^?5fOkpw{@}& z53RJJ`N^39lE)ClBT2(tlMun1i^XQ?{n89fpVH8~?kCl$1P^f;-FkfbP;@mTxYfG@nyb+{4O z2btjDQT7(>&ej6#SUg5-nH;8AT0Qu>Fc|*nCIPB4!!R136-|>@II~Kwdo~tN;&|8g z?t__*N!*fz-UvHc2iLau#XNJ_dACbW{Q~ipnW3c$b1bLOqgtjnmtgBO 1qq zS<%nAJ7>}qhg8npzHOj@$d0dadOg2j&~b2=AP}~HW@&OZ37DoIplOvhN-7+$r0(sJ zLHCNx6=>8@yF+eGT}ts@x@f%bO$*04fnV9>FwR(2o^H!7CL{!opo1fH;0Suqc%=>( zk3$cm?cKF0w7BjdU;s*nZO=PQ!$c`@0p3vL_-tn*`YS$e0Qw5X1{9mAqARj>!UoP> zh4syrtGW>i>3Kd+!!6#{x&_atXASZX9jE^Zv+Hal=I{1ssAMBog?0)1%JN&!NiCDi z_}P>3>*LI8Cp>_}udC^dYrtP1o~f0L3rQKWvZPsRTg+nW9?5?w2a^@msJ^Ut0n!7& zZ&g9>@5Y$ho^Ky%7iD@?XFobS3*zg`6UBDpnoi!gpFH2@wa+>3g@;MFTpAMc+MOlC zeX??oMk&9FG&v7e>pUz<1de0?HBsYQSHX|4UtF`xX^rn(uG%9r@?(E}cex^sk8 5DO6j}^z=^Jlu+c529Aa(uBuq%4l>vz64ooIZ&91oec_B#qk#fO?8 z`#q9~Zr-`@Wd_1xswOulfF>_k5-^xul^*Z*d462l12Vbw_diYk#Fa8tW}!l #1U n*A zw73bx6octrcl8k0B;{FyFuQl5@m`)vhxe@PUwnfxG@_{kLe@8iTgu=qdT=CGJ;*)e zIIW21a)dq-b VFJ{Znd(dRV3Z%q0 z_w5V6 DZrZh1<+*buJuWS({dgEU?jNyFWEo$e%W?ulne(t%gL=VfuFX}(yr!cS z$i?a^v)^tRB;eQ#!Jf8TLTds97f0K9@}euwBfU$)?8mw#QLbe)8zP1{g@E;ivh(N& z)3Z^)y8o%oTnZ?s#_@`)4o;geQRhC_4AhJO3R!0tfuzJSS!rd2+9{T+duG2^4jWbp za-N`HXy`wb&m(HoO7giZZjcXCG r4HQrd(5%o&H{Ss^|qd!vR-s|Op|$0?Qy2Anq=@ty!h$Mr&a+Rdbv;(X)fkl}IG zHv{amevEqz-C0MKMw2rShMgR8_WLIUU4pix6##U-UuFba^HZx;VCcf#7-3i^kTP!B z8C<+a$xFKT*3$Is$R*5#Jd LYvV6Ml@Q$lsZr4Hj|>MCb0%(nCZQ z3whhe)ABSqKwDYCg^;YVMd4oZ#3wFdF3-w+X{ZYkOzX0!|4z;{YWe?OtCuH(MJkV4 zPK!R=ysiyo6C6GGKH7Xmm2(f#)a+14t4ya_o%DRem{cm&dvXmm47|UX*Mezge0X&b zI*N!&$kA;b7e6SGq)^hNOE6FI--u|x4W3#**fc*r^I`V0^Fv5pK)y%Y^$M98Lxaev zyKs4#&wRWP`y4~)^AqF7iq*)bLnpptOhkbJfKQH=dJ0v>Eo_k(6-o8MXg_!VG+(1K zCAaH|2ole7*~tuIFso2zupkdJ&Xq^+9U7 pwAcsBm z5znv@+K5ebMwnZ!#97rQSaL|k*C8fU%VlpccSxl{;CI99-hqUQ5VPOr(>KOzyBT&9 z47D*6l-9_<2QNk`vR;c~Z_LQHdy=$FDL6jC(y0#2_jCom-4~X5Hg@;r0|lPA3>zIP z>*`e?{|OTEu86m8VKv3oAHIRUL!Cyq>ZVAzyCF8kMfAIlWQ3ob&G*bYo-1_Vibf6s zzHKP+opnz#TQ?V8^IrlW;~% 15cwT)j^IwviqnNdOy E=Oxz+)a2XpiUhD QjS>+QHe)7 zAYX5l25}NJWC_T|RTfRiSY1Is;y2HaPXd|53kM;Nwd{U{)WzSIrhXSFyo(mLyjJaH z@TjzPo^y;tPDKc57Zfo1Y+T%^sMMGukN_~37w9USzlb#(I9j;HP&U(E>EP#uj|a76 z!jG}|^Epf6<4zhG`HDzE1C(Hg2^U@7rWnW%kCF6r5kIJIKG^-KlxNuR@=R& 9aEC~;sX=jS7Daxm6O^5;))?tz$)DHH} zm1Ct2e149Dbqx!zsPxZxdsj zNpn(D-1F8^FbtSs?f+jDu(#2Iv19f3ai8Qad$UnCrvM+e^#S85x=QGrj2de zPxfNYdKwe~3#V2j13>3?`A;TkS`qIeDF|l9v9Wv7mbK)KrkJhKVQa~gam{4Go4I&6 zd+r^x4(r^e?QW~ZI?@eIwk$(m^Zc#^Lx 7+qRRU4)xEG^s#e$pnxt*A^VsUX=J)mjdZJRu`OK8-bmgPW=Kca(^{6l- z0Rr2*it}N$dr~g7X))735?78tKG@e^lWTG_two3A>Bjb#JCg1j6^g+J?smWL(3ZH< zlPCQh)K~c;PI;6_YtM<>J2ttriN$bZN13OtlcD|LSfehGHw1sXdneG)QF;7WFk)5B zzMHos^})5$4%CB2{Gls`tN}o=dm|=(>gPQ)9rViDm>v7d`zGYMwMq=VR%E7PD2LBJ zM+6}73(gz0-_|2@lmIywp>z6m4padoDOn~?%$AdYtwj{_Y(l l7zHWvg0*$d|y*`6pe`-ksvviV6 zb+3H)>nNq?qu|Y{$z5CbmDzPbSL^cYIT)ES@RA;-T{G2^MK z54Rdi7>y`Hus0!jg%&F7AwJHQ%fngUJJVvC9_X*~n+1#qi;pgSyT4R%LVyZwP7pgt zuq l*G@ zOX$hBKK7;i?lYORESyA9)1py!vJf>uScO^>B~SkZX)ljnh}E#E7e8vMF!88od>Y#| z=?HM8nA`VQdb6Ngip$|l5={+^ZT}UOJaeNfZ(39Cbz1gXWD(ACX?my{d;=B#w8pih zZProQL1}!^v(yCNkVnVXOHbr8^d-GtIIm9He{tWWX5n-Lj?1{<=PA-@>wDquvAL kQ#Uj z6aX3x=W@W;P?>^rNjpLV=&bla|F?a6w8o+I9hA+FwQuETp=ef79Sa_903HK`($n&j z3%^x0VGO3(q@=k$!__T({AF3y@h?&P&tvUn6e~fxVSA^wm#=yNIlqJ~N+6hp-I1^y z{!0Z3*a_2)-<+fB&M}bQt}NMVmhU72qxH;woe$m-JPh#R*55GS6kB@ca^!~OcLwkd zP&oo*B6jq%e=F{czzIY72o}W5fx^VqoYRA^7Iwh 0S>ATTUvhL30#dZ1 zTm1@_hE^ws443J{Fw>_HZONm-_a0-csQ~jfoAQ)6=3-#+!)e^UOj?Ta$oGPg?dhon z8nC#|mZ1z#6$ccj74N|}6jj~V5~kOV>{PhN4;stF3|`1zqvEOT9HgcKO#w*Xx{iKo z6d9D}y+|C+D}~1ZmCb!1u=W(A2vBSY)HK!@J0?UHtK&(yt7Mgld!$1>&L46zFcw1? zITl6(i34=X%+^1EEzVC){3R-*N1vRbAMvg(HN6}xn$#21Hk}z@a#ZwC^84BF@LONc zy5h9g2mjSCnCJ1ELnd7CBA^JK_Of1h&81^ >?flbu4-LTMPP?P33v~U8Vw|tz&mbDfZG G(GROoVolcZvZ=N5ciolPXGoSh@AJ@|_ VKp#8d*jE=}kvvpem0{ALQ zy0luN3{Flbn2e#%CuccJV)vT HK6SF@r`csP0or(59v_l4xNV%x}yq?jq*zLWW^0}}>#EfO9_#EUKV;vt#Blcr|} z9ha#7BQ~)AcYCpVKwLpB+KaZcFxDnkJ^DFA^zonMPRUwTJ{^^v@IVH?npMWjlE1FM zZqkao-$WpN5Q8EnCh2$4hM_>M&?}kE$1n$SuM+U6%ihQDy zl Vzm;PtNmrr$S_c5P5Tjvxmgu(QPd+II^&$h7 z8`)ew@$K|P ?Gy^(YRo~5Df^migH$L!`!jc$^S5u4GqSs0hy zqOZ!Hs 8!YLip_WU+; 9>YRN{_zb`Yqkr@$kOmTJ3+OYE=jSIX5JU z|H?4AJI=0NSp0K!`NQa%r<2qBJp& 8>a_wN``r_N5s^T{XWX$f!d&z>ndk(Es`7akMoXGIw1E#|% zaYykJWP*NB>N*X!j}M#|;UuH>Ul_OkUoAjr=c6!*aND=g_VVW+j%~txOulPuf9@Df zcikqn)D!Q>YK0!RD@aW7vm@P0yrSCTD=1X@J09f_8|xW)mE~-isL$pkwg_fkPPASu zwzSM7E2#uD=iO4jM0ta{0Ef(3eE&D~jyNA{nb`2yvh|;0Rg^T@h~n$7R@)WxI!Vpz zxev_sQfl_~@DQu?2dtkme=7Yoz=jW^8Xa?2D>)1wC9!>XZrryz#hcSi*RQ=mcgNk) zpNZGKFY)7LEuQBmg=1!{=SlDC#YV^bSy**Tk$vzka4`lW( t%?crz;jY(`om4PnsuM- iNfkkLvAnoNGt)$QYW`r#;j%#3lQJ zHxYu${SleX=s)%m`aZd}%0E@u=y^$? ?aW3J!H9_7x?B^6nn$su P=13? jbXslVBnM(b1VKV-9QtPnS;j@ZENP##!!d5Y!+gj=^ zyQM0>+#_;k-eqNnqk?YNj)bSXtU=@7Q5J?-kH*CWe}Bejgv^~}-tTXgE#T3jEtiZ{ z#AX&R2 Ux`P%rZ(~oVh(HhDGWV2 zT4Bnc4R!Bq7a;E$hl_^%=nyElO%feW20J3^?&wlEB&_4`LJu(R8wg)y$`a9t-R^r# z_Fk9s&T3l4{D;rj$BvY>-x}1r*al3rAw8SpyKWneM_;qTDpSbsveI2V(Dm>g|K0v* zi#5!OWut&VayyDbIbpCNY%}=wNn?jUfq) xcUu$r?j}2Ml=6&L6_mWV<`iC>q_8|o%>`U}REb %pj%>!_S!Z=MQkk9_CW(U v#0#?k zla$`X!rFZu6hlTzW^1JIlM^r}>H^ zU~Y;`3f<&3iZyr04uWQM^z-lqCPcL&OGpJ1xmqSjoV-4m<`0<5L^t;ZHfWV0gF+<# ztCCjfz((vC-Ju}-qH&5uXZt_o_d>PUz5Z%C%OybK!tO{0X?{{($Svr97&bsvlAt!W zW}CigRX-8sRF+jX5PgA#x8}1S?CJ?q9BwCFI~|e!0+5J&nX2xNea)TI+HH;qnZuM_ ziSG}@YxGQ0S>&>qzWXZOW82`^g`mERIb~wCJnDak+